Jaki jest najlepszy wybór dla komunikacji między procesami .NET? [Zamknięte]


83

Czy powinienem używać nazwanych potoków lub .NET Remoting do komunikacji z działającym procesem na moim komputerze?


1
Wow, po prostu zadałem dokładnie to samo pytanie ... stackoverflow.com/questions/84860/
Kris Erickson

Odpowiedzi:


58

WCF to najlepszy wybór. Obsługuje wiele różnych mechanizmów transportowych ( w tym Named Pipes ) i może być całkowicie konfiguracja napędzanych. Gorąco polecam przyjrzenie się WCF.

Oto blog, który porównuje wydajność WCF vs Remoting .

Cytat z bloga:

Usługi WCF i .NET Remoting są naprawdę porównywalne pod względem wydajności. Różnice są tak małe (pomiar opóźnienia klienta), że nie ma znaczenia, który z nich jest nieco szybszy. Jednak usługa WCF ma znacznie lepszą przepustowość serwera niż usługa .NET Remoting. Gdybym miał rozpocząć zupełnie nowy projekt, wybrałbym WCF. W każdym razie WCF robi znacznie więcej niż usługi zdalne i dla wszystkich tych funkcji uwielbiam to.

Sekcja MSDN dotycząca WCF


1
Dalsze dowody przemawiające za zdalnym działaniem. Od kogoś z zespołu usług zdalnych / WCF firmy Microsoft: „Inwestycja w rozwój usług zdalnych jest bardzo minimalna. WCF jest następcą usług zdalnych”. Stąd stackoverflow.com/questions/1294494/…
MarkJ


5

Jeśli masz na myśli komunikację między procesami, to do tej pory bez problemu korzystałem z .NET Remoting. Jeśli dwa procesy znajdują się na tym samym komputerze, komunikacja jest dość szybka.

Nazwane potoki są zdecydowanie bardziej wydajne, ale wymagają zaprojektowania przynajmniej podstawowego protokołu aplikacji, co może być niewykonalne. Usługi zdalne umożliwiają łatwe wywoływanie metod zdalnych.


3
Funkcja WCF przez nazwane potoki również na to pozwala. Możesz po prostu użyć tego samego montażu kontraktów w obu procesach.
Kent Boogaart

3

Usługi zdalne w .NET Framework 2.0 zapewniają kanał IPC do komunikacji między procesami w ramach tej samej maszyny.


3

Jeśli używasz .NET Framework 3.0 lub nowszego, użyłbym WCF. Korzystając z WCF, możesz używać różnych powiązań w zależności od kompromisu między wydajnością / międzyoperacjami / itp. że potrzebujesz.

Jeśli wydajność nie jest krytyczna i potrzebujesz współdziałania z innymi technologiami usług sieci Web, będziesz chciał użyć powiązania WS-HTTP. W Twoim przypadku możesz użyć WCF z powiązaniem net-tcp lub powiązaniem potoku nazwanego. Albo powinno działać.

Osobiście uważam, że podejście WCF jest bardziej przejrzyste, ponieważ można wykonywać usługi oparte na kontraktach i skupiać się na komunikatach, a nie obiektach (robię tutaj uogólnienie w oparciu o domyślne modele programowania WCF / .NET Remoting). Nie lubię przesyłać obiektów przez kabel, ponieważ wiele informacji semantycznych zostaje utraconych lub nie jest jasnych. Gdy wszystko, co robisz, to wysyłanie wiadomości, tak jak w przypadku programu WCF, łatwiej jest oddzielić swoje obawy między komunikacją a klasami / infrastrukturą, z których składa się pojedynczy węzeł.



1

Usługi zdalne w sieci nie są protokołem samym w sobie. Pozwala wybrać protokół do użycia: SOAP, nazwane potoki itp.


0

Usługa zdalna .net jest wbudowana w .net w celu wykonywania wewnętrznej komunikacji procesu. Jeśli tego użyjesz, będą nadal wspierać i prawdopodobnie ulepszać to w przyszłych wersjach. Nazwane potoki nie dają obietnicy ulepszeń w przyszłych wersjach .net


2
Mało prawdopodobne, że poprawią obsługę zdalną. Od kogoś z zespołu usług zdalnych / WCF: „W przypadku usług zdalnych inwestycja w programowanie jest bardzo niewielka. WCF jest następcą usług zdalnych”. Stąd stackoverflow.com/questions/1294494/…
MarkJ
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.