objeto y componente distribuidos dcom

24
Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal TRABAJO DE INVESTIGACIÓN SISTEMAS INFORMÁTICOS DISTRIBUÍDOS TEMA: Objetos y componentes distribuidos - Microsoft. Actualización de COM y DCOM. Uso en la actualidad. Tecnología Actual TUTOR: ING. PABLO A. SACCO Nombre de los Alumnos: Rosales Mariela, legajo 17998 DNI 24719263 Gómez Reinaldo, legajo 17989 DNI 21974777 Año del Cursado: 2010 Page 1 of 24

Upload: mariela-rosales

Post on 26-Oct-2015

475 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

TRABAJO DE INVESTIGACIÓNSISTEMAS INFORMÁTICOS

DISTRIBUÍDOS

TEMA:

Objetos y componentes distribuidos - Microsoft. Actualización de COM y

DCOM. Uso en la actualidad.

Tecnología Actual

TUTOR: ING. PABLO A. SACCO

Nombre de los Alumnos:

Rosales Mariela, legajo 17998 DNI 24719263

Gómez Reinaldo, legajo 17989 DNI 21974777

Año del Cursado: 2010

Page 1 of 21

Page 2: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Distributed Component Object Model (DCOM), 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í. 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.

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

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.

COM Component Object Model, una plataforma de componentes desarrollada por Microsoft;

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.

DCE Remote Procedure Call o bien DCE RPC es un sistema de llamada a procedimiento remoto del conjunto de software OSF DCE.

DCE RPC fue encargado por la fundación Open Software Foundation. Una de las compañías clave que contribuyó fue Apollo.

DCOM era 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" (Connection-based, over HTTP). Esto fue resucitada más adelante para apoyar una conexión 2003 del intercambio sobre el HTTP.

Versiones y puestas en práctica alternativas

Page 2 of 21

Page 3: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

El grupo abierto hace una puesta en práctica de DCOM llamar COMsource. Su código de fuente está disponible, junto con la documentación completa y completa, suficiente utilizar y también poner una versión en ejecución interoperable de DCOM. Según esa documentación, COMsource viene directamente de Windows NT el código de fuente 4.0, e incluso incluye el código de fuente para a Servicio del registro de Windows NT.

El equipo también está poniendo DCOM en ejecución para los propósitos binarios de la interoperabilidad; no están interesados actualmente en el lado del establecimiento de una red de DCOM, que se proporciona cerca MSRPC. Se restringen a poner en ejecución NDR (Representación de datos de la red) con el API de Microsoft, pero están confiados a hacerlo tan compatible como sea posible con MSRPC.

j-Interop es una fuente abierta (LGPL) puesta en práctica de MSRPC puramente adentro Java, usos de soporte del cliente de DCOM en Java en cualquier plataforma que se comunica con los servidores de DCOM.

J-Integra para COM es una puesta en práctica pura comercial madura de Java del protocolo del alambre de DCOM permitiendo el acceso a los componentes de COM de los clientes de Java, y Java se opone de clientes de COM.

EntireX DCOM está una puesta en práctica comercial cerca Software AG para Windows, AIX, HP/UX, Solaris, Linux, AS/400, z/OS, z/VM, y BS2000/OSD.

Procedimiento

Para tener acceso a ajustes de DCOM en un Windows 2000 de la computadora, Windows corrientes XP y anterior, tecleo Inicio > Ejecutar, y tecleamos “dcomcnfg".

Esto abre el diálogo distribuido de las características de la configuración de COM.

Vea también

ActiveX Intercambio de datos dinámico (DDE) .NET Remoting

Acoplamientos externos

Los grupos abiertos COMsource j-Interop

Microsoft APIs y armazones

Gráficos

Encargado de ventana de escritorio · DirectX · Direct3D · GDI · Fundación de la presentación de

Windows · Sistema del color de Windows · Adquisición de la imagen de Windows · Componente de

la proyección de imagen de Windows

Audio DirectSound · DirectMusic · DirectX plugin · XACT · Discurso API

MultimediasDirectShow · Objetos de los medios de DirectX · Aceleración del vídeo de DirectX · Medios de

Windows · Fundación de los medios · Imagen que domina el API

Web MSHTML · MSXML · Plataforma de RSS · JScript · VBScript · BHO · XMLHttpRequest ·

Page 3 of 21

Page 4: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Adminículos de SideBar

Acceso de los datos

Componentes del acceso de los datos de Microsoft · Motor extensible del almacenaje · ADO.NET 

Marco de la entidad de ADO.NET · Marco de la sinc. · Motor de jet

Establecimiento de una red

Winsock (LSP) · Núcleo del Winsock · Plataforma de filtración · Especificación de interfaz del

