Sie sind auf Seite 1von 21

Sistemas Informticos Distribuidos Ing. Pablo A.

Sacco Universidad Blas Pascal

TRABAJO DE INVESTIGACIN SISTEMAS INFORMTICOS DISTRIBUDOS TEMA: Objetos y componentes distribuidos Microsoft. Actualizacin de COM y DCOM. Uso en la actualidad. Tecnologa Actual
TUTOR: ING. PABLO A. SACCO
Nombre de los Alumnos: Rosales Mariela, legajo 17998 DNI 24719263 Gmez Reinaldo, legajo 17989 DNI 21974777 Ao del Cursado: 2010

Page 1 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal

Distributed Component Object Model (DCOM), en espaol Modelo de Objetos de Componentes Distribuidos, es una tecnologa propietaria de Microsoft para desarrollar componentes software distribuidos sobre varios ordenadores y que se comunican entre s. Para soportar comunicacin entre objetos en ordenadores distintos, en una LAN, WAN, o incluso en Internet. Con DCOM una aplicacin puede ser distribuida en lugares que dan ms sentido al cliente y a la aplicacin. Como DCOM es una evolucin lgica 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 comunicacin entre la infraestructura del servidor de aplicaciones COM+ de Microsoft. Ha sido abandonada en favor del framework .NET La adicin de la "D" a COM fue debido al uso extensivo de DCE/RPC, o ms especficamente la versin mejorada de Microsoft, conocida como MSRPC. COM Component Object Model, una plataforma de componentes desarrollada por Microsoft; En trminos de las extensiones que aade a COM, DCOM tena que resolver los problemas de Aplanamiento - Serializar y deserializar los argumentos y valores de retorno de las llamadas a los mtodos "sobre el cable". Recoleccin de basura distribuida, asegurndose que las referencias mantenidas por clientes de las interfaces sean liberadas cuando, por ejemplo, el proceso cliente ha cado o la conexin 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 quin 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 fundacin Open Software Foundation. Una de las compaas clave que contribuy fue Apollo. DCOM era uno de los mayores competidores de CORBA. Los defensores de ambas tecnologas sostenan que algn da seran el modelo de cdigo y servicios sobre Internet. Sin embargo, las dificultades que supona conseguir que estas tecnologas funcionasen a travs de cortafuegos y sobre mquinas 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 aadiendo un transporte extra HTTP a DCE/RPC denominado "ncacn_http" (Connection-based, over HTTP). Esto fue resucitada ms adelante para apoyar una conexin 2003 del intercambio sobre el HTTP. Versiones y puestas en prctica alternativas El grupo abierto hace una puesta en prctica de DCOM llamar COMsource. Su cdigo de fuente est disponible, junto con la documentacin completa y completa, suficiente utilizar y tambin poner una versin en ejecucin

Page 2 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


interoperable de DCOM. Segn esa documentacin, COMsource viene directamente de Windows NT el cdigo de fuente 4.0, e incluso incluye el cdigo de fuente para a Servicio del registro de Windows NT. El equipo tambin est poniendo DCOM en ejecucin para los propsitos binarios de la interoperabilidad; no estn interesados actualmente en el lado del establecimiento de una red de DCOM, que se proporciona cerca MSRPC. Se restringen a poner en ejecucin NDR (Representacin de datos de la red) con el API de Microsoft, pero estn confiados a hacerlo tan compatible como sea posible con MSRPC. j-Interop es una fuente abierta (LGPL) puesta en prctica 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 prctica 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 prctica 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 dilogo distribuido de las caractersticas de la configuracin de COM. Vea tambin ActiveX Intercambio de datos dinmico (DDE) .NET Remoting

Acoplamientos externos Los grupos abiertos COMsource

j-Interop

