it-swarm-eu.dev

Was ist die beste Wahl für die prozessübergreifende Kommunikation in .NET?

Sollte ich Named Pipes oder .NET Remoting verwenden, um mit einem laufenden Prozess auf meinem Computer zu kommunizieren?

81
mrbradleyt

WCF ist die beste Wahl. Es unterstützt eine Reihe von verschiedenen Transportmechanismen ( einschließlichbenanntPipes ) und kann vollständig konfigurationsgesteuert werden. Ich kann Ihnen nur empfehlen, sich WCF anzuschauen.

Hier ist ein Blog, der einen WCF vs Remoting-Leistungsvergleich macht.

Ein Zitat aus dem Blog:

Die Leistung von WCF und .NET Remoting ist wirklich vergleichbar. Die Unterschiede sind so gering (Messung der Client-Latenz), dass es keine Rolle spielt, welcher ein bisschen schneller ist. WCF bietet jedoch einen viel besseren Server-Durchsatz als .NET Remoting. Wenn ich ein komplett neues Projekt starten würde, würde ich die WCF wählen. Auf jeden Fall leistet die WCF viel mehr als Remoting, und für all diese Funktionen bin ich begeistert.

MSDN-Abschnitt für WCF

58
Eric Schoonover

Wenn es sich um eine einzelne Maschine handelt, bietet Named Pipes eine bessere Leistung und kann sowohl mit Remoting-Infrastruktur als auch mit WCF implementiert werden. Oder Sie können einfach direkt System.IO.Pipes verwenden.

15
Mark Cidade

Wenn Sie prozessübergreifende Kommunikation meinen, habe ich .NET Remoting bisher ohne Probleme verwendet. Befinden sich die beiden Prozesse auf demselben Computer, ist die Kommunikation recht schnell.

Named Pipes sind definitiv effizienter, erfordern jedoch das Design mindestens eines grundlegenden Anwendungsprotokolls, das möglicherweise nicht durchführbar ist. Mit Remoting können Sie problemlos Remotemethoden aufrufen.

5
Dario Solera

Wenn Sie .NET Framework 3.0 oder höher verwenden, würde ich WCF verwenden. Mit WCF können Sie verschiedene Bindungen verwenden, abhängig vom Kompromiss zwischen performance/interop/etc. das brauchst du.

Wenn die Leistung nicht kritisch ist und Sie eine Interaktion mit anderen Webdiensttechnologien benötigen, sollten Sie die WS-HTTP-Bindung verwenden. Für Ihren Fall können Sie WCF entweder mit einer net-tcp-Bindung oder einer Named-Pipe-Bindung verwenden. Entweder sollte funktionieren.

Mein persönlicher Standpunkt ist, dass der WCF-Ansatz sauberer ist, da Sie vertragsgesteuerte Dienste ausführen und sich auf Nachrichten und nicht auf Objekte konzentrieren können. Ich mag es nicht, Objekte über die Leitung zu senden, weil viele semantische Informationen verloren gehen oder nicht klar sind. Wenn Sie lediglich eine Nachricht senden, wie Sie es mit WCF tun, ist es einfacher, Ihre Bedenken zwischen der Kommunikation und den Klassen/Infrastrukturen zu trennen, aus denen ein einzelner Knoten besteht.

3
Jason Olson

Remoting in .NET Framework 2.0 bietet IPC-Kanal für die Kommunikation zwischen Prozessen auf demselben Computer.

3
icelava

WCF bietet auch Flexibilität. Durch einfaches Ändern einer Konfiguration (Bindung) können Sie denselben Dienst auf einem anderen Computer anstelle von IPC auf demselben Computer ausführen. Daher bleibt Ihr Code flexibel.

2
Vikram I Code

.Net-Remoting ist kein Protokoll für sich. Hier können Sie auswählen, welches Protokoll verwendet werden soll: SOAP, Named Pipes usw.

1
Joel Coehoorn

.net-Remoting ist in .net integriert, um die interne Prozesskommunikation durchzuführen. Wenn Sie das verwenden, werden sie es weiterhin unterstützen und möglicherweise in zukünftigen Versionen verbessern. Named Pipes versprechen Ihnen keine Verbesserungen in zukünftigen Versionen von .net

0
kemiller2002