Windows Service Pack 2 (SP2) y .NET Framework SP2 introdujeron una serie de cambios importantes que afectaron el funcionamiento de los servicios de Windows. Estos cambios incluyen:
* La introducción de la API del Administrador de control de servicios (SCM).
* La capacidad de especificar el modo de inicio de un servicio como "Automático", "Manual" o "Desactivado".
* La adición de un nuevo indicador de estado del servicio, SERVICE_STOPPED_WAIT_HUNG, que indica que un servicio está tardando más de lo esperado en detenerse.
* La capacidad de especificar la cuenta bajo la cual se debe ejecutar un servicio.
* La adición de nuevas características de seguridad, como la capacidad de restringir el acceso a la configuración y los datos de un servicio.
.NET Service Pack 3 (SP3)
Windows Service Pack 3 (SP3) y .NET Framework SP3 introdujeron una serie de cambios menores que afectaron el funcionamiento de los servicios de Windows. Estos cambios incluyen:
* La adición de un nuevo indicador de estado del servicio, SERVICE_START_PENDING, que indica que un servicio está tardando más de lo esperado en iniciarse.
* La capacidad de especificar el orden en que se inician y detienen los servicios.
* La adición de nuevas opciones de registro para los servicios de Windows.
La siguiente tabla resume las diferencias clave entre Windows Service Pack 2 y 3:
| Característica | Paquete de servicio 2 | Paquete de servicio 3 |
|---|---|---|
| API del Administrador de control de servicios (SCM) | Introducido | Sin cambios |
| Modo de inicio del servicio | Se puede configurar en "Automático", "Manual" o "Desactivado" | Sin cambios |
| Indicadores de estado del servicio | Se agregó la bandera SERVICE_STOPPED_WAIT_HUNG | Se agregó la bandera SERVICE_START_PENDING |
| Cuenta de servicio | Se puede especificar | Sin cambios |
| Funciones de seguridad | Se agregaron nuevas funciones de seguridad, como la capacidad de restringir el acceso a la configuración y los datos de un servicio. Sin cambios |
| Opciones de registro | Opciones de registro limitadas | Se agregaron nuevas opciones de registro |
| Dependencias de servicios | Se puede especificar | Se puede especificar de forma más flexible |
Trabajar con servicios de Windows en .NET
Para crear un servicio de Windows en .NET, debe crear una clase que derive de la clase `ServiceBase`. La clase `ServiceBase` proporciona la funcionalidad básica que se requiere para un servicio de Windows, como la capacidad de iniciar, detener y pausar el servicio.
El siguiente código muestra un ejemplo simple de un servicio de Windows:
```
usando Sistema;
usando System.ServiceProcess;
espacio de nombres MyWindowsService
{
clase pública MyWindowsService:ServiceBase
{
anulación protegida void OnStart (cadena [] argumentos)
{
// TODO:Agregar código para iniciar el servicio.
}
anulación protegida anular OnStop()
{
// TODO:Agregar código para detener el servicio.
}
}
}
```
Para instalar un servicio de Windows, debe utilizar la herramienta `InstallUtil`. La herramienta `InstallUtil` se encuentra en el SDK de .NET Framework. El siguiente comando instala un servicio de Windows:
```
InstallUtil.exe MyWindowsService.exe
```
Para desinstalar un servicio de Windows, debe utilizar la herramienta `UninstallUtil`. El siguiente comando desinstala un servicio de Windows:
```
UninstallUtil.exe MyWindowsService.exe
```