Microsoft APIs y armazones Encargado de ventana de escritorio DirectX Direct3D GDI Fundacin de la presentacin de Grficos Windows Sistema del color de Windows Adquisicin de la imagen de Windows Componente de la proyeccin de imagen de Windows Audio DirectSound DirectMusic DirectX plugin XACT Discurso API DirectShow Objetos de los medios de DirectX Aceleracin del vdeo de DirectX Medios de Windows Fundacin de los medios Imagen que domina el API MSHTML MSXML Plataforma de RSS JScript VBScript BHO XMLHttpRequest

Multimedias

Web

Page 3 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


Adminculos de SideBar Acceso de los Componentes del acceso de los datos de Microsoft Motor extensible del almacenaje ADO.NET datos Marco de la entidad de ADO.NET Marco de la sinc. Motor de jet Establecimiento Winsock (LSP) Ncleo del Winsock Plataforma de filtracin Especificacin de interfaz del de una red conductor de la red Reunin de Windows PEDACITOS P2P API Comunicacin Mensajera API Telefona API Consola Win32 Anfitrin de la escritura de Windows Instrumentacin de la gerencia de Administracin Windows Windows PowerShell Planificador de tarea Archivos fuera de lnea Copy de la y sombra Instalador de Windows Divulgacin de error de Windows Registro del acontecimiento gerencia de Windows Sistema comn del fichero de diario Modelo componente COM COM+ ActiveX Modelo componente distribuido del objeto Marco de .NET Clase de la fundacin de Microsoft (MFC) Biblioteca activa de la plantilla (ATL) Biblioteca de la plantilla de Windows (WTL)

Bibliotecas

Desarrollo del Modelo del conductor de Windows (Arquitectura del conductor de la difusin) Fundacin del conductor conductor de Windows (KMDF UMDF) API Crypto (CAPICOM) Windows CardSpace Proteccin API de los datos Interfaz del abastecedor de la ayuda de la seguridad Marco de .NET ASP.NET ADO.NET Remoting Fundacin de la presentacin de Windows .NET Fundacin del Workflow de Windows Fundacin de la comunicacin de Windows Windows CardSpace XNA Silverlight Biblioteca paralela de la tarea Fbricas del software IPC Accesibilidad Texto y multilinge ayuda Fbrica de EFx Biblioteca de la empresa UI compuesto CCF CSF MSRPC Pipas nombradas archivo Memoria-traz DDE MailSlot Accesibilidad activa Automatizacin de UI El texto mantiene el marco Modelo del objeto del texto Redactor del mtodo de entrada Paquete del interfaz de la lengua Interfaz utilizador multilinge Uniscribe Direct3D D3DX DirectSound DirectInput DirectPlay DirectMusic DirectX manejado Microsoft XNA

Seguridad

Juegos

Page 4 of 21

Sistemas Informticos 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 Distribucin 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 implementacin. Microsoft IDL est basado en DCE (con compatible con CORBA) Microsoft tambin provee un IDL para OLE automation, llamado ODL. IDL y ODL estn includos en NT 4.0 DCOM no soporta herencia mltiple DCOM pueden soportar mltiples interfaces por componente DCOM logra el reuso va confinamiento y agregacin 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 estticas y dinmicas. El Type Library es la versin 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 va un moniker. Un moniker DCOM es un objeto que actua como un nombre alias persistente para otro objeto. Una interface DCOM es una coleccin de llamadas a funciones. Interfaces independientes de la implementacin. DCOM define interoperabilidad binaria para cmo 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 implementacin de los mtodos del servidor del objeto. Cada objeto DCOM tiene una o ms vtables que definen el contrato entre la implementacin y sus clientes En tiempo de ejecucin 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 travs de la funcin QueryInterface que todos los objetos soporta a travs de la interface IUnknown Un objeto DCOM es un componente que soporta una o ms interfaces. Una interface DCOM se refiere a un grupo predefinido de funciones relacionadas. Una clase DCOM implementa una o ms interfaces la cual es identificada por un id nico de 128 bits (Class ID - CLSID). Un objeto DCOM es una instancia en ejecucin de una clase. Los clientes siempre tratan con objetos DCOM a travs de punteros, nunca se accede directamente. Objetos DCOM no soportan identificadores de objetos nicos.

