3 Stimmen

Wie kommuniziert man innerhalb einer Anwendung in .NET?

Was ist der beste Weg, um Daten von einem Windows Forms app (ein Office-Plugin) zu einem anderen (exe in C# geschrieben) in C# übergeben?

7voto

bryanbcook Punkte 15032

Ich wage mal die Behauptung, dass Sie wahrscheinlich wollen, dass die Office-Anwendung nach Hause telefonieren zu Ihrer Exe? In diesem Zusammenhang ist die "exe" der Server und die Office-Anwendung der Client.

Wenn Sie .NET 3.0 verwenden, ist WCF wahrscheinlich Ihre beste Wahl. Ich würde die Lösung in drei Teile gliedern:

  1. "Gemeinsame Verträge". Dies sind Schnittstellen, die Ihre Dienste beschreiben. Wenn Sie benutzerdefinierte Datenobjekte haben, die zwischen den Anwendungen weitergegeben werden sollen, sollten diese ebenfalls in dieser Baugruppe definiert werden. Diese Baugruppe wird von Client und Server gemeinsam genutzt. Siehe " Gestaltung von Dienstleistungsverträgen " für weitere Informationen.
  2. "Dienst". Diese Assembly ist Ihre "exe", die auf die Verträge verweist und die Klassen auf der Grundlage Ihrer Serviceverträge definiert. Ihre Anwendung wird auch einen ServiceClient für Ihren Dienst hosten. In der Konfigurationsdatei für diese Anwendung wird festgelegt, wie Ihr ServiceClient dem Client zur Verfügung gestellt wird (als Webservice, tcp, usw.). Siehe " Implementierung von Serviceverträgen " für weitere Informationen.
  3. "Kunde". Ihr Plugin verweist auf die Baugruppe "Shared Contracts" und enthält Service-Clients, die auf den Verträgen basieren. Der Client kann mit dem Tool svcutil.exe automatisch generiert werden.

Sowohl die "exe" als auch das "Plugin" benötigen Konfigurationsdateien, in denen die Bindungen definiert sind.

Wenn Sie Daten zwischen Client und Server übertragen wollen, erstellt Ihr Client ein Objekt aus der Baugruppe "Shared Contracts" und übergibt es an den Service-Client. Die Konfigurationsdatei des Clients findet heraus, wohin die Daten zu senden sind.

Für eine schrittweise Anleitung zur Erstellung eines einfachen WCF-Dienstes, siehe dieses Tutorial .

2voto

Jawohl. WCF ist der richtige Weg. Ich empfehle, iDesign.net zu besuchen, um die Klasse InProcFactory zu verwenden. Sie können Ihre Office-Klasse in einen Dienst umwandeln und Ihre andere Anwendung, die einen Dienst hostet, aufrufen. Der andere Dienst kann dann zurück in die Office-basierten Dienst aufrufen.

Sie können einen IPC-Endpunkt verwenden, der die Kommunikation beschleunigt.

-Scott

1voto

Aaron Weiker Punkte 2453

WCF ist eine der einfachsten Möglichkeiten, dies zu tun. Sie können in jeder Anwendung einen Dienstendpunkt registrieren, oder wenn eine Anwendung der Dienst und eine andere der Client ist, können Sie nur einen einzigen Diensthost verwenden.

Sehen Sie sich die Anleitungen für die ersten Schritte an.

1voto

Ty. Punkte 2200

Es gibt zahlreiche Möglichkeiten, dies zu erreichen. Ich habe in der Vergangenheit benannte Leitungen verwendet. Unterstützung für benannte Rohre sind auch jetzt in .NET (wie pro 3.0?) gebaut, so dass es ziemlich geradlinig ist.

1voto

Steven A. Lowe Punkte 59247

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X