Jaki jest najlepszy wybór for.NET komunikacja między procesami? [zamknięte]
chcesz poprawić to pytanie? Zaktualizuj pytanie, aby mogło być odpowiedź z faktami i cytatami przez edytując ten post .
Zamknięte 6 lat temu .
Popraw to pytanieCzy powinienem używać nazwanych rur lub. NET Remoting, aby komunikować się z uruchomionym procesem na moim komputerze?
8 answers
WCF to najlepszy wybór. Obsługuje wiele różnych mechanizmów transportu (w tym nazwane rury) i mogą być całkowicie skonfigurowane. Gorąco polecam zajrzeć do WCF.
Oto blog, który robi WCF vs Remoting performance comparison .
Cytat z bloga:
WCF i. NET Remoting są naprawdę porównywalne pod względem wydajności. Różnice są tak małe (pomiar opóźnienie klienta), że nie ma znaczenia, który z nich jest nieco szybszy. WCF ma jednak znacznie lepszą przepustowość serwera niż Remoting. NET. Gdybym miał rozpocząć zupełnie nowy projekt, wybrałbym WCF. W każdym razie WCF robi znacznie więcej niż Remoting i za wszystkie te funkcje uwielbiam go.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-14 17:31:32
Jeśli jest na jednej maszynie, Named Pipes daje lepszą wydajność i może być zaimplementowany z remoting infrastructure jak również WCF. Możesz też użyć bezpośrednio System. IO. Pipes.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-07 14:53:06
Jeśli masz na myśli komunikację między procesami, używałem do tej pory Remoting. Net bez żadnego problemu. Jeśli oba procesy są na tej samej maszynie, komunikacja jest dość szybka.
Nazwane rury są zdecydowanie bardziej wydajne, ale wymagają zaprojektowania przynajmniej podstawowego protokołu aplikacji, co może nie być wykonalne. Remoting pozwala z łatwością wywoływać metody zdalne .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-14 17:32:01
Remoting w.NET Framework 2.0 dostarcza kanał IPC do komunikacji między procesami wewnątrz tej samej maszyny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 16:48:51
Jeśli używasz. NET Framework 3.0 lub nowszego, użyłbym WCF. Korzystając z WCF, możesz użyć różnych wiązań depeneding na kompromis między performance/interop / etc. tego potrzebujesz.
Jeśli wydajność nie jest krytyczna i potrzebujesz interakcji z innymi technologiami usług internetowych, będziesz chciał użyć wiązania WS-HTTP. W Twoim przypadku możesz użyć WCF z wiązaniem net-tcp lub wiązaniem nazwanym-pipe. Jedno i drugie powinno zadziałać.
Moim osobistym zdaniem podejście WCF jest bardziej czysty, jak można robić usługi oparte na kontraktach i skupić się na wiadomościach, a nie obiektach (uogólniam tutaj na podstawie domyślnych modeli programowania WCF/. NET Remoting). Nie lubię wysyłać obiektów przez przewód, ponieważ wiele informacji semantycznych ginie lub nie jest jasne. Kiedy wszystko, co robisz, to wysyłanie wiadomości, tak jak w WCF, łatwiej jest oddzielić swoje obawy między komunikacją a klasami / infrastrukturą, z której składa się pojedynczy węzeł.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 18:52:36
WCF zapewnia również elastyczność. Po prostu zmieniając konfigurację (Wiązanie) możesz mieć tę samą usługę na innej maszynie zamiast IPC na tej samej maszynie. Dlatego Twój kod pozostaje elastyczny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-06 10:02:26
. NET remoting nie jest protokołem samym w sobie. Pozwala wybrać, którego protocal użyć: SOAP, named-pipes, itp.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 16:09:00
. NET remoting jest wbudowany w. NET do wewnętrznej komunikacji procesu. Jeśli tego użyjesz, będą nadal wspierać i ewentualnie ulepszać je w przyszłych wersjach. Nazwane rury nie daje obietnicy ulepszeń w przyszłych wersjach. Net
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 16:07:11