conductor de la red · Reunión de Windows · PEDACITOS · P2P API

Comunicación Mensajería API · Telefonía API

Administración ygerencia

Consola Win32 · Anfitrión de la escritura de Windows · Instrumentación de la gerencia de

Windows · Windows PowerShell · Planificador de tarea · Archivos fuera de línea · Copy de la

sombra · Instalador de Windows · Divulgación de error de Windows · Registro del acontecimiento

de Windows · Sistema común del fichero de diario

Modelo componente COM · COM+ · ActiveX · Modelo componente distribuido del objeto · Marco de .NET

BibliotecasClase de la fundación de Microsoft (MFC) · Biblioteca activa de la plantilla (ATL) · Biblioteca de la

plantilla de Windows (WTL)

Desarrollo del conductor

Modelo del conductor de Windows (Arquitectura del conductor de la difusión) · Fundación del

conductor de Windows (KMDF · UMDF)

SeguridadAPI Crypto (CAPICOM) · Windows CardSpace · Protección API de los datos · Interfaz del

abastecedor de la ayuda de la seguridad

.NET

Marco de .NET · ASP.NET · ADO.NET · Remoting · Fundación de la presentación de Windows ·

Fundación del Workflow de Windows · Fundación de la comunicación de Windows · Windows

CardSpace · XNA · Silverlight · Biblioteca paralela de la tarea

Fábricas del software Fábrica de EFx · Biblioteca de la empresa · UI compuesto · CCF · CSF

IPC MSRPC · Pipas nombradas · archivo Memoria-traz · DDE · MailSlot

Accesibilidad Accesibilidad activa · Automatización de UI

Texto y multilingüeayuda

El texto mantiene el marco · Modelo del objeto del texto · Redactor del método de entrada ·

Paquete del interfaz de la lengua · Interfaz utilizador multilingüe · Uniscribe

JuegosDirect3D · D3DX · DirectSound · DirectInput · DirectPlay · DirectMusic · DirectX manejado ·

Microsoft XNA

Page 4 of 21

Page 5: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Qué hace a DCOM tan importante?– Microsoft– Viene con NT 4.0, Win 9x– DCOM es el fundamento tanto de componentes como de Internet– ActiveX son objetos DCOM– MTS, coordinador de transacciones entre componentes COM

• Visual J++ incluye mapeo para DCOM• Clientes Java pueden usar DCOM para invocar objetos remotos en Java así como componentes COM en

otros lenguajes• Distribución NO basada en RMI/CORBA• La JVM de Microsoft hace que los applets aparezcan como componentes COM• DCOM/Java es un serio contendor a CORBA/Java• DCOM al igual que CORBA separa la interface del objeto de su implementación.• Microsoft IDL está basado en DCE (con compatible con CORBA)• Microsoft también provee un IDL para OLE automation, llamado ODL.• IDL y ODL están incluídos en NT 4.0• DCOM no soporta herencia múltiple• DCOM pueden soportar múltiples interfaces por componente• DCOM logra el reuso vía confinamiento y agregación en vez de herencia.• Un objeto DCOM no es un objeto en el sentido de O.O.• Interfaces DCOM NO tienen estado y no pueden ser instanciados para crear una única referencia a

objeto.• Una interface DCOM es simplemente un grupo de funciones relacionadas• Al igual que CORBA, DCOM provee interfaces estáticas y dinámicas.• El Type Library es la versión de DCOM del Interface Repository.• Los precompiladores de DCOM mantienen este TL• CORBA tiene objetos persistentes con ObjRefs persistentes.• DCOM tiene objetos sin estado temporales (transcient) los cuales pueden ser asociados con un Contexto

vía un moniker.• Un moniker DCOM es un objeto que actua como un nombre alias persistente para otro objeto.• Una interface DCOM es una colección de llamadas a funciones.• Interfaces independientes de la implementación.• DCOM define interoperabilidad binaria para cómo accesar su interface usando punteros y proxies

remotos.• Microsoft provee lenaguajes de mapeo para C++, VB y Java.• Una interface DCOM es definida como una API binaria de bajo nivel basado en una tabla de

apuntadores.• Para acceder una interface, los clientes DCOM utilizan punteros a un arreglo de funciones conocida

como virtual table (vtable).• Las funciones que son apuntadas por la vtable son la implementación de los métodos del servidor del

objeto.• Cada objeto DCOM tiene una o más vtables que definen el contrato entre la implementación y sus

clientes• En tiempo de ejecución cada interface es única identificada mediante Interface Identifier (IID)• Un IID es un GUID generado para las interfaces DCOM• GUID son únicos de 128 bits• El IID permite a un cliente univacamente preguntar por un objeto que soporte una interface.• Clientes hacen consultas a través de la función QueryInterface que todos los objetos soporta a través de

