Alle sagen, wie .NET Remoting durch WCF ersetzt wird, aber ich frage mich, wie genau das ist. Ich habe kein offizielles Wort darüber gesehen, dass Remoting veraltet ist, und es scheint mir, dass es sicherlich Szenarien gibt, in denen Remoting sinnvoller ist als WCF. Selbst in Version 4.0 des Frameworks wurde keines der Remoting-bezogenen Objekte oder Methoden veraltet. Nach meinem Verständnis verwendet System.AddIn in den Frameworks 3.5 und 4.0 Remoting.
Hat jemand ein offizielles gegenteiliges Wort?
In dem Artikel Auswählen von Kommunikationsoptionen in .NET (für 3.0, da dies die neueste Version dieses Artikels ist) heißt es:
8 Anwendungsübergreifende Domänenkommunikation
Wenn Sie die Kommunikation zwischen Objekten in verschiedenen Anwendungsdomänen innerhalb desselben Prozesses unterstützen müssen, müssen Sie .NET-Remoting verwenden.
Nun, das ist natürlich nicht korrekt, da WCF sicherlich verwendet werden kann, um Appdomain-Grenzen zu überschreiten, aber gibt es die offizielle Empfehlung für dieses Szenario?
Update: Ich habe Clemens Vasters (der zu dem Team gehört, das Remoting und WCF besitzt) diese Frage geschickt:
Clemens, ich verstehe, dass Sie zu dem Team gehören, das sowohl Remoting als auch wcf besitzt, und ich habe ein paar Fragen, für die ich glaube, dass ich zur Quelle gehen muss.
Zunächst habe ich eine Frage, ob das Remoting nicht mehr funktioniert. Insbesondere haben wir eine ziemlich große Anwendung, die Remoting in großem Umfang für die prozessübergreifende Kommunikation zwischen Prozessen verwendet, und ich habe mich gefragt, ob diese Remoting-Verwendung als "Legacy" betrachtet wird. Wenn ja, werden AppDomain.CreateInstance und Freunde durch etwas anderes ersetzt?
Dies ist seine Antwort:
Remoting ist Teil des .Net Frameworks und wird daher nicht entfernt. COM ist seit Windows NT 3.5 / Windows 95 in Windows und ist nicht verschwunden, und ich sehe auch nicht, dass dies bald verschwindet.
Das heißt, es gibt nur sehr minimale Entwicklungsinvestitionen in Remoting. WCF ist der Nachfolger von Remoting und ersetzt COM / DCOM für verwalteten Code.
Für die prozessübergreifende, domänenübergreifende Kommunikation Remoting ist die native Kommunikationsmethode der CLR. Wenn Sie Leistungsprobleme feststellen, die in kurzer Zeit größere Datenmengen oder sehr viele Nachrichten pumpen, sollten Sie sich WCF und NetNamedPipeBinding genauer ansehen.
Antworten:
Die Bezeichnung "Legacy-Technologie" ist eine genauere Beschreibung.
http://msdn.microsoft.com/en-us/library/72x4h507%28VS.85%29.aspx
Update: WCF unterscheidet nicht zwischen inter / intra / process / inter / intra-appdomain. Wenn Sie die Einzelmaschinenkommunikation in WCF verwenden, verwenden Sie Named Pipes. Die Verwendung dieser Kommunikation sollte in praktisch allen realistischen Szenarien eine gute Leistung bringen.
Einen Leistungsvergleich verschiedener verteilter Kommunikationstechnologien finden Sie hier .
quelle
Ja. Remoting ist veraltet ... und offiziell von Microsoft. Hier ist der Link:
.NET Remoting
In der ersten Zeile des Artikels steht fett gedruckt:
Ich dachte, die Redewendung sei "veraltet", aber anscheinend wird sie als "Vermächtnis" bezeichnet.
quelle
Wenn Sie auf .NET Core migrieren möchten, müssen Sie trotzdem eine andere Lösung für Remoting finden:
Quelle: https://docs.microsoft.com/en-us/dotnet/core/porting/libraries#remoting
quelle
Clemens Vasters, der technische Leiter des Microsoft .NET Service Bus (dh sowohl Remoting als auch WCF), spricht in diesem Forumsbeitrag über WCF vs. Remoting . Um den Beitrag zusammenzufassen, empfiehlt er WCF gegenüber Remoting.
Ich bin nicht sicher, ob .NET 4.0 intern Remoting verwendet, aber Sie könnten versuchen, Clemens die Frage zu senden ... Ich bin sicher, er kennt die Antwort.
quelle
Ich denke, dass es jetzt (2015) auch für anwendungsübergreifende Domänen ziemlich klar ist: https://msdn.microsoft.com/en-us/library/vstudio/ms180984(v=vs.100).aspx
Dann sollte WCF auch für anwendungsübergreifende Domänen verwendet werden.
quelle