Wszyscy mówią, w jaki sposób .NET Remoting jest zastępowany przez WCF, ale zastanawiam się, jak dokładne jest to. Nie widziałem żadnego oficjalnego słowa, że Remoting jest przestarzały i wydaje mi się, że z pewnością istnieją scenariusze, w których Remoting ma więcej sensu niż WCF. Żaden z obiektów ani metod związanych z obsługą zdalną nie został uznany za przestarzały, nawet w wersji 4.0 platformy. Rozumiem również, że System.AddIn we frameworkach 3.5 i 4.0 używa Remotingu.
Czy ktoś ma jakieś oficjalne słowo, że jest inaczej?
W artykule Wybieranie opcji komunikacji w .NET (dla wersji 3.0, ponieważ jest to najnowsza wersja tego artykułu), stwierdza:
8 Komunikacja domeny między aplikacjami
Jeśli potrzebujesz obsługiwać komunikację między obiektami w różnych domenach aplikacji w ramach tego samego procesu, musisz korzystać z usług zdalnych .NET.
To oczywiście nie jest dokładne, ponieważ WCF z pewnością można wykorzystać do przekraczania granic domeny aplikacji, ale czy daje oficjalną rekomendację dla tego scenariusza?
Aktualizacja: Wysłałem Clemensowi Vastersowi (który był w zespole, który jest właścicielem Remotingu i WCF) to pytanie:
Clemens, rozumiem, że należysz do zespołu, który jest właścicielem zarówno usług zdalnych, jak i WCF, i mam kilka pytań, które moim zdaniem powinny znaleźć się w źródle.
Po pierwsze, mam pytanie, czy zdalny dostęp odchodzi. Konkretnie, mamy dość dużą aplikację, która intensywnie wykorzystuje usługi zdalne do komunikacji między domenami w trakcie procesu, i zastanawiałem się, czy to użycie zdalnej komunikacji jest uważane za „starsze”. Jeśli tak, czy AppDomain.CreateInstance i przyjaciele zostaną zastąpieni czymś innym?
Oto jego odpowiedź:
Usługi zdalne są częścią .Net Framework i jako takie nie znikają. COM był w systemie Windows od czasu Windows NT 3.5 / Windows 95 i nie zniknął i nie sądzę, żeby w najbliższym czasie zniknął.
To powiedziawszy, inwestycje w Remoting są bardzo minimalne. WCF jest następcą komunikacji zdalnej i zastępuje model COM / DCOM dla kodu zarządzanego.
W przypadku komunikacji między aplikacjami w procesie Komunikacja zdalna to natywny sposób komunikacji środowiska CLR. Jeśli widzisz problemy z wydajnością pompowania większych ilości danych lub bardzo wielu komunikatów w krótkim czasie, powinieneś poważnie przyjrzeć się WCF i NetNamedPipeBinding.
Odpowiedzi:
Nazwanie tego starszą technologią jest dokładniejszym opisem.
http://msdn.microsoft.com/en-us/library/72x4h507%28VS.85%29.aspx
Aktualizacja: WCF nie rozróżnia między / intra / process / inter / intra-appdomain. Jeśli używasz komunikacji z pojedynczym komputerem w programie WCF, używasz nazwanych potoków - użycie go powinno zapewnić dobrą wydajność w praktycznie wszystkich realistycznych scenariuszach.
Porównanie wydajności różnych technologii komunikacji rozproszonej znajduje się tutaj .
źródło
Tak. Usługi zdalne są przestarzałe ... i są oficjalne od firmy Microsoft. Oto link:
.NET Remoting
Pierwsza linia artykułu jest pogrubiona:
Myślałem, że to słowo jest „przestarzałe”, ale najwyraźniej nazywają je „dziedzictwem”
źródło
Jeśli lubisz migrować do .NET Core, i tak musisz znaleźć inne rozwiązanie dla Remotingu:
Źródło: https://docs.microsoft.com/en-us/dotnet/core/porting/libraries#remoting
źródło
Clemens Vasters, kierownik techniczny ds. Microsoft .NET Service Bus (to znaczy zarówno usługi zdalne, jak i WCF), mówi o WCF kontra zdalnej komunikacji w tym poście na forum . Podsumowując post, w końcu poleca WCF za pośrednictwem komunikacji zdalnej.
Nie jestem pewien, czy .NET 4.0 korzysta z komunikacji zdalnej wewnętrznie, ale możesz spróbować wysłać Clemensowi pytanie ... Jestem pewien, że zna odpowiedź.
źródło
Myślę, że teraz (2015) jest to całkiem jasne, nawet w przypadku domen obejmujących wiele aplikacji: https://msdn.microsoft.com/en-us/library/vstudio/ms180984(v=vs.100).aspx
Następnie należy użyć WCF również dla domen między aplikacjami.
źródło