la interface IUnknown• Un objeto DCOM es un componente que soporta una o más interfaces.• Una interface DCOM se refiere a un grupo predefinido de funciones relacionadas.• Una clase DCOM implementa una o más interfaces la cual es identificada por un id único de 128 bits

(Class ID - CLSID).• Un objeto DCOM es una instancia en ejecución de una clase.• Los clientes siempre tratan con objetos DCOM a través de punteros, nunca se accede directamente.• Objetos DCOM no soportan identificadores de objetos únicos.

Page 5 of 21

Page 6: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

• Todos los objetos DCOM tienen que implementar la interface IUnknown a través de la cual se controla el ciclo de vida de un objeto.

• Se utiliza IUnkown para consultar un objeto acerca de sus interface y métodos y obtener un puntero a ellas.

• Un servidor DCOM es un código (dll, exe, class) que contiene uno o más clases de objeto con su propio CLSID.

• Los clientes preguntan por un objeto dado su CLSID, DCOM carga el código servidor y pregunta a éste por la creación de tal objeto.

• El servidor tiene que proveer una clase factory para crear un nuevo objeto.• Una vez el objeto es creado, un puntero a su interface principal es retornada al cliente.• Un servidor DCOM provee la estructura necesaria alrededor de un objeto para hacerlo disponible a los

clientes.• Un servidor DCOM tiene:

– Implementar una interface “class factory” (IClassFactory)• crea instancias de una clase.• Si la clase soporta licenciamiento, tiene que implementar IClassFactory2

– Registrar las clases que éste soporta• registrar un CLSID por cada clase que soporte en el NT Registry.• Ejecutado en tiempo de instalación

– Inicializar la librería DCOM• provee servicios en tiempo de ejecución• CoInitializate a la API DCOM

– Verificar que la librería sea compatible• invocando CoBuildVersion

– Provee un mecanismo de descargar (unload)– Desinicializar la librería DCOM (CoUninitialize)

• Un servidor DCOM puede ser implementado de tres formas:– Servidores In-Process (DLL)– Servidores Locales (servidores separados dentro de la misma máquina - EXE)– Servidores remotos

• Para el cliente debe ser totalmente transparente el tipo de servidor, sólo ve un puntero a interface

Proceso de desarrollo con DCOM/Java

• Crear el IDL DCOM (y ODL) para su objeto• Generar GUIDs para sus interfaces IDL• Crear el archivo de type library• Crear los wrappers java para las clases DCOM• Implementar sus clases DCOM en Java• Compilar su implementación• Registrar su clase java• Escribir el código cliente• Compilar el cliente• Registrar el cliente• Iniciar el Cliente

Page 6 of 21

Page 7: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Crear IDL

// Calc.idl[

uuid(1689CB21-2ADE-11D0-892E-00A024638502),version (1.0)

]library Calculator{

[ object,uuid(1689CB22-2ADE-11D0-892E-00A024638502),pointer_default(unique),oleautomation]

interface ICalc : IUnknown{

import “oaidl.idl”;HRESULT sumar([in] int a, [in] int b, [out, retval] int* retval);HRESULT restar([in] int a, [in] int b,[out, retval] int* retval);HRESULT multiplicar([in] int a, [in] int b,[out, retval] int* retval);HRESULT dividir([in] int a, [in] int b,[out, retval] int* retval); };

importlib(“stdole32.tlb”);[uuid(1689CB23-2ADE-11D0-892E-00A024638502),]coclass Calc{

[default] interface ICalc;};

};

Page 7 of 21

Crear IDL DCOM

Implemente servidor

MIDL

Class Proxy (.class)

Interface

Implemente el cliente

jview

Summary.txt

1

3

4

5

8

11

GenerarGUIDs

2

JavaTLB

JavaReg10

jvc9

Interface

JavaReg7

jvc6

Cliente Servidor

Page 8: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

La arquitectura DCOM   

DCOM es una extensión de COM, y éste define como los componentes y sus clientes interactuan 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. La Figura 1 ilustra esto en la notación de COM

Figura 1. Componentes COM en el mismo proceso.

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. La Figura 2 ilustra como las librería de COM/DCOM proporcionan la forma de comunicar el cliente y el componente:

Figure 2. Componentes COM en procesos distintos.

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.

La Figura 3 representa la arquitectura DCOM en su conjunto: Las librería 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.

Figura 3. DCOM: componentes COM en distintas máquinas.

 

Page 8 of 21

Page 9: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

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.

 Independencia de la localización   