Page 5 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


Todos los objetos DCOM tienen que implementar la interface IUnknown a travs de la cual se controla el ciclo de vida de un objeto. Se utiliza IUnkown para consultar un objeto acerca de sus interface y mtodos y obtener un puntero a ellas. Un servidor DCOM es un cdigo (dll, exe, class) que contiene uno o ms clases de objeto con su propio CLSID. Los clientes preguntan por un objeto dado su CLSID, DCOM carga el cdigo servidor y pregunta a ste por la creacin 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 instalacin Inicializar la librera DCOM provee servicios en tiempo de ejecucin CoInitializate a la API DCOM Verificar que la librera sea compatible invocando CoBuildVersion Provee un mecanismo de descargar (unload) Desinicializar la librera DCOM (CoUninitialize) Un servidor DCOM puede ser implementado de tres formas: Servidores In-Process (DLL) Servidores Locales (servidores separados dentro de la misma mquina - EXE) Servidores remotos Para el cliente debe ser totalmente transparente el tipo de servidor, slo 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 implementacin Registrar su clase java Escribir el cdigo cliente Compilar el cliente Registrar el cliente Iniciar el Cliente

Page 6 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


1 Crear IDL DCOM 3 MIDL 4 JavaTLB Generar GUIDs

8 Implemente el cliente 9 10 11 jvc JavaReg jview

Class Proxy (.class)

Interface Interface 5 Implemente servidor 6 7 jvc JavaReg

Summary.txt

Cliente
Crear IDL

Servidor

// 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

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


La arquitectura DCOM DCOM es una extensin de COM, y ste define como los componentes y sus clientes interactuan entre s. Esta interaccin 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 mtodos del componente sin tener que preocuparse de niveles ms complejos. La Figura 1 ilustra esto en la notacin de COM

Figura 1. Componentes COM en el mismo proceso. En los actuales sistemas operativos, los procesos estn 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 comunicacin entre procesos que proporcione el sistema operativo. COM proporciona este tipo de comunicacin de una forma transparente: intercepta las llamadas del cliente y las reenva al componente que est en otro proceso. La Figura 2 ilustra como las librera 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 mquinas, DCOM simplemente reemplaza la comunicacin entre procesos locales por un protocolo de red. Ni el cliente ni el componente se enteran de que la unin que los conecta es ahora un poco ms grande. La Figura 3 representa la arquitectura DCOM en su conjunto: Las librera 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 estndar que entienda el protocolo estndar de DCOM.

Figura 3. DCOM: componentes COM en distintas mquinas.

Page 8 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


Los Componentes y su reutilizacin Muchas aplicaciones distribuidas no estn 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 hara posible reducir el tiempo de desarrollo integrando soluciones estandarizadas en las aplicaciones de usuario. Muchos desarrolladores estn familiarizados con COM y pueden aplicar fcilmente sus conocimientos a las aplicaciones distribuidas basadas en DCOM. Cualquier componente que sea desarrollado como una parte de una aplicacin 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. Diseando para COM y DCOM se asegura que los componentes creados sern tiles ahora y en el futuro.

Independencia de la localizacin
Cuando se comienza a implementar una aplicacin distribuida en una red reak, aparecen distintos conflictos en el diseo: Los componentes que interactuan ms a menudo deberan estar localizados ms cerca. Algunos componentes solo pueden ser ejecutados en mquinas especficas o lugares especficos. Los componentes ms pequeos aumentan la flexibilidad, pero aumentan el trfico de red. Los componentes grandes reducen el trfico de red, pero tambin reducen la flexibilidad.

