Servicio de Windows versus Programador de tareas con activador de inicio

Servicio de Windows versus Programador de tareas con activador de inicio

Estoy ejecutando una aplicación de escritorio como servicio con la ayuda de NSSM (Non Sucking Service Manager), que es un contenedor para aplicaciones que no están diseñadas para ejecutarse como un servicio.

Utilizo una computadora portátil vieja con Windows 10 como servidor ejecutando algunas aplicaciones como servicios de Windows. En el portátil no hay ningún usuario conectado, por lo que requiere menos recursos y gracias a los servicios de Windows las aplicaciones siempre están ejecutándose incluso cuando Windows instala nuevas actualizaciones y se reinicia.

Ahora preferiría que las aplicaciones pudieran ejecutarse como servicios de Windows por sí mismas sin la ayuda de otra aplicación (NSSM), pero sé que eso nunca sucederá. Las aplicaciones son aplicaciones de escritorio y nunca están destinadas a ejecutarse como un servicio; los desarrolladores nunca los mejorarán con dicha característica. (Ya lo he preguntado).

En realidad, existe una alternativa a ejecutar una aplicación como servicio y sería iniciar la aplicación con el Programador de tareas con el activador "al iniciar Windows".

En ambos casos, no es necesario que el usuario inicie sesión y la computadora puede reiniciarse automáticamente y la aplicación debe estar siempre disponible en la red. La ventaja del Programador de tareas sería que la aplicación no requiere ningún contenedor (NSSM).

Pero no estoy muy seguro de la confiabilidad del Programador de tareas. Un servicio de Windows está destinado a ejecutar una aplicación las 24 horas del día, los 7 días de la semana y tiene muchas opciones de recuperación. El Programador de tareas está destinado a ejecutar una aplicación periódicamente y no las 24 horas del día, los 7 días de la semana; por lo tanto, no existe ninguna opción de recuperación.

Entonces mi pregunta es:

¿Es el Programador de tareas con el activador "al iniciar Windows" una alternativa válida a un servicio de Windows o no?

¿Alguien tiene experiencia con ambos métodos y puede explicar mejor las ventajas y desventajas de ambos?

Respuesta1

Sí, en su caso de uso lo es, sin embargo, tengo entendido que generalmente el programador de tareas espera que la tarea finalice en algún momento (y de hecho tiene unOpción por defectoforzar la finalización de la tarea si no termina por sí sola) y es posible que esté probando algunos límites desconocidos, arbitrarios o al menos imprevistos, al ejecutarlo de esta manera. Si utiliza una tarea programada, podría ser mejor tener una tarea separada.tarea programada para iniciar la aplicacióny otro para detener (y/o reiniciar) la aplicación. Puede programar la tarea inicial para que se ejecute al iniciar Windows y ejecutar las otras tareas a través de la administración remota.

Un área en la que no es equivalente es la de las dependencias de servicios. No existe una forma integrada de hacer que una tarea programada dependa de otra para ejecutarse, mientras que sí se puede hacer con los servicios. Otra área sería el registro de eventos. Sospecho que ninguno de estos sería útil en su caso de uso porque muchas aplicaciones mantienen sus propios registros si es necesario y no dependen de otras aplicaciones para ejecutarse.

Ambos tienen opciones de recuperación/reinicio después de una falla.

recuperación del servicio

recuperación de tareas programadas

y ambos se pueden configurar para un inicio retrasado después del inicio.

inicio retrasado del servicio

inicio retrasado de tarea programada

Respuesta2

Podría dejarte un comentario, porque Google a veces es útil, pero recuerdo que hace mucho tiempo quería lograr lo mismo. En ese caso, utilicé un kit de recursos para Windows Server 2003. Contenía una herramienta para crear un servicio. Lamentablemente no encuentro información sobre lo que estaba usando en ese momento *.

Aún así, una búsqueda en Google muestra muchos resultados:

1) Usandosc.exe https://support.microsoft.com/en-us/help/251192/how-to-create-a-windows-service-by-using-sc-exe

https://stackoverflow.com/questions/3663331/when-creating-a-service-with-sc-exe-how-to-pass-in-context-parameters

Aquí hay un ejemplo:

C:\Documentos y configuraciones\Administrador> sc crear asperacentral binPath= "C:\Program Files\Aspera\Enterprise Server\bin\Debug\asperacentral.exe" DisplayName= "Aspera Central" start= auto

2) Uso *svrany: esta era la herramienta que estaba usando, acabo de recordarla. Pero ahora es bastante antiguo y no te sugiero que lo uses, aunque supongo que todavía funciona (con Windows 7 sí).

3) Usando srvstart.exe: https://www.rozanski.org.uk/software

Una herramienta que escuché no hace mucho y nunca se usó.

Estoy seguro de que hay muchísimos otros, pero probaría sc.exeel método 1.

Respuesta3

Cambiar la prioridad de la aplicación que se ejecuta con el Programador de tareas de Windows es complicado. Pero no sé sobre el servicio.

información relacionada