Cuando se comienza a implementar una aplicación distribuida en una red reak, aparecen distintos conflictos en el diseño:

Los componentes que interactuan más a menudo deberían estar localizados más cerca. Algunos componentes solo pueden ser ejecutados en máquinas específicas o lugares específicos.

Los componentes más pequeños aumentan la flexibilidad, pero aumentan el tráfico de red.

Los componentes grandes reducen el tráfico de red, pero también reducen la flexibilidad.

Con DCOM, estos temas críticos de diseño pueden ser tratados se forma bastante sencilla, ya que estos detalles no se especifican en el código fuente. 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í.

La independencia de localización en DCOM simplifica enormemente las tarea de los componentes de aplicaciones distribuidas para alcanzar un nivel de funcionamiento óptimo. Supongamos, por ejemplo, que cierto componente debe ser localizado en una máquina específica en un lugar determinado. Si la aplicación tiene numerosos componentes pequeños, se puede reducir la carga de la red situándolos en la misma LAN, en la misma máquina, o incluso en el mismo proceso. Si la aplicación está compuesta por un pequeño número de grandes componentes, la carga de red es menor y no es un problema, por tanto se pueden poner en las máquinas más rápidas disponibles independientemente de donde esten situadas.

La Figura 4 representa como un "componente de validación" puede ser situado en la misma máquina, cuando el ancho de red entre la máquina "cliente" y la máquina "middle-tier" es suficiente, y en la máquina "servidor", cuando el cliente accede a la aplicación a través de una red lenta.

Page 9 of 21

Page 10: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Figura 4. Independencia de localización

Con la independencia de localización de DCOM, la aplicación puede combinar componentes relacionados en máquinas "cercanas" entre si, 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   

Una cuestión importante durante el diseño e implementación de una aplicación distribuida es la elección del lenguaje o herramienta de programación. La elección es generalmente un termino medio entre el coste de desarrollo, la experiencia disponible y la funcionalidad. Como una extensión de COM, DCOM es completamente independiente del lenguaje. Virtualmentem cualquier lenguaje puede ser utilizado para crear componentes COM, y estos componentes puede ser utilizado por muchos más lenguajes y herramientas. Java, Microsoft Visual C++, Microsoft Visual Basic, Delphi, PowerBuilder, y Micro Focus COBOL interactuan perfectamente con DCOM.

Con la independencia de lenguaje de DCOM, los desarrolladores de aplicaciones puede 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 reimplementarlos en distintos lenguajes como C++ o Java, que permiten tomar ventaja de características avanzadas como multihilo.

 

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.

Los desarrolladores pueden simplemente utilizar las características proporcionadas por DCOM y asegurar que sus aplicaciones son completamente independientes del protocolo.

Page 10 of 21

Page 11: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

 

Enlaces DCOM   

http://www.microsoft.com/Com/    Página oficial de Microsoft

http://msdn.microsoft.com/library/en-us/dndcom/html/msdn_dcomarch.asp    Arquitectura DCOM

http://msdn.microsoft.com/library/en-us/dndcom/html/msdn_dcomtec.asp    Resumen Técnico de DCOM

http://www.cvc.uab.es/shared/teach/a20383/practiques/    Introducción al modelo COM

http://www.gsi.dit.upm.es/~jcg/is/curso97-98/grupos/y3/html_doc/indice2.htm    OLE/COM/DCOM

http://www.dis.eafit.edu.co/areas/telematica/online/corba/intro/     Objetos distribuidos CORBA/RMI/DCOM

http://www.gsyc.inf.uc3m.es/~jjmunoz/lro/9798/copia/%257Eatrigo/datos/indice.html    Programación COM/DCOM

http://club.idecnet.com/~chavesj/dcom/    DCOM for children

http://www.codeguru.com/activex/index.shtml    Código fuente ActiveX/COM/DCOM

http://www.cs.concordia.ca/~teaching/comp690j/dcomTutorial/comTutorial.html    Tutorial DCOM/COM

http://www.codeproject.com/com    Código fuente COM/DCOM

http://journal.iftech.com/articles/dcom_1/    Excelente Tutorial de COM/DCOM

http://www.cs.wustl.edu/~schmidt/submit/Paper.html    DCOM y CORBA (comparación)

http://shrike.depaul.edu/~tliu/ds520/link.htm    Links ActiveX y DCOM

http://www.dalmatian.com/com_dcom.htm    DCOM

http://swt.informatik.uni-jena.de/~stolle/f/CompSem2000/works/COM-paper_html/    Introducción a COM, DCOM y COM+

http://sern.ucalgary.ca/Courses/CPSC/547/W2000/webnotes/COM/COM.html    ActiveX, Com y DCOM

