Capítulo 8- Dominios de aplicación y servicios–Parte 2

 
Lección 3 – Creando servicios de Windows
La creación de servicios, permite correr un assembly en background (por detrás). Los servicios son ideales cuando se necesita monitorear algo, cuando el assembly necesita escuchar por conexiones de red que ingresan, o cuando se necesita ejecutar un assembly antes que el usuario se loguee.
Debido a su naturaleza, los servicios requieren seguridad especial y consideraciones de instalación.
 

Que es un servicio Windows?
Los servicios de windows son procesos que corren en el background, sin interfaz de usuario, y en su propia sesión de usuario. Es ideal para una aplicación que deba estar corriendo constantemente y no interactuar con el usuario.
La única forma de debuggear un servicio es instalarlo, iniciarlo y atachear un debugger.
Se debe crear el instalador de componentes para el servicio de aplicaciones. La instalación de componentes, instala y registra el servicio en el servidor y crea una entrada para este, con el Windows Services Control Manager.
Las aplicaciones de Windows Service corren en una situación diferente de la ventana interactiva del usuario no logueado. Una window station es un objeto seguro que contiene un Clipboard, un grupo de objetos de escritorio. Los mensajes de error deben ser logueados en el log de eventos de Windows en lugar de mostrarlos en la interfaz del usuario.
Los Windows Service application corren en su propio contexto de seguridad y son iniciados antes que el usuario se loguee a Windows. Se debe planear con cuidado qué cuentas de usuario debe correr con el servicio. Los servicios con mayores privilegios son los que tienen más ataques.
 
Como crear proyecto de Servicio?
Aclaración: visual studio 2010 ya no cuenta con las mismas plantillas que se explican en el libro, para saber cómo se realizan en la actualidad hagan clic aqui o en un post muy útil que encontré aca , pero con el fin de ver todo el contenido de la certificación, lo sigo explicando de esta manera.
 
1. Crear un proyecto usando el template de las aplicaciones de Windows services.
image
2. Escribir el código para los procedimientos OnStart, OnStop y otros que quieran redefinir.
3. Agregar los instaladores necesarios, por default, un service application contiene 2 links de instaladores, uno para el proceso y otro para el servicio asociado.
4. Crear el proyecto para instalar los servicios e instalarlo
5. Usar los servicios snap-in para iniciar nuestro servicio
 
Como implementar un servicio?
Después de crear el proyecto de servicio, se deben seguir los siguientes pasos para implementarlo:
1. Modificar la propiedad ServiceBase.Servicename (es usada para identificar el servicio).
2. agregar código en el metodo OnStart (este se llama cuando se inicializa el servicio). Si se desea ejecutar algo de forma mecánica, se puede usar el componente SystemTimers.Timer y este lanzara eventos periódicamente.
3. Adherir codigo al metodo OnStop para realizar acciones al momento de parar el servicio.
4. Opcionalmente se pueden sobreescribir OnPause, OnContinue y Onshutdown.
 
Como crear un instalados de proyectos para un servicio?
Para la instalación de un proyecto para un servicio se utilizan las clases ServiceInstaller y ServiceProcessInstaller.
  • · ServiceInstaller: define la descripción del servicio, su nombre, el nombre del servicio y tipo de inicio.
  • · ServiceProcessInstaller: define los settings del servicio.
Pasos para crear un instalador de servicios usando visual studio (2008, 2005):
1. Abrir la vista diseño del servicio, hacemos clic derecho en el diseño y elegimos Add instaler (agregar instalador) y se crea un ProjectInstaller.
2. Estableces la propiedad startype (del ProjectInstaller) como:
  • · Automatic: el servicio inicia automáticamente cuando la computadora comienza.
  • · Manual: el usuario debe iniciarlo manualmente.
  • · Disabled: el servicio no inicia, ni el usuario puede empezarlo
3. Agrega una descripcion y un displayName para el ServiceInstaller.
4. Specifica el contexto de seguridad, seteando las propiedades de la cuenta (Account property) del ProjectInstaller.
Los contextos de seguridad pueden ser:
  • · LocalService, corre en el contexto de una cuenta que actúa sin privilegios de usuario y tiene credenciales de anónimo.
  • · NetworkService, permite autenticar a otra computadora en la red.
  • · LocalSystem, el servicio corre con ilimitados privilegios y presenta credenciales a cualquier usuario remoto. Es de mucho riesgo.
  • · User(the default), causa que el sistema pida user name y password cuando el servicio es instalado
....................................................................................................................................................
Bajar esta capítulo en formato PDF                                                                Codigo Ejemplo
....................................................................................................................................................

1 comentario: