CREANDO UN SERVICIO DE WINDOWS CON VISUAL BASIC

 LINK:CREANDO UN SERVICIO DE WINDOWS CON C#

Me encuentro escribiendo este nuevo artículo para todos los lectores de esta página.

Este articulo trata de cómo crear un servicio de Windows con Visual Studio en esta ocasión los explicare con Vb espero  a alguien le pueda servir.

 

Lo primero que necesitamos hacer es agregar un nuevo proyecto  pero esta ves seleccionaremos un servicio de Windows.

 

Servicio de Windows

 

Se abra creado  nuestro proyecto. Para hacer que funcione nuestro Servicio es necesario Instalarlo en el Sistema, por lo cual nuestro siguiente paso es agregar un instalador a nuestro servicio.

 Para este paso deberemos darle click derecho dentro de la parte del formulario de nuestro Servicio y aparecerá una pantalla  en la cual daremos click en Agregar Instalador.

Agregar Instalador

 

Se crearan dos componentes al agregar nuestro instalador que son los siguientes

Componentes

Hasta estos momentos contaremos con dos clases:

ProjectInstaller

 Service1

 Nota: Podrán cambiar el nombre de sus clases, para mayor entendimiento las dejare como las da por defecto, hasta estos momentos todos deberemos de contar con estos elementos en nuestro explorador de soluciones.

  
Explorador de Soluciones

 

 

Solo nos ara falta agregar un ultimo elementó a nuestro proyecto, este elemento es conocido como timer. No es el timer que nos da por defecto Visual Studio, este timer se deberá de agregar como un elemento a nuestro cuadro de herramientas.

 Lo primero que deberemos hacer es colocarnos en el cuadro de herramientas de nuestro proyectó, daremos click derecho y seleccionaremos la opción de Elegir Elementos.

 

Cuadro de Herramientas
 

Nos aparecerá  una pantalla de componentes donde deberemos de agregar el elemento timer, con el espacio de nombres  System.Timers, lo seleccionamos y damos click en aceptar.

Se abra agregado nuestro componente a nuestra caja de herramientas.

System.Timer

Ya habremos agregado todos los elementos para que funcione nuestro Windows Services ahora empecemos a programarlo para que funcione. Empecemos con el código del Instalador.

Imports System.ComponentModel

Imports System.Configuration.Install

Public Class ProjectInstaller

    Public Sub New()
        MyBase.New()

        'El Diseñador de componentes requiere esta llamada.
        InitializeComponent()

        'Agregue el código de inicialización después de llamar a InitializeComponent

    End Sub

End Class

Lo primero que debemos de hacer es importar la clase System.ServiceProcess

Imports System.ServiceProcess

Después de eso debemos de indicar de qué forma arrancara el servicio.

'Indica de que forma va arrancar el Servicio

       Public proceso As New ServiceProcessInstaller()
        proceso.Account = ServiceAccount.LocalService

Puedes arrancar el servicio de las siguientes Formas

Servicio Local

Sistema Local

Servicio de Red

Usuario

Se activara de las Siguientes Formas

Después de indicar la forma en la que se Registrara el Servicio, es necesario indicar como se va iniciar el proceso de la siguiente forma:

'Indica como se va iniciar el Servicio

        Public servicio As New ServiceInstaller()
        servicio.StartType = ServiceStartMode.Automatic

Los servicios se pueden iniciar de la siguiente forma:

Automática:   

Deshabilitada:

Manual:

Como Inicia el Servicio

Después de indicar de que forma inicializara y en  que forma correrá es necesario indicarle un nombre a nuestro servicio de la siguiente forma.

'Muestra el nombre de el Servicio
        servicio.ServiceName = "MyServicio"
        servicio.DisplayName = "MyServicio"

Una ves indicando los detalles de nuestro servicio como ultimo paso agregamos nuestros objetos a el instalador.

'Agrega los componentes que declaramos anteriormente a nuestro Instalador
        Installers.Add(servicio)
        Installers.Add(proceso)

Hemos acabado de programar nuestro instalador, este es el código completo de lo que acabamos de hacer.

Imports System.ComponentModel
Imports System.Configuration.Install
Imports System.ServiceProcess
Public Class ProjectInstaller
    Inherits System.Configuration.Install.Installer
    Public proceso As New ServiceProcessInstaller()
    Public servicio As New ServiceInstaller()
    Public Sub New()
        MyBase.New()
        InitializeComponent()
        'Indica de que forma va arrancar el Servicio
        proceso.Account = ServiceAccount.LocalService
        'Indica como se va iniciar el Servicio
        servicio.StartType = ServiceStartMode.Automatic
        'Muestra el nombre de el Servicio
        servicio.ServiceName = "MyServicio"
        servicio.DisplayName = "MyServicio"
        'Agrega los componentes que declaramos anteriormente a nuestro Instalador
        Installers.Add(servicio)
        Installers.Add(proceso)
    End Sub
