Академический Документы
Профессиональный Документы
Культура Документы
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
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
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
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
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
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
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
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.
Page 8 of 21
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
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
Enlaces DCOM http://www.microsoft.com/Com/ Pgina oficial de Microsoft Arquitectura DCOM Resumen Tcnico de 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/
http://www.codeguru.com/activex/index.shtml
Tutorial DCOM/COM
http://journal.iftech.com/articles/dcom_1/
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
Page 12 of 21
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
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
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
IArchivo *lpArchivo
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
Estructura de un objeto
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
Proxy COM
CMiArchivo Servidor.exe
Page 17 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 obtencin de una factoria para un cierto objeto.
Archivo.DLL
IArchivo IClassFactory
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
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
CMiArchivo Servidor.exe
Proxy COM
CMiArchivo Servidor.exe
Page 20 of 21
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