http://tochna.technion.ac.il/project/LearnDCOM/html/LearnDCOM.html    COM/DCOM/ActiveX

Modelo de objetos de componentes distribuido (DCOM)

Los usuarios de procesos distribuidos buscan una infraestructura de aplicación común para crear aplicaciones con múltiples componentes que se ejecutan en diversas plataformas. Hay tres bloques fundamentales con los que se construyen esas aplicaciones:

← Comunicaciones (uso de llamadas a procedimientos remotos) ← Nombres

← Seguridad (comunicaciones de llamada a procedimiento remoto autenticadas)

El Modelo de objetos de componentes distribuido (DCOM) integra esos tres bloques para proporcionar un transporte de componentes de software que funcionen unos con otros a través de una red.

Page 11 of 21

Page 12: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

DCOM utiliza llamadas a procedimientos remotos (RPC, Remote Procedure Call) y las funciones de seguridad de Windows NT, como los permisos, para permitir que las aplicaciones se comuniquen a través de redes. Además, DCOM proporciona un modelo de programación para programadores de software que se puede usar para crear aplicaciones distribuidas.

Un ejemplo de aplicación DCOM es un servicio de información de cotizaciones de bolsa. Mediante DCOM, el servidor distribuye el precio de las acciones a los clientes de la red. Una segunda conversación DCOM toma esos datos y los compara con las normas bursátiles almacenadas en un objeto en un tercer equipo. Por ejemplo, es posible crear una regla que especifique cuándo se deben comprar unas acciones determinadas. Si el precio cae por debajo de cierto nivel, se enviará una notificación de compra. El resultado de la comparación entre datos y normas crea una recomendación de compra que se muestra en la pantalla de un cuarto equipo. DCOM proporciona la infraestructura que conecta los objetos distribuidos para que los clientes reciban la información que necesitan.

DCOM utiliza las mismas herramientas y tecnologías que el Modelo de objetos de componentes (COM). COM es la base de OLE y es el estándar por el que los componentes de software utilizan otros componentes, o son utilizados por ellos. De este modo se integra la funcionalidad de aplicaciones diversas. DCOM es OLE en una red; es decir, COM con un cable más largo. Se trata de un transporte rápido para las aplicaciones distribuidas creadas con COM.

Las aplicaciones COM (OLE) existentes pueden utilizar DCOM. Para ello requieren algunas modificaciones menores en la configuración del sistema, pero ninguna en el código de la aplicación en sí. El modelo de programación es idéntico a las tecnologías ActiveX, de modo que la integración puede hacerse directamente. Pruebe las aplicaciones OLE existentes antes de ponerlas en funcionamiento con DCOM.

DCOM incluye las características siguientes:

← Distribución: Ejecutar aplicaciones en una red, incluso a través de Internet. ← Activación remota: Iniciar una aplicación mediante una llamada a un componente, a diferencia de RPC.

← Seguridad: Controlar la seguridad de inicio, acceso y contexto. Los administradores usan la seguridad de Windows NT para establecer permisos para las aplicaciones DCOM y los modifican para la ejecución local y remota.

← Herramienta de configuración DCOM: Configurar aplicaciones de 32 bits para comunicarse a través de una red y establecer las propiedades de la aplicación.

Llamadas a procedimientos remotos y DCOM

Las llamadas a procedimientos remotos (RPC) constituyen la base de las comunicaciones e interoperabilidad entre los distintos servicios DCOM. RPC permite que una aplicación ejecute procedimientos en un equipo remoto. En una aplicación DCOM, un programa usa la red como un medio para ejecutar componentes individuales en otros hosts en ubicaciones remotas.

Por ejemplo, una aplicación cliente ejecuta una llamada a un "código de etiqueta" que ocupa el lugar de un procedimiento local. El "código de etiqueta" utiliza las funciones de comunicación y conversión de datos de una biblioteca RPC para ejecutar la rutina solicitada en un proceso de un servidor remoto.

El código de etiqueta es un fragmento de código diseñado para emular una rutina local cuando la rutina reside en realidad en un equipo remoto.

DCOM utiliza llamadas a procedimientos remotos para permitir a las aplicaciones existentes interactuar en múltiples equipos a través de una red. El proceso siguiente describe el flujo de una llamada de una aplicación cliente a un objeto del servidor.

1. Una aplicación cliente inicia una RPC.

Page 12 of 21

Page 13: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

2. La etiqueta de RPC del cliente empaqueta la llamada y entonces la biblioteca RPC en tiempo de ejecución transmite el paquete al servidor.

