2009-01-14 10 views
18

Voy a desarrollar una aplicación que procesará datos en línea (a través del socket) y no necesita ninguna interacción del usuario.¿Cuál es el beneficio de desarrollar la aplicación como un servicio de Windows?

Estoy pensando en una aplicación de consola simple, pero ¿qué pasa con el servicio de Windows proporciona un beneficio adicional? (Sé que las ventanas de servicio no requiere usuario conectado para ejecutar el servicio pero estoy preguntando por beneficio extra)

Respuesta

17

En la parte superior de mi cabeza:

  • Se puede controlar el usuario (y los derechos asociados con esta cuenta de usuario) que inicia el proceso
  • un proceso Iniciado automáticamente significa que el escritorio debe estar encendido, no registrado por el usuario, para que se ejecute el servicio
  • se puede definir una política de falla (intente reiniciar n veces ejecutar un programa específico si falla)
  • a dependenc Y se puede definir (si dependen de otros Sevicios)
  • puede envolver su alforja en un invisible windows
  • fácil que es empezar/detener/reiniciar la secuencia de comandos (net start <scriptname>)
2

De hecho, lo que realmente depende del uso de su aplicación, creo.

Por ejemplo, si solo necesita ejecutar su procesamiento en un momento específico, el uso de la línea de comando puede ser suficiente.

El servicio de Windows será realmente interesante si su proceso necesita ejecutarse de forma continua y silenciosa (sin interacción del usuario).

También puede considerar la programación de tareas en Windows. Básicamente, ejecutará su aplicación (a través de un archivo .bat por ejemplo) en momentos específicos. Puede ser útil si su aplicación necesita ejecutarse todos los días a las 02:00, por ejemplo ... En "Panel de control", tiene la opción "Tareas programadas". A continuación, se hace clic en "Agregar tarea programada", y siga el asistente ...

4
  1. Puede gestionar un servicio de otra máquina (arranque/parada)
  2. Como los servicios de escribir en el caso de que ingrese también puede supervisar el servicio de otra máquina (aunque nada hace que deje de hacerlo desde una aplicación regular)
  3. Nadie tiene que haber iniciado sesión en el servicio para ejecutar
6

no puedo añadir nada a la lista de VonC pero Yo agregaría que si estás usando las herramientas usuales de Microsoft (VS & .net) Es fácil hacer ambas cosas.

Creo una biblioteca de clases que contiene toda la lógica de mi aplicación y una clase MyServer que tiene los métodos .Start() y .Stop(). A continuación, puede crear una aplicación de consola y una aplicación de servicio winservice que hagan referencia a esto. P.ej. la aplicación de consola crea un nuevo MyServer, llama a Inicio, espera a que se presione una tecla y llama a Detener.

Utilizo la aplicación de la consola durante el desarrollo y el servicio de Windows para la implementación.

+0

Eso es genial, pero lo voy a desarrollar usando C++ (aplicación win32) –

Cuestiones relacionadas