Ir al contenido principal

COM/DCOM (Component Object Model/ Distributed COM)


TECNOLÓGICO NACIONAL DE 

MÉXICO

Instituto Tecnológico de Iguala


Materia: PROGRAMACIÓN EN

 AMBIENTE CLIENTE/SERVIDOR


PROF. M.C Víctor Manuel Jacobo 

Adán

Elaborado por: José Antonio Guzmán

 German



COM/DCOM


INTRODUCCIÓN.


 A la hora de hablar de computación distribuida, aparece el concepto de programación distribuida, que es un modelo de programación enfocado a desarrollar sistemas distribuidos, abiertos, escalables, transparentes y tolerantes a fallos.

Casi cualquier lenguaje de programación que tenga acceso al más bajo nivel del hardware del sistema puede manejar la programación distribuida, teniendo en cuenta que hace falta una gran cantidad de tiempo y código. La programación distribuida utiliza alguna de las arquitecturas básicas: cliente-servidor, 3- tier, n-tier, objetos distribuidos, etc.

Hoy en día, el diseño de supercomputadoras se sustenta en cuatro importantes tecnologías, de las cuales, las dos primeras que citaremos son las verdaderamente denominadas supercomputadoras.

·         La tecnología de registros vectoriales, creada por Seymour Cray, considerado el padre de la súper computación, quien inventó y patentó diversas tecnologías que condujeron a la creación de máquinas de computación ultra-rápidas.

·         El sistema conocido como M.P.P. (Massively Parallel Processors o Procesadores Masivamente Paralelos), que consiste en la utilización de cientos y, a veces, miles de microprocesadores estrechamente coordinados.

·         La tecnología de computación distribuida propiamente dicha: los clusters y los grids, de los que más tarde hablaremos. 

·          El cuasi-súper cómputo o computación de ciclos redundantes, también llamada computación zombi.

VIDEO INTRODUCTORIO
Lenguajes de programación del lado del Cliente y del lado del Servidor




4.1 CREACION DE SERVIDORES COM

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 pueden 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.

 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.

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 pueden 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. La Figura 1 ilustra esto en la notación de COM

LOS COMPONENTES Y SU REUTILIZACIÓN 
  
MUCHAS APLICACIONES DISTRIBUIDAS NO ESTÁN DESARROLLADAS

Al existir infraestructuras de hardware, software, componentes, al igual que herramientas, se necesita poder integrarlas y nivelarlas para reducir el desarrollo y el tiempo de trabajo y coste. DCOM toma ventaja de forma directa y transparente de los componentes COM y herramientas ya existentes. 

Un gran mercado de todos los componentes disponibles haría posible reducir el tiempo de desarrollo integrando soluciones estandarizadas en las aplicaciones de usuario. Muchos desarrolladores están familiarizados con COM y pueden aplicar fácilmente sus conocimientos a las aplicaciones distribuidas basadas en DCOM.

Cualquier componente que sea desarrollado como una parte de una aplicación distribuida es un candidato para ser reutilizado. Organizando los procesos de desarrollo alrededor del paradigma de los componentes permite continuar aumentando el nivel de funcionalidad en las nuevas aplicaciones y reducir el tiempo de desarrollo.

Diseñando para COM y DCOM se asegura que los componentes creados serán útiles ahora y en el futuro.

4.2 CREACION DE CLIENTE COM

El cliente debe realizar las siguientes tareas:

Iniciar la librería COM

Obtener la interfaz

Manipular el objeto a través de su interfaz

Liberar las interfaces

Finalizar la librería COM

Para iniciar la librería COM hay que llamar al método del API COM CoInitialize:

            hr = CoInitialize(NULL);
            if ( SUCCEEDED(hr) )
            {
                        ...
            }

El método CoInitialize inicializa la librería en el thread de ejecución desde el que se invoque. Es necesario llamar a CoInitialize desde cada thread de la aplicación que quiera acceder a objetos COM.

OBTENER LA INTERFAZ