3. La biblioteca de RPC en tiempo de ejecución del servidor recibe el paquete y lo reenvía a su etiqueta de RPC, que lo convierte en una llamada a procedimiento remoto,

4. Se ejecuta la llamada al procedimiento remoto.

5. La etiqueta de RPC del servidor empaqueta el resultado del procedimiento y, entonces, la biblioteca RPC en tiempo de ejecución transmite el paquete al cliente que ejecuta la aplicación.

6. La biblioteca RPC en tiempo de ejecución del cliente recibe el paquete y lo reenvía a la etiqueta del cliente, que a su vez desempaqueta los datos para la aplicación cliente.

Configuración de DCOM

DCOM se instala durante la instalación de Windows NT. Puede utilizar el cuadro de diálogo Propiedades de Configuración COM distribuida para activar DCOM y establecer sus propiedades. Para tener acceso a esta herramienta escriba dcomcnfg en el símbolo del sistema. Dcomcnfg.exe se encuentra en la carpeta raíz_sistema\System32.

Opciones de configuración de DCOM

Las opciones de configuración de DCOM disponibles en el cuadro de diálogo Propiedades de Configuración COM distribuida son:

← Aplicaciones: Ver las aplicaciones actuales y establecer las propiedades de cada una de ellas. Para ver y configurar las propiedades, seleccione la aplicación y haga clic en Propiedades. Aparecerán las fichas siguientes:

← General describe las propiedades de la aplicación DCOM, el nombre y tipo de aplicación (así como si se encuentra en el equipo local o en otro equipo de la red), y la ruta de acceso.

← La ficha Localización se utiliza para buscar el equipo correcto para una aplicación dada. Un administrador puede, mediante esta ficha, preparar aplicaciones para que se ejecuten en el equipo que contiene los datos, en un equipo local o en algún otro equipo en la red.

← Seguridad se utiliza para establecer los permisos siguientes: Acceso para permitir o denegar a usuarios o grupos el acceso a la aplicación; Inicio para permitir o denegar a los usuarios o grupos la capacidad de iniciar la aplicación; y Configuración para permitir a los usuarios o grupos ver o modificar la configuración de la aplicación almacenada en el registro.

← Identidad contiene las opciones de cuenta de usuario que permiten al administrador especificar los permisos que deben utilizarse para ejecutar el objeto. Las opciones son Usuario interactivo, Usuario que inicia o Este usuario. La opción Este usuario permite especificar una cuenta de usuario o de servicio.

← Propiedades predeterminadas: Activar DCOM en el equipo local y establecer las propiedades de comunicación predeterminadas, como Autentificación predeterminada y Nivel de representación predeterminado. Las propiedades de Autentificación predeterminada definen la seguridad a nivel de paquetes para las comunicaciones entre aplicaciones. El Nivel de representación predeterminado especifica el nivel de permisos que concede una aplicación cliente a una aplicación servidora para realizar tareas de procesamiento en su nombre.

← Seguridad predeterminada: Establecer los permisos de seguridad predeterminados para Acceso, Inicio y Configuración.

Page 13 of 21

Page 14: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Los equipos en los que se ejecutan la aplicación cliente y la aplicación servidora deben estar configurados para DCOM. En el equipo que actúa como cliente es necesario especificar la ubicación de la aplicación servidora que se va a iniciar o a la que se va a tener acceso. En el equipo en que se ejecuta la aplicación servidora hay que especificar la cuenta de usuario con permiso de acceso o de inicio de la aplicación, y la cuenta de usuario que se utilizará para ejecutarla.

Windows esta compuesto por componentes

Dichos componentes siguen una especificación: COMOLE fue el precursor de COM

– OLE (1991) para creación de documentos compuestos– Previo a OLE -> portapapel y DDE– En 1993 apareció OLE 2.0 el cual dio origen a COM– Con OLE 2.0 aparece “automaticación” -> controles OLE u OCX

• Hechos– OO– Desarrollo basado en componentes– Consecuencia -> reutilización

• El desarrollo hoy en día debe enfocarse a “pegar” lógicamente componentes y desarrollar componentes de NEGOCIO que faciliten la reutilización

• Problemas de la reutilización– Multiples lenguajes– Multiples S.O.– Aún en mismos lenguajes – compatibilidad binaria –

• Como se puede realizar código?– Cut & Paste dentro de un mismo lenguaje– En OO dependiendo del lenguaje (C++, Java)

• Se tiene abstracción, encapsulamiento y herencia– Encapsulamiento y Herencia facilita la reutilización de forma limitada– El problema es estos objetos NO pueden ser reutilizados en otros lenguajes– Tambien existe incompatibilidades entre lenguajes iguales

• Binario y aún en fuente.

Solución a los problemas planteados anteriormente

