2009-05-14 14 views

risposta

8

Con

"Call che il servizio"

vuoi dire, gestire il servizio? Come in, Start, Stop, Restart ecc.? Se è così, allora la risposta è sì. C'è un buon articolo su www.csharp-examples.net che ti mostrerà come utilizzare la classe ServiceController.

Se tuttavia si intende inviare messaggi ad esso, come se si trattasse di un servizio Web, la risposta è, a seconda di come si espone il servizio. I servizi Windows possono ospitare i servizi WCF, quindi sarebbe una buona opzione se si desidera esporre il servizio Windows ai client Internet.

3

Un po 'di chiarezza potrebbe aiutare - si potrebbe anche interpretare "chiama quel servizio" come una sorta di chiamata di metodo remota da ASP.NET al proprio servizio - ad es. per memorizzare alcuni stati nel tuo servizio di Windows.

Ospitare un endpoint del servizio nel servizio Windows ad es. utilizzando Remoting, WCF o un semplice server socket TCP. Tutto ciò potrebbe essere chiamato dai client ospitati in ASP.NET.

Ci sono un sacco di servizi remoti e di WCF là fuori che fanno proprio questo: cercare l'hosting e una di quelle tecnologie.

Alcuni MSDN linkage per leggere:

Remoting

WCF

Si dovrebbe anche leggere su Windows Process Activation - si può essere in grado di uscire senza scrivere un servizio separato.

1

Come aggiunta, per l'invio di un messaggio (davvero) semplice, è possibile utilizzare anche ServiceController.ExecuteCommand(int command) . Con l'utilizzo di executecommand è davvero facile inviare un messaggio come integer/enum.

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

e myService assomiglia:

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