2009-05-14 26 views

Respuesta

8

Por

"Llama a ese servicio"

Qué quiere decir, gestionar el servicio? Como en, Start, Stop, Restart, etc. Si es así, entonces la respuesta es sí. Hay un buen artículo en www.csharp-examples.net que le mostrará cómo usar la clase ServiceController.

Sin embargo, si quiere decir enviar mensajes a él, como si fuera un servicio web, entonces, la respuesta es, eso depende de cómo expone su servicio. Los Servicios de Windows pueden albergar servicios de WCF, de modo que sería una buena opción si desea exponer su servicio de Windows a clientes de Internet.

3

Algo de claridad ayudaría: también podría interpretar "llamar a ese servicio" como una especie de llamada a método remoto desde ASP.NET a su servicio, por ejemplo. para almacenar algún estado en su Servicio de Windows.

Alojar un punto final de servicio en el Servicio de Windows, p. usando Remoting, WCF o el simple servidor de socket TCP. Todo lo cual los clientes alojados en ASP.NET podrían invocar.

Existen muchos ejemplos de comunicación remota y WCF que hacen justamente eso: buscar alojamiento y una de esas tecnologías.

Algunos vinculación de MSDN para que diga:

Remoting

WCF

También debería leer sobre Windows Process Activation - usted puede ser capaz de salirse sin escribir un servicio separado.

1

Como una adición, para enviar un mensaje (realmente) simple, también ServiceController.ExecuteCommand(int command) podría ser utilizado. Con el uso de executecommand es muy fácil enviar un mensaje integer/enum como mensaje.

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

y myService parece:

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