2012-09-08 11 views
5

Creé un proyecto de servicio de Windows. Y si se crea un nuevo proyecto en el que obtener algo como esto:¿Debo usar solo un nuevo servicio() o más?

ServiceBase[] ServicesToRun; 
ServicesToRun = new ServiceBase[] 
{ 
    new Service1() 
}; 
ServiceBase.Run(ServicesToRun); 

y ahora tengo que añadir algunas funciones y temporizador para mi clase Service1() y entonces todo está bien.

Ahora vamos a decir, mi servicio debe hacer algunas cosas como: la lectura de algunos archivos, borrar algunas carpetas, comprobar las conexiones ...

Y todos ellos deben ejecutar asíncrono. ¿Qué es ahora mejor? Copiar toda la functiont en Servicio1() y no cambiar nada más, o para crear para cada "cosas" una nueva clase (Servicio1(), Servicio2(), ...) y añadirlos como

ServicesToRun = new ServiceBase[] 
{ 
    new Service1(), 
    new Service2() //not sure this will compile 
}; 

Justo preguntando. Quizás no entendí al 100% cómo funcionan los servicios ...

+0

Pregunta interesante. Me lo he preguntado, pero nunca lo intenté. Oh, ciertamente * compilar * - la pregunta realmente es: ¿funciona *? Dado que la API acepta una matriz, mi suposición predeterminada es "sí, eso funcionará bien". Pero ... No lo he probado. Por supuesto, dado que el servicio necesita comenzar un nuevo hilo de todos modos, puede usar una única instancia de servicio para iniciar 3 conjuntos de operaciones, –

+0

. ¿Vió esto? http://stackoverflow.com/questions/1688275/can-i-have-multiple-services-hosted-in-a-single-windows-executable - que explica cómo pero no el por qué. Realmente es una pregunta de diseño y depende de lo que estás haciendo. – ongle

Respuesta

0

Esto puede ser un poco demasiado general para la pregunta, pero un servicio de Windows debe realizar un solo o grupo de funciones relacionadas. En general, cuanto menos servicios, mejor, pero una vez que el servicio comience a hacer varias cosas, considere separarlos si:

  1. Requieren diferentes niveles de seguridad. Por ejemplo, si ciertas funciones necesitan acceso de administrador y otras no, considere dividirlas en diferentes servicios.
  2. Un usuario podría querer una característica en ejecución (es decir, servicio) y no la otra. Por ejemplo, cierta funcionalidad puede depender de un componente opcional o uno que puede no estar instalado.