Con DCOM, estos temas crticos de diseo pueden ser tratados se forma bastante sencilla, ya que estos detalles no se especifican en el cdigo fuente. DCOM olvida completamente la localizacin de los componentes, ya est en el mismo proceso que el cliente o en una mquina en cualquier lugar del mundo. En cualquier caso, la forma en la que el cliente se conecta a un componente y llama a los mtodos de ste es identica. No es solo que DCOM no necesite cambios en el cdigo fuente, sino que adems no necesita que el programa sea recompilado. Una simple reconfiguracin cambia la forma en la que los componentes se conectan entre s. La independencia de localizacin 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 mquina especfica en un lugar determinado. Si la aplicacin tiene numerosos componentes pequeos, se puede reducir la carga de la red situndolos en la misma LAN, en la misma mquina, o incluso en el mismo proceso. Si la aplicacin est compuesta por un pequeo nmero de grandes componentes, la carga de red es menor y no es un problema, por tanto se pueden poner en las mquinas ms rpidas disponibles independientemente de donde esten situadas. La Figura 4 representa como un "componente de validacin" puede ser situado en la misma mquina, cuando el ancho de red entre la mquina "cliente" y la mquina "middle-tier" es suficiente, y en la mquina "servidor", cuando el cliente accede a la aplicacin a travs de una red lenta.

Page 9 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal

Figura 4. Independencia de localizacin Con la independencia de localizacin de DCOM, la aplicacin puede combinar componentes relacionados en mquinas "cercanas" entre si, en una sola mquina o incluso en el mismo proceso. Incluso si un gran nmero de pequeos componentes implementan la funcionalidad de un gran mdulo lgico, podrn interactuar eficientemente entre ellos.

Independencia del lenguaje de programacin Una cuestin importante durante el diseo e implementacin de una aplicacin distribuida es la eleccin del lenguaje o herramienta de programacin. La eleccin es generalmente un termino medio entre el coste de desarrollo, la experiencia disponible y la funcionalidad. Como una extensin 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 ms 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 estn ms familiarizados. La independencia del lenguaje permite crear componentes en lenguajes de nivel superior como Microsoft Visual Basic, y despus reimplementarlos en distintos lenguajes como C++ o Java, que permiten tomar ventaja de caractersticas avanzadas como multihilo.

Independencia del protocolo Muchas aplicaciones distribuidas tienen que ser integradas en la infraestructura de una red existente. Necesitar un protocolo especfico 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 aplicacin lo ms 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 caractersticas proporcionadas por DCOM y asegurar que sus aplicaciones son completamente independientes del protocolo.

Page 10 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal

Enlaces DCOM http://www.microsoft.com/Com/ Pgina oficial de Microsoft Arquitectura DCOM Resumen Tcnico de DCOM

http://msdn.microsoft.com/library/en-us/dndcom/html/msdn_dcomarch.asp http://msdn.microsoft.com/library/en-us/dndcom/html/msdn_dcomtec.asp http://www.cvc.uab.es/shared/teach/a20383/practiques/

Introduccin al modelo COM OLE/COM/DCOM

http://www.gsi.dit.upm.es/~jcg/is/curso97-98/grupos/y3/html_doc/indice2.htm http://www.dis.eafit.edu.co/areas/telematica/online/corba/intro/

Objetos distribuidos CORBA/RMI/DCOM Programacin COM/DCOM

http://www.gsyc.inf.uc3m.es/~jjmunoz/lro/9798/copia/%257Eatrigo/datos/indice.html http://club.idecnet.com/~chavesj/dcom/ DCOM for children Cdigo fuente ActiveX/COM/DCOM

http://www.codeguru.com/activex/index.shtml

http://www.cs.concordia.ca/~teaching/comp690j/dcomTutorial/comTutorial.html http://www.codeproject.com/com Cdigo fuente COM/DCOM Excelente Tutorial de COM/DCOM

Tutorial DCOM/COM

http://journal.iftech.com/articles/dcom_1/

http://www.cs.wustl.edu/~schmidt/submit/Paper.html http://shrike.depaul.edu/~tliu/ds520/link.htm http://www.dalmatian.com/com_dcom.htm

DCOM y CORBA (comparacin)

Links ActiveX y DCOM DCOM Introduccin a COM, DCOM y

