2009-02-26 6 views
0

Ich habe eine Anwendung, die als Windows-Dienst und AC# -Bibliothek Assembly (.dll.) Erstellt wird. Um diesen Dienst zu verwalten und zu verwalten, möchte ich die Möglichkeit hinzufügen, eine Befehlszeile-Anwendung auszuführen, die das sagt das letzte Mal die archivierten Service-Dateien, das nächste Mal, wenn es geplant ist, den Status des letzten Laufs und den Speicherort einer Datei, die vom Service erstellt wurde.Greifen Sie über einen Windows-Dienst und eine Konsolenanwendung auf denselben Ausführungscode zu?

Was ist die beste Architektur zum Schreiben eines Service und einer Bibliothek, die Daten mit einer anderen Anwendung teilen können? Ich benutze .net 2.0.

Antwort

2

Die Art und Weise, in der die Kommunikation zwischen Prozessen in .net stattfindet, erfolgt über Remoting (auch wenn beide Prozesse auf demselben Computer ausgeführt werden). Andere Antworten haben Alternativen zur Kommunikation zwischen Prozessen vorgeschlagen, die kein Remoting erfordern würden.

1

Ich benutze WCF für das und erstellen eine Vertragsdefinition für die Befehle/Ereignisse, die ich unterstützen möchte.

+0

Ausgezeichnete Antwort geben zurück. Ich hätte erwähnen sollen, dass ich VS .net2.0 verwende. –

+0

Ja, und bearbeitet die Frage. – bzlm

1

Optionen, die in den Sinn, dass ich in der Vergangenheit angewendet haben:

  • Speichern Sie die Informationen in einer Datenbank (falls Sie eine zur Hand haben)
  • Implementieren eines „Statusmonitor“ -Typ Gewinde auf dem Dienst, der Client zu und Abfrage über TCP/IP usw.
+0

Warum also abstimmen - alle Ansätze, die funktionieren könnten. Meine Güte. Auf jeden Fall stimmen Sie eine Antwort ab, wenn es falsch ist, und erklären Sie, warum in einem Kommentar; aber ohne Rechtfertigung verletzt es nur das größere Wissen. –

+0

Es könnte ein Ninja Downvote gewesen sein. Es sieht so aus, als ob jeder, der diese Frage beantwortet hat, einen bekommen hat. Es war sicherlich nicht von mir. –

+0

Meine vorherige Firma hatte eine ähnliche Architektur für eine Service-/UI-Anwendung. Hat super funktioniert. –

1

ein ziemlich einfacher Ansatz verbinden kann, ist, dass die Informationen zu speichern, in einem lokalen config/t ext-Datei, auf die beide Apps zugreifen können. Oder sogar um es in einen Registrierungsschlüssel zu legen.

2

Die beste Architektur ist wahrscheinlich, um Ihren Dienst zu einem "Server" zu machen, der über seinen Status (und welche Informationen Sie wollen) berichten kann. Die Verwendung von WCF, wie es ocdecio vorgeschlagen hat, würde es ziemlich einfach machen.

1

+1 für nur den Service, die vorsehen, dass (und andere Daten), wenn er abgefragt wird (einfache tcp, RPC, Web-Service, oder was auch immer)

ich es ziemlich allgemein machen würde - wie

Query (einige Identifier) ​​ mit einer Antwort als eine Zeichenfolge und einen Rückgabewert oder einen anderen Indikator, dass der Dienst nicht weiß, was Sie sprechen, können die Informationen nicht erhalten, oder die Info

Verwandte Themen