martes, 3 de noviembre de 2009

Creacion de Componentes COM++, Desde el inicio - Parte II.

Veamos, con este ejemplo que sera mas interesante y trataremos de hacerlo lo mas detallado para que sea entendible en su realizaciòn. la idea de este ejemplo es el de crear un componente pero que este este alojado del lado del servidor de componentes como un puente entre el cliente y el servidor de BD, esta forma de realizar proyectos nos ayuda a colocar los procesos que necesitan mas recursos de procesamiento ya que hara el trabajo sera este servidor de componentes y no el cliente.
Veamos la siguiente imagen que representa lo que vamos a realizar:



Como Uds ven tenemos un recurso mas en este modelo que es el servidor de componentes, en la parte I tenemos los proyectos Clientes y COMClientes que son alojados en el lado del cliente, ahora crearemos otro proyecto mas que lo alojaremos en el lado del servidor, veamos creamos nuevamente un proyecto con el nombre COMPLUSCliente y dentro de ella una clase DCliente, como se muestra en la siguiente estructura:





Bien este ultimo proyecto a diferencia de otros debe tener la característica de poder ser alojado en el lado del servidor y poder ejecutar transacciones, para esto este proyecto debe tener agregada la siguiente referencia a la libreria COM+ Services Type Library para cargar las clases de soporte para el manejo de transacciones y comunicacion.





Una vez realizado este dentro de la clase DCliente del proyecto COMPLUSCliente, crearemos la siguiente función como se muestra a continuaciòn casi igual que la funcion que teniamo en la clase Cliente:



Function rsClientes(ByVal xFiltro As String) As ADODB.Recordset
    'La conexión a la base de datos
    Dim cn As ADODB.Connection: Set cn = New ADODB.Connection
    Dim sql As String
    sql = "select CompanyName from Customers " & _
            "where CompanyName like '" & xFiltro & "%'" & _
            "order by CompanyName"

    cn.Open "Provider=SQLNCLI; " & _
             "Initial Catalog=Northwind; " & _
             "Data Source=PRINCESA; " & _
             "integrated security=SSPI; persist security info=True;"
     ' El recordset para acceder a los datos
    Dim rs As ADODB.Recordset: Set rs = New ADODB.Recordset

    ' Abrir el recordset de forma estática:
    rs.Open sql, cn, adOpenStatic

    Set rsClientes = rs
End Function



Ahora en el proyecto COMCliente eliminaremos la función que existía y la reemplazaremos por la siguiente función:



Function getClientes(ByVal xFiltro As String) As ADODB.Recordset
 Dim xCliente As Object
 Set xCliente = CreateObject("COMPLUSCiente.DCliente")

 Dim rs As New ADODB.Recordset
 Set rs = xCliente.rsClientes(xFiltro)

 If rs.RecordCount > 0 Then
 Set getClientes = rs
 Else
 Set getClientes = Nothing
 MsgBox "No existe datos para esta consulta"
 End If
 
End Function



Como vemos la referencias a proyectos de servicios es mediante la asigancion CreateObject y haciendo referencia al proyecto y clase a usar como se muestra en el código anterior. en el proyecto Clientes debemos modificar la consulta de la forma siguiente:



If Me.txtClientes.Text = "" Then
    MsgBox "Ingrese a lo menos un caracter", vbCritical, "Sist Clientes"
Else
 Dim xcliente As COMCliente.Cliente
 Set xcliente = New COMCliente.Cliente

 Dim rs As New ADODB.Recordset
 Set rs = xcliente.getClientes(Me.txtClientes.Text)
    'Llenamos el Listbox
    While Not rs.EOF
        Me.lstCliente.AddItem (rs!CompanyName)
        rs.MoveNext
    Wend
End If



Creando los instaladores:
Volvemos a generar los archivos compilados del proyecto Clientes y COMCliente de la misma forma como en la primera parte.
Ahora seleccionamos el proyecto COMPLUSCliente y crearemos la DLL, nos ubicamos en el servidor de componentes y nos vamos a Panel de control --> Herramientas administrativas y seleccionamos Servicios de Componentes, dentro de esta nos ubicamos hasta la raíz Aplicaciones COM+, seleccionamos y creamos una nueva aplicación como indica la figura:





Al ubicarnos en esta pestaña nos iremos hasta crear una nueva Aplicación vacía con el nombre igual al proyecto creado y en la opción de tipo de activación se debe seleccionar Aplicación de Servidor, como se ilustra aquí:





Luego en el tipo de identidad de la aplicación seleccionaremos Usuario interactivo que es el usuario creador de la aplicación y administrador del equipo y finalizamos la creación de la aplicación en el lado del servidor, una vez realizado nos desplazamos hasta la raiz de componentes de nuestra aplicacion:





Lo que haremos para finalizar esta aplicación es ubicar la dll creada COMPLUSCliente.dll la debemos seleccionar y arrastrar hasta la carpeta componentes o soltar al lado derecho seleccionado la carpeta componentes.





Y esta debe quedar como se indica en la figura anterior con esto ya estara activado nuestro componente en el lado del servidor.
Lo que nos falta es crear los instaladores para poder ser instalado en el lado del cliente para que nuestro cliente se pueda comunicar, para esto seleccionamos la aplicación COMPLUSCliente y seleccionamos la opción exportar:







En esta opción lo que crearemos es instalar nuevos componentes en el cual debemos seleccionar la ruta donde se generara el archivo instalador y escribiremos el nombre COMPUSCliente.MSI





Con esto hemos creado los instaladores al lado del cliente, donde se generaran dos archivos...





Con esto hemos completado la realización de este esquema de trabajo.


Ahora nos falta realizar pruebas de mantenimientos, como realizar algunos cambios en los componentes si que afecte a los clientes, creación de componentes mediante generacion de TLB's, La Seguridad... y como lo  hacemos en .NET... creo que primero debemos aprender como funciona actualmente varios sistemas existentes para entrar enel mundo de la plataforma .Net... Saludos.



No hay comentarios:

Publicar un comentario