Frage

Soll ich Named Pipes verwenden oder .NET Remoting mit einem laufenden Prozess auf meinem Rechner zu kommunizieren?

War es hilfreich?

Lösung

WCF ist die beste Wahl. Es unterstützt eine Reihe von verschiedenen Transportmechanismen (< a href = "http://blogs.charteris.com/blogs/chrisdi/archive/2008/05/19/exploring-the-wcf-named-pipe-binding-part-1.aspx" rel = "noreferrer"> einschließlich Named WCF vs Remoting-Performance-Vergleich .

Ein Zitat aus dem Blog:

  

Die WCF und .NET Remoting sind wirklich vergleichbar in der Leistung. Die Unterschiede sind so klein (Mess Client Latenz), dass es keine Rolle spielt, welche ein bisschen schneller ist. WCF hat allerdings viel besser Server Durchsatz als .NET Remoting. Wenn ich ganz neues Projekt beginnen würde würde ich wählte die WCF. Wie auch immer die WCF tut viel mehr als Remoting- und für all jene Funktionen, die ich liebe es.

MSDN Abschnitt für WCF

Andere Tipps

Wenn es auf einer einzigen Maschine ist, Named Pipes gibt Ihnen eine bessere Leistung und kann mit dem Remote umgesetzt werden Infrastruktur sowie WCF. Oder Sie können einfach direkt -System verwenden .IO.Pipes .

Wenn Sie die Kommunikation zwischen Prozessen bedeuten, benutzte ich .NET Remoting ohne Probleme so weit. Wenn die beiden Prozesse auf der gleichen Maschine sind, ist die Kommunikation sehr schnell.

Named Pipes sind auf jeden Fall effizienter, aber sie erfordern die Gestaltung von mindestens einem Basisanwendungsprotokoll, das nicht machbar sein könnte. Remoting ermöglicht es Ihnen, Remote-Methoden mit Leichtigkeit aufzurufen.

Remoting in NET Framework 2.0 stellt den IPC Kanal für Inter-Prozess-Kommunikation innerhalb der gleichen Maschine.

Wenn Sie das .NET Framework 3.0 oder höher verwenden, würde ich WCF verwenden. Mit WCF können Sie verschiedene Bindungen verwenden depeneding auf den Kompromiss zwischen Leistung / Interop / etc. das brauchst du.

Wenn die Leistung nicht kritisch ist, und Sie müssen Interop mit anderen Web-Service-Technologien, werden Sie die WS-HTTP verwenden, verbindlich. Für Ihren Fall können Sie mit WCF verwenden entweder ein net-TCP-Bindung oder ein Named-Pipe-Bindung. Entweder sollte funktionieren.

Meine persönliche Meinung ist, dass die WCF Ansatz mehr sauber ist, wie Sie Contract-Driven Services und konzentrieren sich auf Nachrichten tun, keine Gegenstände (Ich mache eine Verallgemeinerung hier auf der Grundlage der Standardprogrammiermodelle von WCF / .NET Remoting) . Ich weiß nicht wie Objekte über den Draht zu senden, weil eine Menge von semantischen Informationen geht verloren oder ist nicht klar. Wenn alles, was Sie tun, ist eine Nachricht zu senden, wie Sie mit WCF sind, wird es leichter, Ihre Anliegen zwischen Kommunikation zu trennen und die Klassen / Infrastruktur, die ein einzelner Knoten zusammengesetzt ist.

WCF bietet auch Flexibilität. Mit nur einige Config zu ändern (Bindung) können Sie den gleichen Dienst auf einem anderen Rechner anstelle von IPC auf derselben Maschine. Deshalb kann Ihr Code bleibt flexibel.

.NET Remoting ist kein Protokoll an und für sich. Damit können Sie wählen, welche zu verwenden protocal. SOAP, Named-Rohre, usw.

.net remoting in .net gebaut innere Prozesskommunikation zu tun. Wenn Sie diese verwenden, werden sie auch weiterhin unterstützen und möglicherweise in zukünftigen Versionen zu verbessern. Named Pipes nicht gibt Ihnen das Versprechen von Verbesserungen in zukünftigen Versionen von .net

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top