Para obtener la interfaz inicial llamamos al método CoCreateInstance, este creará una nueva instancia de un objeto COM y nos devolverá un puntero a su interfaz.

            IUnknown *pIUnknown = NULL;
            hr = CoCreateInstance(CLSID_UserInfo, NULL,
                                   CLSCTX_INPROC_SERVER, IID_IUnknown,
                                   (LPVOID *)&pIUnknown);
            if (SUCCEEDED(hr))
            {....}

A través del puntero a IUnknow obtener el puntero a la interfaz IUserInfo

                        hr = pIUnknown->QueryInterface(IID-IUserInfo,
                                   (LPVOID *)&pIUserInfo);
                                   if (SUCCEEDED(hr))
                                               {\\manipulación del objeto}



LIBERAR LAS INTERFACES

Para liberar las interfaces hay que llamar al método Release, si el objeto COM no tiene más interfaces referenciadas se borrara automaticamente:

            pIUserInfo->Release();
            pIUnknown->Release();

FINALIZAR LAS LIBRERIAS

La librería COM se finaliza a través del método CoUninitialize, una vez llamado a este método no se podrá seguir llamando a funciones de la librería COM ni manipulando objetos COM.


TIPOS DE COMPONENTES COM

In-Process ,se cargan en el mismo espacio de procesos que la aplicación cliente.

•Locales, se ejecutan en un proceso separado en el mismo computador.

•Remotos, se ejecutan en otro computador.

DCOM (Distributed COM)

DCOM es la extensión del Component Object Model a los ambientes distribuidos, que define los mecanismos de conexión y el protocolo de red necesario para hacer llamadas a procedimientos remotos orientadas a objetos, a nivel de aplicación, que lo vuelven útil para sistemas distribuidos de todo tipo basados en componentes

En DCOM, la interacción entre objetos cliente y objetos servidor se realiza mediante un mecanismo de comunicación RPC



Características principales:

LOS COMPONENTES Y SU REUTILIZACIÓN

Cualquier componente que sea desarrollado como una parte de una aplicación distribuida es un candidato para ser reutilizado. Organizando los procesos de desarrollo alrededor del paradigma de los componentes permite continuar aumentando el nivel de funcionalidad en las nuevas aplicaciones y reducir el tiempo de desarrollo.

INDEPENDENCIA DE LA LOCALIZACIÓN

DCOM olvida completamente la localización de los componentes, ya esté en el mismo proceso que el cliente o en una máquina en cualquier lugar del mundo. En cualquier caso, la forma en la que el cliente se conecta a un componente y llama a los métodos de éste es identica. No es solo que DCOM no necesite cambios en el código fuente, sino que además no necesita que el programa sea recompilado. Una simple reconfiguración cambia la forma en la que los componentes se conectan entre sí.

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.



INDEPENDENCIA DEL PROTOCOLO

Muchas aplicaciones distribuidas tienen que ser integradas en la infraestructura de una red existente. Necesitar un protocolo específico de red, obligará a mejorar todos los cliente, lo que es inaceptable en muchas situaciones. Los desarrolladores de aplicaciones tienen que tener cuidado de mantener la aplicación lo más independiente posible de la infraestructura de la red.

DCOM proporciona esta transparencia: DCOM puede utilizar cualquier protocolo de transporte, como TCP/IP, UDP, IPX/SPX y NetBIOS. DCOM proporciona un marco de seguridad a todos estos protocolos.





4.3 AUTOMATIZACION

Basado en la Biblioteca de plantillas estándar (STL), ATL amplía el entorno de desarrollo de Visual Studio con asistentes utilizados para la automatización objeto COM. ATL facilita la programación de objetos COM para la invocación guión de páginas Active Server (ASP).

ATL se puede utilizar para crear una variedad de objetos, incluyendo cuadros de diálogo y los controles de Internet Explorer. ATL soporta características de COM clave, como los controles ActiveX, interfaces duales y puntos de conexión.

4.4 ATL (Active Template Library)

Es un conjunto de clases de C++ basadas en plantillas que permiten crear objetos pequeños, rápidos (COM) del modelo de objetos componentes. Tiene compatibilidad especial para características COM clave, incluidas las implementaciones comunes, interfaces duales, interfaces COM estándar de enumeradores, puntos de conexión, rasga interfaces, y controles ActiveX.

