Solo he creado aplicaciones de Windows normales (C# principalmente). ¿Qué diferencia a un servicio de Windows de una aplicación de Windows normal? ¿Qué los hace diferentes? ¿Qué puede hacer un servicio que una aplicación no puede? ¿Cuáles son las diferencias vistas desde el punto de vista de los desarrolladores? ¿Cómo se crea uno? ¿Es solo para crear una aplicación regular (quizás la aplicación de consola, ya que no hay una interfaz gráfica de usuario) y ejecutarla o instalarla de una manera especial, o es más lo que tiene que hacerse?¿Cuál es la diferencia entre un servicio de Windows y una aplicación normal?
Respuesta
Hay un par de cosas que me saltan inmediatamente.
- Se ejecutan en una consola totalmente diferente a partir de Vista
- Como resultado de ejecutar en una consola diferente, los servicios no pueden interactuar con el escritorio. Entonces, esencialmente, no hay soporte directo para UI. Por lo general, debe codificar una aplicación de interfaz de usuario hermana que se ejecuta como un programa normal y utiliza algún mecanismo (por ejemplo, canalizaciones con nombre) para comunicarse con el servicio.
- Normalmente, solo se puede ejecutar una instancia de su servicio en cualquier momento.
- Los procesos son por usuario, los servicios son por estación de trabajo y, por lo tanto, a menudo proporcionan servicios para usuarios múltiples.
La diferencia principal es que un servicio de Windows es algo que desea ejecutar como un servicio en segundo plano y no requiere una interfaz de usuario. Un ejemplo es un servicio que indexa archivos en su disco para buscar. .
Otra ventaja es que puede tener los servicios se inician automáticamente cuando el usuario inicia sesión en
También existen métodos que pueden anular que se llama cuando se inicia el servicio/parado (es decir, desde el Panel de control. | Herramientas administrativas | Servicios).
En Visual Studio hay un tipo de proyecto especial que puede usar para crearlo. Consulte el siguiente sitio para ver un ejemplo: http://www.dotheweb.net/articles/dotnet/services.aspx
This MSDN page lleva a más documentación sobre cómo crearlos de lo que podría sacudir un palo. This page es quizás una mejor introducción a ellos en general.
La diferencia clave entre un proceso que se ejecuta como una aplicación y como un servicio es que el servicio puede operar completamente fuera de la asociación normal con un usuario y sesión. Por lo tanto, los servicios pueden ejecutarse de manera tal que se inicien antes de que cualquier usuario inicie sesión y pueda continuar ejecutándose después de que los usuarios cierren la sesión. Los servicios se utilizan para implementar una gran parte de la funcionalidad real del sistema operativo.
Los servicios tampoco están relacionados con la ejecución como un mapeo 1: 1 con un proceso. Muchos servicios pueden existir dentro de un proceso, normalmente mediante el uso de svchost (eche un vistazo a estos con el explorador de procesos para una indicación de cómo esto funciona a menudo). Esto reduce el esfuerzo al inicio ya que no se requieren múltiples procesos para servicios relativamente livianos.
Implementar un servicio en C# es bastante simple, este page indica cómo en términos muy fáciles de seguir.
Tenga en cuenta que en realidad un servicio en Windows es poco más que el andamio en el registro bajo HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services que define esas 'rutas de imagen' (en la mayoría de los casos simplemente ejecutables y los parámetros a usar) que son servicios considerados junto con el usuario que luego ejecuta, de qué otros servicios dependen y si comienzan desde el inicio o la puesta en marcha o según sea necesario.
Si está familiarizado con Unix, un servicio de Windows es como un daemon de Unix. No está asociado a ningún usuario en particular y siempre se ejecuta en segundo plano.
- 1. ¿Cuál es la diferencia entre un controlador y un servicio?
- 2. ¿Cuál es la diferencia entre vim regex y regex normal?
- 3. ¿Cuál es la diferencia entre una aplicación de servicio WCF y una biblioteca de servicios WCF?
- 4. Cuál es la diferencia entre una carpeta fuente y una carpeta (normal)
- 5. En D, ¿cuál es la diferencia entre una importación privada y una importación normal?
- 6. ¿Cuál es la diferencia entre una clase estática y una clase normal?
- 7. ¿Cuál es la diferencia entre _chdir y SetCurrentDirectory en Windows?
- 8. ¿Cuál es la diferencia entre GTK # y Windows Forms?
- 9. ¿Cuál es la diferencia entre WPF y la aplicación Silverlight?
- 10. Cuál es la diferencia entre un servicio web y una capa de código de aplicación en un servidor de aplicaciones
- 11. ¿Cuál es la diferencia entre usar el grupo de subprocesos y un subproceso normal?
- 12. en IIS, ¿cuál es la diferencia entre "aplicación" y "sesión"?
- 13. ¿Cuál es la diferencia entre una aplicación web de iPhone y una aplicación de iPhone?
- 14. ¿Cuál es la diferencia entre un tema y una plantilla?
- 15. ¿Cuál es la diferencia entre un hilo y una fibra?
- 16. ¿Cuál es la diferencia entre una matriz y un objeto?
- 17. ¿Cuál es la diferencia entre una mónada y un cierre?
- 18. ¿Cuál es la diferencia entre un RoutedCommand y una RoutedUICommand?
- 19. ¿Cuál es la diferencia entre un diccionario y una matriz?
- 20. ¿Cuál es la diferencia entre un algoritmo y una función?
- 21. ¿Cuál es la diferencia entre una instancia y un objeto?
- 22. ¿Cuál es la diferencia entre un método y una función?
- 23. ¿Cuál es la diferencia entre una heurística y un algoritmo?
- 24. Diferencia entre ID_objeto y ID normal
- 25. ¿cuál es la diferencia entre text/javascript y aplicación/javascript
- 26. ¿Cuál es la diferencia entre un fondo y un servicio en primer plano?
- 27. ¿cuál es la diferencia entre la especialización explícita de plantilla y la función normal?
- 28. ¿cuál es la diferencia entre la estructura estática y la estructura normal?
- 29. ¿Cuál es la diferencia entre dict() y {}?
- 30. ¿Cuál es la diferencia entre un complemento twistd y un servicio twistd?
Prefiero decir que puede ejecutar servicios sin sesiones interactivas en la máquina. Puede iniciar lotes o programas cuando el usuario inicia sesión de varias maneras. Usar un servicio no es realmente un beneficio allí. – Joey