• Un Modelo de Componentes es una especificación en la que se define entre otros:– Estructura de componente, comunicación entre componentes, manipulación por parte de los

ambientes de desarrolladores.

• Existen 3 modelos:– COM, JavaBeans y CORBA– CORBA en sí mismo NO es un modelo de componentes.

• Permite que componentes u objetos escritos en diferentes lenguajes se comuniquen entre sí

– JavaBean muy ligado a Java– COM es una especificación binaria– Un objeto COM puede crearse usando cualquier lenguaje, lo que importa es que la imagen

binaria de ese objeto cumpla con la especificación COM–

Que es COM?– COM es una especificación que define modelos de componentes binarios.

• COM NO es un Sistema, COM NO es una Librería.

• Concepto Fundamental de COM:– Separación entre la Interfaz Pública de un Componente y si Implementación.

Page 14 of 21

Page 15: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

– Interfaces COM, tablas de métodos o clases de objetos• Un componente COM es un objeto que Implementa una o más interfaces.

– Tablas de punteros a métodos• Terminología:

– Componente COM: Análogo a un objeto C++ aunque difiere– Interfaz COM: conjunto de servicios expuestos por un componente COM, físicamente la interfaz

es una tabla de punteros– Servidor: los componentes COM se alojan en DLL o EXE. Son contenedores.– Cliente: aplicación que hace uso e los servicios de un componente COM

¿Qué es una Interfaz?

• Un usuario de un componente COM NO tiene porque conocer la implementación.• Basta con conocer las interfaces disponibles en el objeto.• Una INTERFAZ es una tabla formada por PUNTEROS a métodos implementados por un cierto

objeto.– Una Interfaz es como una clase abstracta.

• Al crear un Componente COM hay que decidir que Interfaces implementará.• Implementar una Interfaz significa que el objeto a crear tendrá que codificar TODOS los métodos

indicados en ella.• Para utilizar un cierto objeto, solo es preciso saber como recuperar un puntero a cualquiera de

sus interfaces

¿Qué es un objeto COM?

• Un objeto COM es el motor que ejecuta los metodos definidos en las interfaces.• Se utiliza el mecanismo de herencia para obtener la espec de la interfaz y otros aspectos COM.• Se crea una nueva clase que derive de todas las interfaces COM.• Otros aspectos COM:

– Control de ciclo de vida

Page 15 of 21

Estructura de una Interfaz

Una interfaz es una tabla con punteros a funciones.Equivalente a una clase abstracta

IArchivo *lpArchivo

lpArchivo->Escribir

IArchivo

Abrir()=0;Escribir()=0;Leer()=0;Cerrar()=0;

Page 16: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

– Resolución de interfaces– Se utiliza la interfaz IUnkown para este objetivo

• En conclusión un objeto COM implementará todos los métodos de todas las interfaces definidas + los métodos de la interfaz Iunknown

• Un cliente NUNCA tiene acceso directo al objeto, lo hace a través de un puntero a una de sus interfaces de negocio o a través de IUnknown

¿Qué es un servidor COM?• Un objeto COM no existe de forma aislada, forman parte de Servidores COM. (Contenedores)• Hay dos clases de servidores:

– DLL: Se ejecuta en el mismo espacio de direcciones del cliente– Ejecutables: Se ejecuta otro programa con el cual se debe comunicar el cliente, ya sea mediante

IPC (local) o RPC (remoto)• Los servidores además de alojar y ejecutar los componentes realizan otras funciones como:

– Registrar componentes– Crear factorias

Page 16 of 21

Estructura de un objeto

AddRed();Release();QueryInterface();

CMiArchivoAbrir();Escribir();Leer();Cerrar();

IUnknown

IArchivo

Page 17: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Page 17 of 21

Introducción a DCOM (2)

Utilizado en Clientes y Servidores en máquinas diferentes

Iarchivo *lpArchivo Proxy COMCliente.exe

RPC

Stub COM CMiArchivo

Servidor.exeIArchivo

Servidor remoto(DCOM)

Computador A

Computador B

Page 18: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

• Interfaz: simple tabla de punteros mediante la cual es posible llamar a metodos disponibles en un objeto.• Como codificar una interfaz independiente del lenguaje?• Que representa la interfaz IUnknown?• LENGUAJE IDL – Interface Definitio Languaje -

– IDL hace COM independiente del lenguaje– IDL es un lenguaje descriptivo– Se utilizará MIDL (Microsoft IDL) que viene con Visual C++

