4.5 DCOM

DCOM

Microsoft Distributed COM (DCOM) extiende COM (Component Object Model) para soportar comunicación entre objetos en ordenadores distintos, en una LAN, WAN, o incluso en Internet. Con DCOM una aplicación puede ser distribuida en lugares que dan más sentido al cliente y a la aplicación.
Como DCOM es una evolución lógica de COM, se pueden utilizar los componentes creados en aplicaciones basadas en COM, y trasladarlas a entornos distribuidos. DCOM maneja detales muy bajos de protocolos de red, por lo que uno se puede centrar en la realidad de los negocios: proporcionar soluciones a clientes.
Actualmente DCOM viene con los sistemas operativos Windows 2000, NT, 98 y también está disponible una versión para Windows 95 en la página de Microsoft. También hay una
Implementación de DCOM para Apple Macintosh y se está trabajando en implementaciones para plataformas UNIX como Solaris.
El uso de los componentes COM es un claro ejemplo de la arquitectura Cliente/Servidor. El objeto COM en sí es el servidor, y es usado por un programa que hace de cliente. Existen varias formas de realizar la comunicación. Podemos encontrar los componentes como partes de un ejecutable (como el caso de los productos de Microsoft Office, o si implementamos nuestro propio componente y lo incluimos con un programa que los use), dentro de una librería de enlace dinámico ( DLL ) o incluso en otra máquina ( DCOM ).





A continuación, un gráfico nos muestra otra forma de ver los objetos COM. El objeto COM es la caja, y cada una de las interfaces son los paneles. Cada Panel tiene además un conjunto de botones que son las funciones.


SERVIDORES COM REMOTOS O DCOM

Cliente y servidor se encuentran en ordenadores distintos. La comunicación la gestiona el sistema operativo. Internamente, Microsoft usa el protocolo RPC para realizar la comunicación. Sin embargo, el programa servidor debe de estar ejecutándose.

LA ARQUITECTURA DCOM

DCOM es una extensión de COM, y éste define como los componentes y sus clientes interactúan entre sí. Esta interacción es definida de tal manera que el cliente y el componente puede conectar sin la necesidad de un sistema intermedio. El cliente llama a los métodos del componente sin tener que preocuparse de niveles más complejos.


En los actuales sistemas operativos, los procesos están separados unos de otros. Un cliente que necesita comunicarse con un componente en otro proceso no puede llamarlo directamente, y tendrá que utilizar alguna forma de comunicación entre procesos que proporcione el sistema operativo. COM proporciona este tipo de comunicación de una forma transparente: intercepta las llamadas del cliente y las reenvía al componente que está en otro proceso.

Cuando el cliente y el componente residen en distintas máquinas, DCOM simplemente reemplaza la comunicación entre procesos locales por un protocolo de red. Ni el cliente ni el componente se enteran de que la unión que los conecta es ahora un poco más grande.
Las librerías de COM proporcionan servicios orientados a objetos a los clientes y componentes, y utilizan RPC y un proveedor de seguridad para generar paquetes de red estándar que entienda el protocolo estándar de DCOM.

VENTAJAS

DCOM se puede usar en redes de una forma muy transparente, lo que nos permite la programación a varios niveles.
Podemos aprovechar las ventajas de las DLLs (Librerías de Enlace Dinámico) en el modelo de componentes. Entre estas ventajas están:
·         Minimizar el uso de memoria de programas (al existir sólo una copia de las funciones en memoria)
·         Las actualizaciones de las librerías realizan mejoras sobre todos los programas que las usan (aunque esto es un inconveniente, pues todas las nuevas versiones deben de ser compatibles 100% con las anteriores)
·         Se pueden usar y escribir funciones de/desde distintos lenguajes de programación.
·         Sin embargo, la principal desventaja es la complejidad del tema.

OTRAS VENTAJAS
        
·      Independencia de la localización     
Con la independencia de localización de DCOM, la aplicación puede combinar componentes relacionados en máquinas "cercanas" entre sí, en una sola máquina o incluso en el mismo proceso. Incluso si un gran número de pequeños componentes implementan la funcionalidad de un gran módulo lógico, podrán interactuar eficientemente entre ellos.