http://swt.informatik.uni-jena.de/~stolle/f/CompSem2000/works/COM-paper_html/ COM+ http://sern.ucalgary.ca/Courses/CPSC/547/W2000/webnotes/COM/COM.html http://tochna.technion.ac.il/project/LearnDCOM/html/LearnDCOM.html Modelo de objetos de componentes distribuido (DCOM)

ActiveX, Com y DCOM

COM/DCOM/ActiveX

Los usuarios de procesos distribuidos buscan una infraestructura de aplicacin comn para crear aplicaciones con mltiples 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 travs de una red.

Page 11 of 21

Sistemas Informticos 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 travs de redes. Adems, DCOM proporciona un modelo de programacin para programadores de software que se puede usar para crear aplicaciones distribuidas. Un ejemplo de aplicacin DCOM es un servicio de informacin de cotizaciones de bolsa. Mediante DCOM, el servidor distribuye el precio de las acciones a los clientes de la red. Una segunda conversacin DCOM toma esos datos y los compara con las normas burstiles almacenadas en un objeto en un tercer equipo. Por ejemplo, es posible crear una regla que especifique cundo se deben comprar unas acciones determinadas. Si el precio cae por debajo de cierto nivel, se enviar una notificacin de compra. El resultado de la comparacin entre datos y normas crea una recomendacin 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 informacin que necesitan. DCOM utiliza las mismas herramientas y tecnologas que el Modelo de objetos de componentes (COM). COM es la base de OLE y es el estndar 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 ms largo. Se trata de un transporte rpido para las aplicaciones distribuidas creadas con COM. Las aplicaciones COM (OLE) existentes pueden utilizar DCOM. Para ello requieren algunas modificaciones menores en la configuracin del sistema, pero ninguna en el cdigo de la aplicacin en s. El modelo de programacin es idntico a las tecnologas ActiveX, de modo que la integracin puede hacerse directamente. Pruebe las aplicaciones OLE existentes antes de ponerlas en funcionamiento con DCOM. DCOM incluye las caractersticas siguientes: Distribucin: Ejecutar aplicaciones en una red, incluso a travs de Internet. Activacin remota: Iniciar una aplicacin 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 ejecucin local y remota. Herramienta de configuracin DCOM: Configurar aplicaciones de 32 bits para comunicarse a travs de una red y establecer las propiedades de la aplicacin. 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 aplicacin ejecute procedimientos en un equipo remoto. En una aplicacin DCOM, un programa usa la red como un medio para ejecutar componentes individuales en otros hosts en ubicaciones remotas. Por ejemplo, una aplicacin cliente ejecuta una llamada a un "cdigo de etiqueta" que ocupa el lugar de un procedimiento local. El "cdigo de etiqueta" utiliza las funciones de comunicacin y conversin de datos de una biblioteca RPC para ejecutar la rutina solicitada en un proceso de un servidor remoto. El cdigo de etiqueta es un fragmento de cdigo diseado 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 mltiples equipos a travs de una red. El proceso siguiente describe el flujo de una llamada de una aplicacin cliente a un objeto del servidor. 1. Una aplicacin cliente inicia una RPC.

Page 12 of 21

