Arquitectura de una aplicación Multi-tier





    Servidor;

        . Remote DataModule
        . Tablas
        . Provider.

    Cliente;

        . TremoteServer
        . TclientDataSet.



Al crear el módulo de datos remoto si vemos el código fuente podemos ver que lo que hace es crear un objeto COM. Al ser declarado el Tdatamodule como objeto COM podemos acceder a él desde otras aplicaciones y desde otras máquinas remotas. Al crear un objeto lo que estamos creando es una librería que es declarada en otra unit. Para que el cliente pueda ver el módulo de datos remoto hay que ejecutar el programa servidor para que este módulo quede registrado. Una vez que se haya ejecutado si en el TclientDataSet en la propiedad ProviderName no vemos el Tprovider de la aplicación servidora es debido a que no hemos exportado los datos, para ello abrimos la aplicación servidora y pinchamos en el Tprovider con el botón derecho (export provider from data module). Se conecta un componente TremoteServer a la aplicación servidora especificando el nombre y la posible localización de la aplicación. La propiedad ServerName, la cual por defecto está a blancos, identifica el nombre de la aplicación servidora. Este nombre normalmente es el ID del servidor OLE que permitirá acceso al interface iprovider. La propiedad ComputerName identifica la computadora en la cual la aplicación servidora reside. Asignaremos un valor a esta prpiedad cuando la aplicación servidora resida en una computadora separada. Después de establecer el ServerName y ComputerName conectaremos a la aplicación servidora asignando true a la propiedad Connected. Una vez conectado, podemos obtener un interface Iprovider para ejecutar el método GetProvider. Este método toma o coge una cadena como argumento, ProviderName, que indica el nombre del objeto o propiedad OLE que produce un interface Iprovider. También, el componente RemoteServer tiene dos eventos, ONConnect y Ondisconnect, que son lanzados después de conectar o desconectar con la aplicación servidora.

El ClientDataSet como comentábamos antes está inicialmente vacío, sin estructura ni contenido. Debemos derivar la estructura desde un Ttable o Tquery, esto es un interface Iprovider ya que obtiene gran cantidad de datos desde una aplicación servidora.

El ClientDataSet causa las siguientes acciones:
 

 Asociar el RemoteServer para conectar con la aplicación servidora
 Un interface Iprovider es obtenido por llamar al método GetProvider, utilizando la propiedad 
 ProviderName del componente.
 El interface Iprovider es asignado a la propiedad Provider.
 Un conjunto de datos es obtenido como un objeto OLEVariant desde el método Iprovider. 
 GetRecords.
 El conjunto de datos es localizado en el ClientDataSet vía AppendData.

Ejemplo


(C) 1999 Database DM. la reproduccion total o parcial de este documento, asi como la divulgación de parte o la totalidad