Aufruf einer öffentlichen Methode auf windows-Dienst
Habe ich einen timer in einem windows-Dienst.NET C#). Ich muss in der Lage sein zu ändern die verstrichene Wert aus einem externen Programm. Wenn der timer gerade läuft, ich muss in der Lage sein, um Sie zu verkürzen die Zeit Wert aus einem externen Programm. Ich dachte, dass eine öffentliche Methode in der service, dass würde sich ändern, das timer-elapsed-Wert und den timer neu starten, kann aber ein externes Programm aufrufen einer öffentlichen Methode auf einem windows-Dienst?
InformationsquelleAutor Prabhu | 2009-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurz gesagt, es ist nicht möglich, direkt Funktionen aufrufen, die in einem anderen Prozess. Der Prozess, die die Funktion enthält, die Sie zugreifen möchten (in diesem Fall Ihre Windows-service) bereitstellen müssen, die es durch eine Art der IPC (inter-process communication). Welche Art von IPC, die Sie wählen, wird wahrscheinlich davon abhängen, wie Komplex die Kommunikation gerecht zu werden, und ob oder nicht der "Kunde" ist .NET-Anwendung.
Wenn sich Ihre Bedürfnisse sind einfach (z.B. nur die Einstellung einer timer-Wert), oder wenn der client nicht verwenden .NET, mithilfe von named pipes (oder TCP, wenn Sie brauchen, um auf den service zugreifen, von einer anderen physischen Maschine), ist vermutlich Ihre beste Wette. Named pipes und TCP geben Sie einen Stream, können Sie Nachrichten schreiben und Lesen, am anderen Ende.
Wenn Sie anzeigen müssen, der viele verschiedene Funktionen oder senden und empfangen von komplexen Datentypen, und wenn Sie mit .NETZ auf beiden Seiten .NET-Remoting oder WCF ist wahrscheinlich am besten. .NET Remoting ist einfacher, hat aber mehr Einschränkungen; WCF ist sehr flexibel, hat aber eine steilere Lernkurve.
InformationsquelleAutor Aaron
Ja, das ist möglich.
Möchten Sie vielleicht zu prüfen, erstellt eine NetNamedPipe Endpunkt auf Ihren Dienst und Steuern den Dienst über die Schnittstelle.
InformationsquelleAutor Scott P
Können Sie nicht an eine Methode in einer Windows-service-Prozess direkt, aber Sie können die Windows-Dienst-setzen Sie diese Funktion wie ein WCF-Dienst, zum Beispiel. Der Windows-Dienst wäre als ein service-host als auch. Das ist möglich und gar nicht kompliziert.
InformationsquelleAutor cdonner
Älteren (nicht WCF) - Dienste nutzen können .NET Remoting. Haben Sie einen Blick hier für einige Informationen darüber, wie, um loszulegen. Dies ist die pre-WCF Art der Kommunikation zwischen Anwendungen über Prozessgrenzen hinweg.
InformationsquelleAutor TLiebe