Sistemas Informticos 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 ejecucin transmite el paquete al servidor. 3. La biblioteca de RPC en tiempo de ejecucin del servidor recibe el paquete y lo reenva 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 ejecucin transmite el paquete al cliente que ejecuta la aplicacin. 6. La biblioteca RPC en tiempo de ejecucin del cliente recibe el paquete y lo reenva a la etiqueta del cliente, que a su vez desempaqueta los datos para la aplicacin cliente. Configuracin de DCOM DCOM se instala durante la instalacin de Windows NT. Puede utilizar el cuadro de dilogo Propiedades de Configuracin COM distribuida para activar DCOM y establecer sus propiedades. Para tener acceso a esta herramienta escriba dcomcnfg en el smbolo del sistema. Dcomcnfg.exe se encuentra en la carpeta raz_sistema\System32. Opciones de configuracin de DCOM Las opciones de configuracin de DCOM disponibles en el cuadro de dilogo Propiedades de Configuracin 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 aplicacin y haga clic en Propiedades. Aparecern las fichas siguientes: o General describe las propiedades de la aplicacin DCOM, el nombre y tipo de aplicacin (as como si se encuentra en el equipo local o en otro equipo de la red), y la ruta de acceso. o La ficha Localizacin se utiliza para buscar el equipo correcto para una aplicacin 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 algn otro equipo en la red. o Seguridad se utiliza para establecer los permisos siguientes: Acceso para permitir o denegar a usuarios o grupos el acceso a la aplicacin; Inicio para permitir o denegar a los usuarios o grupos la capacidad de iniciar la aplicacin; y Configuracin para permitir a los usuarios o grupos ver o modificar la configuracin de la aplicacin almacenada en el registro. o 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 opcin Este usuario permite especificar una cuenta de usuario o de servicio. Propiedades predeterminadas: Activar DCOM en el equipo local y establecer las propiedades de comunicacin predeterminadas, como Autentificacin predeterminada y Nivel de representacin predeterminado. Las propiedades de Autentificacin predeterminada definen la seguridad a nivel de paquetes para las comunicaciones entre aplicaciones. El Nivel de representacin predeterminado especifica el nivel de permisos que concede una aplicacin cliente a una aplicacin servidora para realizar tareas de procesamiento en su nombre. Seguridad predeterminada: Establecer los permisos de seguridad predeterminados para Acceso, Inicio y Configuracin.

Page 13 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


Los equipos en los que se ejecutan la aplicacin cliente y la aplicacin servidora deben estar configurados para DCOM. En el equipo que acta como cliente es necesario especificar la ubicacin de la aplicacin servidora que se va a iniciar o a la que se va a tener acceso. En el equipo en que se ejecuta la aplicacin servidora hay que especificar la cuenta de usuario con permiso de acceso o de inicio de la aplicacin, y la cuenta de usuario que se utilizar para ejecutarla. Windows esta compuesto por componentes Dichos componentes siguen una especificacin: COM OLE fue el precursor de COM OLE (1991) para creacin 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 automaticacin -> controles OLE u OCX Hechos OO Desarrollo basado en componentes Consecuencia -> reutilizacin El desarrollo hoy en da debe enfocarse a pegar lgicamente componentes y desarrollar componentes de NEGOCIO que faciliten la reutilizacin Problemas de la reutilizacin Multiples lenguajes Multiples S.O. An en mismos lenguajes compatibilidad binaria Como se puede realizar cdigo? Cut & Paste dentro de un mismo lenguaje En OO dependiendo del lenguaje (C++, Java) Se tiene abstraccin, encapsulamiento y herencia Encapsulamiento y Herencia facilita la reutilizacin de forma limitada El problema es estos objetos NO pueden ser reutilizados en otros lenguajes Tambien existe incompatibilidades entre lenguajes iguales Binario y an en fuente.

Solucin a los problemas planteados anteriormente Un Modelo de Componentes es una especificacin en la que se define entre otros: Estructura de componente, comunicacin entre componentes, manipulacin 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 especificacin binaria Un objeto COM puede crearse usando cualquier lenguaje, lo que importa es que la imagen binaria de ese objeto cumpla con la especificacin COM Que es COM? COM es una especificacin que define modelos de componentes binarios. COM NO es un Sistema, COM NO es una Librera. Concepto Fundamental de COM: Separacin entre la Interfaz Pblica de un Componente y si Implementacin.

Page 14 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


Interfaces COM, tablas de mtodos o clases de objetos Un componente COM es un objeto que Implementa una o ms interfaces. Tablas de punteros a mtodos Terminologa: Componente COM: Anlogo a un objeto C++ aunque difiere Interfaz COM: conjunto de servicios expuestos por un componente COM, fsicamente la interfaz es una tabla de punteros Servidor: los componentes COM se alojan en DLL o EXE. Son contenedores. Cliente: aplicacin 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 implementacin. Basta con conocer las interfaces disponibles en el objeto. Una INTERFAZ es una tabla formada por PUNTEROS a mtodos 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 mtodos indicados en ella. Para utilizar un cierto objeto, solo es preciso saber como recuperar un puntero a cualquiera de sus interfaces

