2009-05-14 14 views

Antwort

8

von

"Rufen Sie das Service"

meinen Sie, den Dienst verwalten? Wie in, Start, Stop, Restart usw.? Wenn ja, dann ist die Antwort ja. Es gibt einen guten Artikel unter www.csharp-examples.net, der Ihnen zeigt, wie Sie die ServiceController-Klasse verwenden.

Wenn Sie jedoch Nachrichten an ihn senden möchten, als ob es sich um einen Webdienst handelt, hängt die Antwort davon ab, wie Sie Ihren Dienst bereitstellen. Windows Services können WCF-Dienste hosten. Das wäre also eine gute Option, wenn Sie Ihren Windows-Dienst für Internet-Clients bereitstellen möchten.

3

Einige Klarheit würde helfen - Sie könnten auch "Call that Service" als eine Art Remote-Methode Anruf von ASP.NET zu Ihrem Dienst zu interpretieren - z. um einen Zustand in Ihrem Windows-Dienst zu speichern.

Host eines Dienstendpunkts im Windows-Dienst, z. Verwenden von Remoting, WCF oder einfachem TCP-Socket-Server. All dies könnte von Clients aufgerufen werden, die in ASP.NET gehostet werden.

Es gibt viele Remoting- und WCF-Beispiele, die genau das tun - suchen Sie nach Hosting und einer dieser Technologien.

Einige MSDN Verknüpfung zu lesen:

Remoting

WCF

Sie sollten auch über Windows Process Activation lesen - Sie können in der Lage sein, weg zu bekommen, ohne einen separaten Service zu schreiben.

1

Als Zusatz könnte zum Senden einer (wirklich) einfachen Nachricht auch ServiceController.ExecuteCommand(int command) verwendet werden. Mit der Verwendung von executecommand ist es sehr einfach, eine integer/enum als Nachricht zu senden.

var myService = new ServiceController("SimpleService"); 
myService.ExecuteCommand(128); 
myService.ExecuteCommand((int)SimpleServiceCustomCommands.ScanFiles); 

und myService wie folgt aussieht:

public class myService : ServiceBase 
{ 
    ... 
    protected override void OnCustomCommand(int command) 
    { 
    //executes logic