Aplicación de DCOM (Distributed Component Object Model)
para el desarrollo de sistemas distribuidos
Es un modelo de programación que esta diseñado basado en promover la interoperabilidad del software, esto permite que dos o mas componentes puedan fácilmente contribuir entre ellos.Lo importante es recalcar que estos pueden haber sido desarrollados por diferentes fabricantes, lenguajes de programación, o si estos estuvieran en diferentes computadoras y ejecutandose sobre diferentes sistemas operativos
DCOM se lanzó por primera vez en 1996 y hoy en dia esta disponible en todos los modernos sistemas operativos WINDOWS esta basado en Microsoft RPC el cual a su vez tiene una implementación DCE RPC
Se encuentra distribuido dentro de una red , cabe recalcar que la comunicación se realiza entre CLIENTE Y SERVIDOR, cuando se logra establecer un mecanismo confiable y eficiente para manejar la información, poco importa el desarrollador donde estén situados ya que el CLIENTE DCOM mira este objeto como si estuviera en su propio espacio de direcciones de esta forma se cumple el principio llamado transparencia de ubicación.
Bajo esta premisa es importante primero tener en cuenta lo que es COM, ya que frecuentemente en aplicaciones DCOM se nombra a COM, es necesario indicar que DCOM se basa solo en la distribución de objetos y a su vez provee de facilidades adicionales a las ya previamente propias de COM y estas son :
- Seguridad
- Multithreading
- Implementación de servidores como servicios
Arquitecura COM
COM es un estandar binario de microsoft se encuentra disponible en todas sus plataformas , el cual este define de como en que los objetos pueden interactuar en un determinado sistema. COM tambien esta disponible sobre :
- MACos
- Linux
- Sun Solaris
- Dec-Unix
- IBM -MVS
Los clientes usan objetos COM a través de interfaces , tal como lo hacen DCE-RPC. Si el cliente solicita que un objeto sea activado en el servidor y tiene éxito, recibe de vuelta el control sobre la interfaz de tal objeto.La interfaz a la cual hacemos mención puede ser cualquier otra interfaz que el cliente solicite.
Para permitir a los clientes encontrar los objetos que necesitan, todos los objetos son registrados en el registro local del sistema.
Tal como en DCE, las interfaces y las clases COM tienen UUIDS, llamadas especificamente IDs de interfaces e IDs de clases respectivamente y GUIDs ( Identificadores Globalmente Unicos) de modo general.
El registro permite guardar la información acerca del codigo ejecutable que implementa un objeto y el lugar donde reside, y en donde está el codigo que implementa los proxies para las interfaces
Invocación de Interfaces
COM soporta los modos estáticos y dinámico para la invocación de métodos de interfaces y esto es ligeramente diferente a la manera en que COBRA lo hace. En el metodo estatico, el programador define el objeto de sus interfaces en IDL, mientras que el MIDL crea el código del proxy y el stu. Estos ultimos son registrados en el registro del sistema para permitir mayor flexibilidad de su uso.
En COM, un objeto cuyos métodos son dinamicamente invocados, debe ser escrito para soportar IDISpacth, esto es distinto a COBRA, donde cualquier objeto puede ser invocado con DLL, los objetos COM que soportan la interfaz IDispatch, solo pueden ser invocados dinamicamente. Sin embargo, COM también toma en cuenta en los objetos que se pueden implementar interfaces duales , donde una interfaz se implementa de ambas maneras , a traves del Idispatch y a traves del método Vtable.
Multithreading
COM soporta a servidores con la funcionalidad de multithreading, pero requiere que las bibliotecas COM se inicialicen en cada uno de los hilos que las usan . Se tienen dos modelos principales. El primero de estos modelos es el modelo apartment, donde cada hilo debe incializar las bibliotecas COM, y cualquier iteraccion de objetos entre estos hilos , incusive en el mismo proceso,debe acogersse al mecanismo marshaling.
El segundo modelo es el free threading que permite a los desarrolladores escribir clientes y servidores con la funcionalidad de multithreading. Sin embargo , como con cualquier aplicación multithreading usar muchos hilos en un cliente o servidor COM, significa que el desarrollador debe ser cuidadoso para prevenir que multiples hilos estén cambiando a las mismas variables de datos al mismo tiempo. Esta es una técnica llamada sincronización y puede conducir a implementar algún código complicado
Antes de DCOM, COM no permitía multithreading osea que un unico hilo era usado en el servidor y todo acceso a los objetos era sincronizado a traves de una cola de mensajes de windows. Esto se usa como el método de sincronizacion en el modelo apartment de DCOM y es adecuado en muchos casos. Sin embargo si se tiene buena voluntad para escribir codigo extra, el modelo free threading permite mejor desempeño
Activación del Servidor
COM tiene varias maneras en las que un servidor puede ser activado. En resumen, se puede decir que un servidor de objetos COM no necesita estar ejecutadónse cuando se realiza una solicitud de un cliente para crear un objeto .
COM localizará el codigo del servidor a traves del registro y lo activará , esto lo hace con un servicio llamado SCM(Service Control Manager, Administrador de control de Servicio)
El SCM asegura que cuando se haga una solicitud de cliente , el servidor apropiado esté conectado y listo para recibir la solicitud.
COM también permite acceder a servidores que se encuentran corriendo cuando se hace la solicitud del cliente. Objetos corriendo pueden registrase a si mismos con una tabla diámica del sistema llamada running object table.
Servidores
Los servicios COM mas importantes son :
Servicio SCM: como se indicó anteriormente, las maquinas en un ambiente COM que soporta la capacidad de instancia los objetos a nombre de un cliente (local o remoto), ofrecen servicios SCM
Servicio de localización de implementación : A tarves del cual COM determina a partir de un indicador de clase , cual servidor implementa esa clase y donde el servidor esta localizado
Otros servicios ofrecidos como :
- Servicio Nombrado
- Servicio de Persistencia
- Servicio de Tiempo de vida de objetos
Video referencial respecto a DCOM
Fuente: Youtube
No hay comentarios:
Publicar un comentario