IPC-Mechanismen in C# – Verwendung und Best Practices
Frage
Ich habe vor einiger Zeit IPC im Win32-Code verwendet.[Kritische Abschnitte, Ereignisse und Signalzeichen]
Wie ist die Szene in der .NET-Umgebung?Gibt es ein Tutorial, das alle verfügbaren Optionen erklärt und erklärt, wann und warum sie zu verwenden sind?
Lösung
Die neuesten Microsoft-Sachen in der IPC ist Windows Communication Foundation . Eigentlich gibt es nichts Neues in der unteren Ebene (tcp, upd, Named Pipes usw.), aber WCF vereinfacht IPC Entwicklung stark.
Nützliche Ressource:
- Interprocess Communication mit WCF auf Dr. Dobb Portal
- WCF Kommunikationsoptionen in .NET Framework 3.5
und natürlich MSDN auf WCF
Andere Tipps
Abgesehen von der offensichtlichen (WCF), wird die Bindung ein ZeroMQ für C # / CLR was ziemlich gut ist:
http://www.zeromq.org/bindings:clr
Ist Message-oriented IPC, pub / sub und verschiedene andere Strategien mit viel weniger Code und Konfiguration als WCF.
Es ist auch mindestens eine Größenordnung schneller als alles andere und weniger Latenz, wenn Sie mit niedriger Latenz Comms benötigen.
Mit Hinsicht auf Semaphore, Schlösser, Mutexe etc. Wenn Sie teilen, indem sie die Kommunikation nicht durch Austausch zu kommunizieren, werden Sie eine ganze Menge weniger Aufwand haben als das traditionelle Paradigma.
Ich neige dazu, Named Pipes oder Unix-Sockets zu verwenden (je nachdem, ob ich MS.NET oder Mono bin Targeting - Ich habe eine Klasse, die es weg abstrahiert), da es einfach zu bedienen, tragbar und ermöglicht es mir leicht zu interagieren mit nicht verwalteten Code. Das heißt, wenn Sie nur mit verwaltetem Code zu tun, gehen Sie mit WCF oder Remoting -. Letztere, wenn Sie Mono Unterstützung benötigen, da ihre WCF-Unterstützung ist einfach noch nicht da
würde ich empfehlen, Speicher mit Mapped-Dateien, wenn Sie auf der Maschine Domain über das Netzwerk keine Kommunikation verwenden müssen. Siehe den folgenden Link.
http: // techmikael.blogspot.com/2010/02/blazing-fast-ipc-in-net-4-wcf-vs.html
Es gibt auch .NET Remoting, die ich ziemlich cool gefunden, aber ich denke, sie es jetzt sind obsoleting, dass sie WCF.
Es klingt, als ob Sie in Synchronisierungstechniken interessiert sind, anstatt Kommunikation. Wenn ja, könnten Sie anfangen hier , oder vielleicht ist dies mehr prägnanten Überblick .