Pregunta

Necesito una aplicación de fondo para admitir la aplicación de mi cliente, que siempre debe ejecutarse en la máquina del cliente, independientemente de la aplicación principal del cliente, se ejecuta o no.

El servicio de Windows fue mi primera opción, pero los problemas que enfrenté con el servicio de Windows fueron: facilidad de control sobre el servicio de Windows a través de la aplicación principal del cliente, la liberación e instalación de parches en el servicio de Windows y la solución de problemas si el servicio de Windows no se ejecuta.

Entonces, comencé a pensar en las alternativas al servicio de Windows y descubrí que una aplicación de formularios de Windows sin formularios visibles puede hacerlo por mí. Esta aplicación invisible debe comenzar con el inicio del sistema y seguir ejecutándose todo el tiempo, haciendo todo el trabajo que haría un servicio de Windows. Pero antes de profundizar en el desarrollo, quiero explorar los pros y los contras de este enfoque.

¿Alguna sugerencia/comentario sobre este enfoque?

¿Fue útil?

Solución

Sus requisitos son más adecuados para el servicio de Windows. La principal ventaja con el servicio de Windows es que comenzará tan pronto como aparezca el sistema, independientemente de que cualquiera se inicie sesión en el sistema o no.

Para resolver los problemas de implementación, crea su lógica comercial en un ensamblaje separado y llama a la función necesaria con el servicio Windows. De esta manera, puede implementar solo el ensamblaje modificado.

La aplicación WinForm con formulario invisible no tendrá el propósito. Hth

Otros consejos

Eso no es posible. Las aplicaciones en modo de usuario deben ser iniciadas por un usuario y no continuarán ejecutándose cuando ese usuario se inicie. Ese es el propósito del SessionEnding Evento: para permitirle cerrar su aplicación con gracia cuando el usuario se inicia o la computadora se está apagando. No puede simplemente comenzar algo en el inicio del sistema y mantenerlo funcionando todo el tiempo.

Necesita un servicio de Windows para eso. Pero debe tener en cuenta que en Windows Vista y más tarde, un servicio no puede interactuar directamente con el usuario. Se ejecutan en un proceso separado y están restringidos de mostrar su propia interfaz de usuario. No está claro a partir de la pregunta exactamente cuáles son sus necesidades, pero esta es una limitación importante de un servicio de Windows que vale la pena considerar. Un diseño adecuado realmente no debería requerir esto, pero aparentemente hay muchas personas a las que este nuevo comportamiento más seguro es una verdadera sorpresa. Explico esto con más detalle en respuestas relacionadas a esta pregunta y esta otra pregunta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top