Si tiene muchos programación ATL, deseará obtener más información sobre atributos, una característica nueva de Visual C++ .NET que está diseñado para simplificar la programación COM. Para obtener más información, vea Programación con atributos.

4.5 DCOM(Distributed Component Object Model)

En español Modelo de Objetos de Componentes Distribuidos, es una tecnología propietaria de Microsoft para desarrollar componentes software distribuidos sobre varios ordenadores y que se comunican entre sí. Extiende el modelo COM de Microsoft y proporciona el sustrato de comunicación entre la infraestructura del servidor de aplicaciones COM+ de Microsoft. Ha sido abandonada en favor del framework .NET.1 2

La adición de la "D" a COM fue debido al uso extensivo de DCE/RPC, o más específicamente la versión mejorada de Microsoft, conocida como MSRPC.

En términos de las extensiones que añade a COM, DCOM tenía que resolver los problemas de
    Aplanamiento - Serializar y deserializar los argumentos y valores de retorno de las llamadas a los métodos "sobre el cable".

    Recolección de basura distribuida, asegurándose que las referencias mantenidas por clientes de las interfaces sean liberadas cuando, por ejemplo, el proceso cliente ha caído o la conexión de red se pierde.

Uno de los factores clave para resolver estos problemas es el uso de DCE/RPC como el mecanismo RPC subyacente bajo DCOM. DCE/RPC define reglas estrictas en cuanto al aplanamiento y a quién es responsable de liberar la memoria.

DCOM fue uno de los mayores competidores de CORBA. Los defensores de ambas tecnologías sostenían que algún día serían el modelo de código y servicios sobre Internet. Sin embargo, las dificultades que suponía conseguir que estas tecnologías funcionasen a través de cortafuegos y sobre máquinas inseguras o desconocidas, significó que las peticiones HTTP normales, combinadas con los navegadores web les ganasen la partida. Microsoft, en su momento intentó y fracasó anticiparse a esto añadiendo un transporte extra HTTP a DCE/RPC denominado "ncacn_http".




Conclucion:

Los sistemas distribuidos abarcan una cantidad de aspectos considerables, sistemas operativos, comunicaciones, modelos de programación, etc, lo que hace que sus beneficios se pueden traducir en complejidades al momento de su implantación.
 
Existen ciertos aspectos que requieren cuidado especial ya que pueden pasar de ser una ventaja a una desventaja, por ejemplo, el manejo de fallos, el control de la concurrencia, etc.
 
Es importante señalar que muchas tecnologías están en constante desarrollo y maduración, esto requiere de un estudio a profundidad de los factores que intervienen en cada aspecto de los sistemas distribuidos antes de apostar por alguna tecnología en especial.  Es claro que la evolución constante en la tecnología sigue impulsando y estableciendo nuevos retos en el desarrollo de los sistemas distribuidos situación que se ve casi imposible de revertir.

Recientemente, con el éxito de Internet, han surgido proyectos de computación distribuida a nivel mundial, en los que programas especiales aprovechan el tiempo ocioso de miles de ordenadores personales para realizar grandes tareas. Consiste en que un servidor o grupo de servidores distribuyen trabajo de procesamiento a un grupo de computadoras voluntarias.

VIDEO CONCLUCION



REFERENCIAS:

  • ·         Distributed Systems: Concepts and Design .G. Coulouris, J. Dollimore, T. Kindberg, .Editorial: Addison Wesley,2005, 4th edition.
  •       Sistemas Distribuidos (español –versión anteior -) .George Coulouris; Jean Dollimore; Sebastián Dormido; Tim Kindberg .Editorial: Addison Wesley | 3era Edición .Idioma: Español
  •       Distributed Systems: Principles and Paradigms** .Andrew S. Tanenbaum, Maarten van Oteen .Editorial: Prentice Hall; United States 2nd edition (Oct 2, 2006)
  •       L/S 004.738.5.057.4 SNE, Programming Web services with SOAP. Snell, James Pedro J. Muñoz Merino Diseño de Aplicaciones Telemáticas 23.
  •  ·       L/D 004.438 JAVA BUI, Building Web services with Java : making sense of XML, Soap, WSDL and UDDI. Graham, Steve.

Comentarios