Frage

Ich brauche eine Möglichkeit, Daten zwischen einem Verfahren auszutauschen und einem Windows-Dienst. Der Prozess (Windows Forms-Anwendung, Konsole-Anwendung, in der Zukunft auch eine Web-Lösung) muss anweisen und die Interaktion mit dem Windows-Dienst. Ich möchte wissen, welchen Weg das Beste ist, dies zu accompplish. Ich werde die Lösung in C # schreiben, .NET Framework Version keine Rolle spielt. In der Vergangenheit habe ich Remoting (Activator), WCF-Schnittstelle mit Contracts, Inter-Prozess Exchange-IPC und einige Named Pipe-Implementierung verwendet. Was ist Ihre Erfahrung? Andere Möglichkeiten?

War es hilfreich?

Lösung

Ich würde WCF wählen. Es ist sehr modern und wahrscheinlich beste Ansatz zur Zeit unterstützt. Es „ersetzt“ ältere Technologien in den meisten Szenarien. Nettes Feature des WCF ist, dass, wenn Sie Ihren Dienst zu anderem Protokoll verschieben müssen Sie das einfach in der Konfiguration tun.

Wenn Sie erwarten, dass Windows-Dienst wird auf der gleichen Maschine laufen immer wie andere Anwendung, die Sie WCF mit netNamedBinding verwenden können. Wenn Sie Ihren Dienst zu anderer Maschine zu bewegen, müssen Sie Konfiguration ändern (wahrscheinlich zu netTcpBinding), weil Named Pipes in WCF nur auf IPC beschränkt ist.

Andere Tipps

Meine bisherigen Erfahrungen sind seit jeher über eine IPCChannel, vor allem, weil der einzige Code, den ich je hatte, dass beteiligt sein tut jede Form der Interprozesskommunikation. Es ist mir nie irgendwelche Probleme verursacht, und der Code arbeitet weg ganz fröhlich wie ich geben.

Die einzige wirkliche Antwort auf diese Frage ist, je nachdem, was Sie am bequemsten mit.

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