·         Independencia del lenguaje de programación
Con la independencia de lenguaje de DCOM, los desarrolladores de aplicaciones pueden elegir las herramientas y lenguajes con los que estén más familiarizados. La independencia del lenguaje permite crear componentes en lenguajes de nivel superior como Microsoft Visual Basic, y después re implementarlos en distintos lenguajes como C++ o Java, que permiten tomar ventaja de características avanzadas como multihilo.


·         Independencia del protocolo
DCOM proporciona un marco de seguridad a todos estos protocolos.
Los desarrolladores pueden simplemente utilizar las características proporcionadas por DCOM y asegurar que sus aplicaciones son completamente independiente del protocolo.

FUNCIONES MÍNIMAS DE LOS COMPONENTES

Las siguientes son las funciones mínimas que según Orfali (ver referencia 5), debe tener un componente. (Esta definición incluye tanto lo que ofrece CORBA como lo que ofrece DCOM).

·         Un componente es una pieza empacada de software funcional en si misma que se puede comprar en un mercado de cómputo abierto.

·         Un componente puede combinarse con otros componentes para formar una aplicación completa. Está diseñado para desempeñar un conjunto limitado de tareas dentro del dominio de una aplicación. Los componentes pueden ser objetos finamente granulados tales como un objeto en C++; objetos medianamente granulados tales como un control en una interfase gráfica o objetos gruesamente granulados tales como una aplicación antigua completa.



·          Igual que los objetos del mundo real, un componente puede ser utilizado en maneras totalmente impredecibles por su desarrollador. Típicamente pueden combinarse con otros componentes de la misma familia - llamada suit - usando mecanismos de "enchufar y funcionar " (plug-and-play) .

·         Igual que cualquier objeto, un componente solo puede manipularse a través de su interfase. Sin embargo, la interfase de un componente está separada de su implementación. La interfase es el "contrato" que el componente ex-pone al mundo, Cómo instrumentar interiormente este contrato es asunto del componente. Se puede instrumentar un componente utilizando objetos, código procedural2 o mediante la encapsulación de código existente. CORBA y COM proveen un Lenguaje de Definición de la Interfase (IDL), in-dependiente de cualquier otro lenguaje de desarrollo, que se puede utilizar para especificar las interfases de los componentes. Java soporta interfases como parte del lenguaje.


·     Para enfatizar y facilitar su utilización, los componentes deben poderse agrupar en cajas o paletas de herramientas gráficas desde donde puedan ser utilizados y personalizados. La paleta es un contenedor de componentes. Además, la mayoría de las herramientas proveen lienzos (formas o ventanas) que se pueden utilizar para ensamblar los componentes utilizan-do técnicas de arrastrar y soltar (drag and drop) y otras técnicas visuales. Las formas funcionan también como contenedores visuales de componentes.

·     Un componente debe ser capaz de avisarle al mundo cuando le sucede a él alguna cosa de interés. El componente realiza esto señalando un evento. Otros componentes que tienen interés en este evento pueden suscribirse al mismo. Estos otros componentes recibirán una notificación cuando el evento se dispara. Este tipo de acoplamiento es ideal para unir componentes mediante una herramienta visual.


·   Los componentes tienen estado. Las propiedades pueden identificar y sacar a la superficie esta información; definen las características de un componente. Una propiedad es un atributo discreto con nombre que se puede utilizar, típicamente utilizando un editor dentro de una herramienta gráfica, para leer y modificar el estado de un componente.

·    Un componente debe permitir que su interfase se pueda controlar con un lenguaje (scripting).

·         Un componente debe proveer, cuando se le requiera, información sobre sí mismo. Esto incluye una descripción de sus interfases, propiedades, eventos, calidad de servicio y las suites que soporta.

·       Un componente puede invocarse como un objeto a través de espacios de direcciones, redes, lenguajes, sistemas operativos y herramientas. Es una entidad de software independiente de cualquier sistema o aplicación. Ver siguiente figura tomada del libro de Orfali.



·   Un componente debe proveer un número limitado de operaciones para promover su utilización. En otras palabras el nivel de abstracción debe ser tan alto como sea posible para invitar a que el componente sea reutilizado. 

No hay comentarios:

Publicar un comentario