Estructura de una Interfaz

Una interfaz es una tabla con punteros a funciones.


Equivalente a una clase abstracta

IArchivo *lpArchivo

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

lpArchivo->Escribir

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

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


Resolucin de interfaces Se utiliza la interfaz IUnkown para este objetivo En conclusin un objeto COM implementar todos los mtodos de todas las interfaces definidas + los mtodos de la interfaz Iunknown Un cliente NUNCA tiene acceso directo al objeto, lo hace a travs de un puntero a una de sus interfaces de negocio o a travs de IUnknown

Estructura de un objeto

AddRed(); Release(); QueryInterface(); IUnknown Abrir(); Escribir(); IArchivo Leer(); Cerrar();

CMiArchivo

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 adems de alojar y ejecutar los componentes realizan otras funciones como: Registrar componentes Crear factorias

Page 16 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal

Introduccin a DCOM (2)

Utilizado en Clientes y Servidores en mquinas diferentes Computador A Cliente.exe Iarchivo *lpArchivo

Proxy COM

RPC Computador B Stub COM IArchivo

Servidor remoto (DCOM)

CMiArchivo Servidor.exe

Page 17 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal

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 obtencin de una factoria para un cierto objeto.

Archivo.DLL

IUnknown CMiArchivo Factoria

IArchivo IClassFactory

export DLLRegisterServer(): export DLLGetClassObject();

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 mtodo retorna HRESULT el cual indica condicin o no de error. Que pasa si un mtodo retorna algn valor? Atributo retval [out, retval] tipo* El precompilador MIDL toma un archivo *.idl y genera una Librera de Tipos, Archivos header para c/c++, modulo de cdigo que contendr identificadores de interfaces y objetos, proxys. La librera 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

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal


Objetivo: Ciclo de vida Resolucin de interfaces Ciclo de vida AddRef() Release() Resolucin de interfaces QueryInterface

Identificador de Objetos e Interfaces Los nombre de objetos e interfaces son elementos con mbito reducido y vlidos solo en una cierta aplicacin o entorno de desarrollo. Se utilizan identificadores conocidos como GUID Global Unique Identifier Tericamente 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 bsicas: CoInitialize() CoCreateInstance() Localizacin del servidor: Se invoca CoInitialize() Y luego CoCreateInstance() facilitando en CLSID La asociacin 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

Obtencin de la factoria En vez de llamar a CoCreateInstance() se usaria CoGetClassObject(), esto implica usar los mtodos de la Interface IClassFactory.

Page 19 of 21

Sistemas Informticos Distribuidos Ing. Pablo A. Sacco Universidad Blas Pascal

Introduccin a DCOM (1)

Distributed COM Utilizado en Clientes y Servidores outprocess Si estn en la misma mquina:


LIPC (Local Interprocess Communication)

Cliente.exe Iarchivo *lpArchivo

Proxy COM LIPC Stub COM IArchivo

Servidor fuera de proceso

CMiArchivo Servidor.exe

Introduccin a DCOM (2)

Utilizado en Clientes y Servidores en mquinas diferentes Computador A Cliente.exe Iarchivo *lpArchivo

Proxy COM

RPC Computador B Stub COM IArchivo

Servidor remoto (DCOM)

CMiArchivo Servidor.exe
Page 20 of 21

Sistemas Informticos 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 Preparacin de datos (parmetros 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 Exploracin/Registro y generacin de archivos de instalacin para los clientes. Esta misma funcionalidad se conoce en W2K como COM+. Con COM+ el desarrollo, distribucin e instalacione de aplicaciones distribuidas es mucho ms sencilla

Introduccin a ATL Active Template Library es un mecanismo de creacin de componentes COM bajo Visual C++ que facilita su desarrollo y registro. Viene con Visual C++.

Page 21 of 21

Das könnte Ihnen auch gefallen