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