Interface IArchivo: IUnknown {HRESULT Abrir([in] LPOLESTR nombre);HRESULT Escribir([in] LPOLESTR datos, [in] int longitud);HRESULT Leer([in] LPOLESTR datos, [in] int longitud, [out, retval] int* bytesleidos);HRESULT Cerrar();

};• Solo se soporta la herencia simple, NO Multiple• Todo método retorna HRESULT el cual indica condición o no de error.• Que pasa si un método retorna algún valor?

– Atributo retval– [out, retval] tipo* …

• El precompilador MIDL toma un archivo *.idl y genera una Librería de Tipos, Archivos header para c/c++, modulo de código que contendrá identificadores de interfaces y objetos, proxys.

• La librería de tipos es la que se utiliza en otros lenguajes diferentes a c/c++. P.e. Visual Basic

La Interfaz IUknown• Un objeto para que sea COM tiene que implementar la interface IUnknown

Page 18 of 21

Estructura de un servidor

El contenedor de primer nivel (servidor COM), es como una caja que cuenta con 3 elementos:

(1) Clases de objetos, (2) Factorias y (3) Funciones adicionales como registro del servidor u obtención de una factoria para un cierto objeto.

CMiArchivo

FactoriaIClassFactory

IUnknown

IArchivo

Archivo.DLL

export DLLRegisterServer():export DLLGetClassObject();…

Page 19: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

• Objetivo:– Ciclo de vida– Resolución de interfaces

• Ciclo de vida– AddRef()– Release()

• Resolución de interfaces– QueryInterface

Identificador de Objetos e Interfaces

• Los nombre de objetos e interfaces son elementos con ámbito reducido y válidos solo en una cierta aplicación o entorno de desarrollo.

• Se utilizan identificadores conocidos como GUID– Global Unique Identifier– Teóricamente son irrepetibles en el tiempo y espacio.– 128 bits de longitud

• CLSID (Class Identifier), GUID que identifican componentes COM• IID (Interface Identifier), GUID que identifican interfaces

Mecanismos de puesta en marcha

• Puesta en marcha para un componente localizado en una DLL• Contiene varias interfaces de las cuales nos interesa: Iarchivo• El IID de la Interfaz es IID_IArchivo• El CLSID del componente es CLSID_IArchivo• Funciones básicas:

– CoInitialize()– CoCreateInstance()

• Localización del servidor:– Se invoca CoInitialize()– Y luego CoCreateInstance() facilitando en CLSID– La asociación del CLSID y el servidor es el Registro de Windows– Si el servidor es una DLL utiliza la subclave: InprocServer32– Otros casos son: LocalServer32 ó RemoteServer32

Obtención de la factoria

• En vez de llamar a CoCreateInstance() se usaria CoGetClassObject(), esto implica usar los métodos de la Interface IClassFactory.

Page 19 of 21

Page 20: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Page 20 of 21

Introducción a DCOM (1)

Distributed COMUtilizado en Clientes y Servidores outprocessSi están en la misma máquina:

LIPC (Local Interprocess Communication)

Iarchivo *lpArchivo Proxy COMCliente.exe

LIPC

Stub COM CMiArchivo

Servidor.exeIArchivo

Servidor fuera de proceso

Introducción a DCOM (2)

Utilizado en Clientes y Servidores en máquinas diferentes

Iarchivo *lpArchivo Proxy COMCliente.exe

RPC

Stub COM CMiArchivo

Servidor.exeIArchivo

Servidor remoto(DCOM)

Computador A

Computador B

Page 21: Objeto y Componente Distribuidos DCOM

Sistemas Informáticos Distribuidos – Ing. Pablo A. Sacco Universidad Blas Pascal

Procesos subrogados

• Se puede utilizar servidores remotos dentro de proceso utilizando un proceso sustituto o subrogado, cuya finalidad es poner en marcha al componente cargando la DLL.

• Un solo servidor puede ejecutar varios componentes• Es como un contenedor remoto

Marshaling

• Preparación de datos (parámetros y retornos) antes de realizar la transferencia por la red.• Marshaling/demarshaling• No hay necesidad en InProcess• Se utiliza NDR: Network Data Representation

• MTS y COM+• El MTS (Microsoft Transaction Server) a parte de servir a la gestion de transacciones.• Para que un servidor COM pueda instalarse en MTS es preciso que sea un servidor dentro de proceso

(dll)• El MTS cuenta con un mecanismo de Exploración/Registro y generación de archivos de instalación para

los clientes.• Esta misma funcionalidad se conoce en W2K como COM+.• Con COM+ el desarrollo, distribución e instalacione de aplicaciones distribuidas es mucho más sencilla

Introducción a ATL

• Active Template Library es un mecanismo de creación de componentes COM bajo Visual C++ que facilita su desarrollo y registro.

• Viene con Visual C++.

Page 21 of 21