End Class

Ahora necesitamos programar lo que hará nuestro servicio, este es el código sin programar de nuestro servicio.

Public Class Service1

    Protected Overrides Sub OnStart(ByVal args() As String)
        ' Agregue el código aquí para iniciar el servicio. Este método debería poner
        ' en movimiento los elementos para que el servicio pueda funcionar.
    End Sub

    Protected Overrides Sub OnStop()
        ' Agregue el código aquí para realizar cualquier anulación necesaria para detener el servicio.
    End Sub

End Class

Recuerdan que agregamos un Timer a nuestro Formulario de nuestro Servicio, pues es momento de hacer doble click en el para programar dentro del evento Timer_Elapsed

este es el código de nuestro servicio.

 

 Public Class Service1
    Protected Overrides Sub OnStart(ByVal args() As String)

 

        ' Agregue el código aquí para iniciar el servicio. Este método debería poner
        ' en movimiento los elementos para que el servicio pueda funcionar.
   

End Sub
    Protected Overrides Sub OnStop()

 

        ' Agregue el código aquí para realizar cualquier anulación necesaria para detener el servicio.
   

End Sub
    Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
    

    'aqui pondremos el proceso que queremos que haga nuestro servicio
   

End Sub
End Class

 

Hasta este momento es hora de que utilicen su imaginación para hacer los servicio que quieran, estos son los pasos a seguir para los servicio, puedes hacer servicios que hagan que se inicialicé una aplicación cada determinada hora o que se yo,  yo voy a crear como termino de mi ejemplo un servicio sencillo que me muestre un mensaje en un tiempo determinado en el Timer.Interval, este será al código.

 #Region "Servicio de Windows"
Imports ServicioWeb.localhost.ServicioWeb
Imports ServicioWeb.localhost
Public Class Exportar
#Region "Inicia el Proceso"
    Protected Overrides Sub OnStart(ByVal args() As String)
        Timer1.Interval = 5400
        Timer1.Start()
    End Sub
#End Region
#Region "Detiene el Proceso"
    Protected Overrides Sub OnStop()
        Timer1.Stop()
    End Sub
#End Region
#Region "PROCESO QUE EJECUTA"
    Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
        Dim hora As New Date
        MsgBox("Esto se ejecutara cada 5 minutos")
    End Sub
#End Region
End Class
#End Region

 

Después de tener el código de nuestro proyecto Finalizado, simplemente lo ejecutamos para que nos genere nuestro archivo (.exe)

 

 

Abrimos el Símbolo del Sistema de Visual Studio.

 

Simbolo del Sistema

Y dentro del símbolo del Sistema instalamos nuestro servicio, con el comando InstallUtil “path”.

 El path es la ruta completa de donde se encuentra el archivo .exe de nuestro proyecto que anteriormente creamos.

Instalacion

 

Después de Instalar nuestro Servicio nos vamos al panel de control, Herramientas Administrativas y buscamos servicio, comprobamos si nuestro servicio se encuentra ahí, el servicio se debe de llamar como lo pusimos en la clase de Instalación de un principio, recuerden que el nombre era MyServicio.

 

 

  MyServicio

 

Recuerden que  lo declaramos que iba arrancar de forma local e iba iniciar de forma automática, simplemente nos queda iniciarlo.

 

Iniciar Servicio

 

Después de Iniciar nuestro servicio Se estará ejecutando como lo declaramos en el atributo Timer1.Interval.

Nota:Para controlar el tiempo del servicio solo cambia el tiempo en el atributo   Timer1.Interval

 

 

 

Resultado

 

 

Espero a alguien le halla servido este pequeño articulo. Guiño

Comentarios
Añadir nuevoBuscar
Aldo - Mi mente esta generando ideas Unregistered | 2009-01-27 00:34:58
Buna explicacion ahora mismo lo pondre en marca con algunas ideas que me acaban de llegar. Gracias Men.
John David - Genial Unregistered | 2009-03-19 22:51:05
Gracias por la explicación... demasiado claro, muchas gracias
GC - Gracias Unregistered | 2009-08-03 04:04:08
Excelente! Muy útil.
Escribir comentario
Nombre:
Tí­tulo:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 

Powered by JoomlaCommentCopyright (C) 2006 Frantisek Hliva. All rights reserved.Homepage: http://cavo.co.nr/

 
 
Descargas
  

Cursos
Microsoft LINQ
  

Silverlight
  

Base de Datos
  

Ajax
  

Crear Graficas
        

Crystal Reports
  

  VicoNet