Objeto y Componente Distribuidos DCOM



Comments



Description

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 21 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 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 Page 2 of 21 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. AIX. Windows corrientes XP y anterior. pero están confiados a hacerlo tan compatible como sea posible con MSRPC. z/OS. HP/UX. Según esa documentación.NET Remoting Acoplamientos externos • • Los grupos abiertos COMsource j-Interop Microsoft APIs y armazones Encargado de ventana de escritorio · DirectX · Direct3D · GDI · Fundación de la presentación de Gráficos 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 DirectShow · 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 MSHTML · MSXML · Plataforma de RSS · JScript · VBScript · BHO · XMLHttpRequest · Multimedias Web Page 3 of 21 . y Java se opone de clientes de COM. z/VM. AS/400. usos de soporte del cliente de DCOM en Java en cualquier plataforma que se comunica con los servidores de DCOM. Pablo A. y BS2000/OSD.Sistemas Informáticos Distribuidos – Ing. Vea también • • • ActiveX Intercambio de datos dinámico (DDE) . no están interesados actualmente en el lado del establecimiento de una red de DCOM. Procedimiento Para tener acceso a ajustes de DCOM en un Windows 2000 de la computadora. Solaris. Linux. EntireX DCOM está una puesta en práctica comercial cerca Software AG para Windows. Se restringen a poner en ejecución NDR (Representación de datos de la red) con el API de Microsoft. tecleo Inicio > Ejecutar. Esto abre el diálogo distribuido de las características de la configuración de COM. Sacco Universidad Blas Pascal interoperable de DCOM. El equipo también está poniendo DCOM en ejecución para los propósitos binarios de la interoperabilidad. j-Interop es una fuente abierta (LGPL) puesta en práctica de MSRPC puramente adentro Java. que se proporciona cerca MSRPC. y tecleamos “dcomcnfg". e incluso incluye el código de fuente para a Servicio del registro de Windows NT. COMsource viene directamente de Windows NT el código de fuente 4.0. NET · Remoting · Fundación de la presentación de Windows · .NET datos Marco de la entidad de ADO. · Motor de jet Establecimiento Winsock (LSP) · Núcleo del Winsock · Plataforma de filtración · Especificación de interfaz del de una red conductor de la red · Reunión de Windows · PEDACITOS · P2P API Comunicación Mensajería API · Telefonía API Consola Win32 · Anfitrión de la escritura de Windows · Instrumentación de la gerencia de Administración Windows · Windows PowerShell · Planificador de tarea · Archivos fuera de línea · Copy de la y sombra · Instalador de Windows · Divulgación de error de Windows · Registro del acontecimiento gerencia de Windows · Sistema común del fichero de diario Modelo componente COM · COM+ · ActiveX · Modelo componente distribuido del objeto · Marco de .NET Clase de la fundación 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 difusión) · Fundación del conductor conductor de Windows (KMDF · UMDF) API Crypto (CAPICOM) · Windows CardSpace · Protección API de los datos · Interfaz del abastecedor de la ayuda de la seguridad Marco de . Pablo A.NET · ADO.NET 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 IPC Accesibilidad Texto y multilingüe ayuda Fábrica de EFx · Biblioteca de la empresa · UI compuesto · CCF · CSF MSRPC · Pipas nombradas · archivo Memoria-traz · DDE · MailSlot Accesibilidad activa · Automatización de UI 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 Direct3D · D3DX · DirectSound · DirectInput · DirectPlay · DirectMusic · DirectX manejado · Microsoft XNA Seguridad Juegos Page 4 of 21 .NET · ASP. Sacco Universidad Blas Pascal Adminículos de SideBar Acceso de los Componentes del acceso de los datos de Microsoft · Motor extensible del almacenaje · ADO.Sistemas Informáticos Distribuidos – Ing.NET · Marco de la sinc. IDL y ODL están incluídos en NT 4. 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. Los precompiladores de DCOM mantienen este TL CORBA tiene objetos persistentes con ObjRefs persistentes. Sacco Universidad Blas Pascal Qué hace a DCOM tan importante? – Microsoft – Viene con NT 4.0. llamado ODL. Una interface DCOM es simplemente un grupo de funciones relacionadas Al igual que CORBA. Para acceder una interface.CLSID).O. Una clase DCOM implementa una o más interfaces la cual es identificada por un id único de 128 bits (Class ID . 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. Pablo A.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 es una instancia en ejecución de una clase.Sistemas Informáticos Distribuidos – Ing. DCOM tiene objetos sin estado temporales (transcient) los cuales pueden ser asociados con un Contexto vía un moniker. Un objeto DCOM no es un objeto en el sentido de O. 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. Una interface DCOM es definida como una API binaria de bajo nivel basado en una tabla de apuntadores. DCOM provee interfaces estáticas y dinámicas. El Type Library es la versión de DCOM del Interface Repository. Los clientes siempre tratan con objetos DCOM a través de punteros. Las funciones que son apuntadas por la vtable son la implementación de los métodos del servidor del objeto. Page 5 of 21 . VB y Java. Interfaces independientes de la implementación. nunca se accede directamente. Objetos DCOM no soportan identificadores de objetos únicos. Win 9x – DCOM es el fundamento tanto de componentes como de Internet – ActiveX son objetos DCOM – MTS. Microsoft IDL está basado en DCE (con compatible con CORBA) Microsoft también provee un IDL para OLE automation. Microsoft provee lenaguajes de mapeo para C++. DCOM define interoperabilidad binaria para cómo accesar su interface usando punteros y proxies remotos. Interfaces DCOM NO tienen estado y no pueden ser instanciados para crear una única referencia a objeto. Una interface DCOM es una colección de llamadas a funciones. Una interface DCOM se refiere a un grupo predefinido de funciones relacionadas. Un moniker DCOM es un objeto que actua como un nombre alias persistente para otro objeto. los clientes DCOM utilizan punteros a un arreglo de funciones conocida como virtual table (vtable). tiene que implementar IClassFactory2 – Registrar las clases que éste soporta • registrar un CLSID por cada clase que soporte en el NT Registry. El servidor tiene que proveer una clase factory para crear un nuevo objeto. Un servidor DCOM provee la estructura necesaria alrededor de un objeto para hacerlo disponible a los clientes.EXE) – Servidores remotos Para el cliente debe ser totalmente transparente el tipo de servidor. exe. • 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 . Pablo A. Un servidor DCOM es un código (dll. class) que contiene uno o más clases de objeto con su propio CLSID. Un servidor DCOM tiene: – Implementar una interface “class factory” (IClassFactory) • crea instancias de una clase. 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 . 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. DCOM carga el código servidor y pregunta a éste por la creación de tal objeto.Sistemas Informáticos Distribuidos – Ing. • Si la clase soporta licenciamiento. Se utiliza IUnkown para consultar un objeto acerca de sus interface y métodos y obtener un puntero a ellas. Los clientes preguntan por un objeto dado su CLSID. Una vez el objeto es creado. un puntero a su interface principal es retornada al cliente. [in] int b. pointer_default(unique).[out. [ uuid(1689CB23-2ADE-11D0-892E-00A024638502). }. importlib(“stdole32. Page 7 of 21 .class) Interface Interface 5 Implemente servidor 6 7 jvc JavaReg Summary.[out. retval] int* retval). [in] int b. oleautomation ] interface ICalc : IUnknown { import “oaidl. Pablo A.txt Cliente Crear IDL Servidor // Calc. retval] int* retval). version (1. [out.Sistemas Informáticos Distribuidos – Ing. retval] int* retval). HRESULT restar([in] int a.0) ] library Calculator { [ object.idl”.tlb”). uuid(1689CB22-2ADE-11D0-892E-00A024638502). HRESULT dividir([in] int a. ] coclass Calc { [default] interface ICalc.[out.idl [ uuid(1689CB21-2ADE-11D0-892E-00A024638502). [in] int b. Sacco Universidad Blas Pascal 1 Crear IDL DCOM 3 MIDL 4 JavaTLB Generar GUIDs 2 8 Implemente el cliente 9 10 11 jvc JavaReg jview Class Proxy (. HRESULT sumar([in] int a. retval] int* retval). }. }. [in] int b. HRESULT multiplicar([in] int a. La Figura 2 ilustra como las librería de COM/DCOM proporcionan la forma de comunicar el cliente y el componente: Figure 2. Cuando el cliente y el componente residen en distintas máquinas. DCOM: componentes COM en distintas máquinas. Figura 3. y utilizan RPC y un proveedor de seguridad para generar paquetes de red estándar que entienda el protocolo estándar de DCOM. Componentes COM en el mismo proceso. Page 8 of 21 . En los actuales sistemas operativos.Sistemas Informáticos Distribuidos – Ing. Ni el cliente ni el componente se enteran de que la unión que los conecta es ahora un poco más grande. Pablo A. Esta interacción es definida de tal manera que el cliente y el componente puede conectar sin la necesidad de un sistema intermedio. DCOM simplemente reemplaza la comunicación entre procesos locales por un protocolo de red. El cliente llama a los métodos del componente sin tener que preocuparse de niveles más complejos. 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. y éste define como los componentes y sus clientes interactuan entre sí. Sacco Universidad Blas Pascal La arquitectura DCOM DCOM es una extensión de COM. los procesos están separados unos de otros. 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. Componentes COM en procesos distintos. Un cliente que necesita comunicarse con un componente en otro proceso no puede llamarlo directamente. La Figura 1 ilustra esto en la notación de COM Figura 1. y tendrá que utilizar alguna forma de comunicación entre procesos que proporcione el sistema operativo. Si la aplicación tiene numerosos componentes pequeños. La independencia de localización en DCOM simplifica enormemente las tarea de los componentes de aplicaciones distribuidas para alcanzar un nivel de funcionamiento óptimo. la forma en la que el cliente se conecta a un componente y llama a los métodos de éste es identica. Los componentes más pequeños aumentan la flexibilidad. aparecen distintos conflictos en el diseño: • • • • Los componentes que interactuan más a menudo deberían estar localizados más cerca. ya que estos detalles no se especifican en el código fuente. La Figura 4 representa como un "componente de validación" puede ser situado en la misma máquina. 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. en la misma máquina. Una simple reconfiguración cambia la forma en la que los componentes se conectan entre sí. que cierto componente debe ser localizado en una máquina específica en un lugar determinado.Sistemas Informáticos Distribuidos – Ing. Con DCOM. Sacco Universidad Blas Pascal Los Componentes y su reutilización Muchas aplicaciones distribuidas no están desarrolladas Al existir infraestructuras de hardware. No es solo que DCOM no necesite cambios en el código fuente. se puede reducir la carga de la red situándolos en la misma LAN. Supongamos. Algunos componentes solo pueden ser ejecutados en máquinas específicas o lugares específicos. Page 9 of 21 . Si la aplicación está compuesta por un pequeño número de grandes componentes. DCOM toma ventaja de forma directa y transparente de los componentes COM y herramientas ya existentes. Diseñando para COM y DCOM se asegura que los componentes creados serán útiles ahora y en el futuro. o incluso en el mismo proceso. componentes. Independencia de la localización Cuando se comienza a implementar una aplicación distribuida en una red reak. Un gran mercado de todos los componentes disponibles haría posible reducir el tiempo de desarrollo integrando soluciones estandarizadas en las aplicaciones de usuario. 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. al igual que herramientas. Pablo A. por tanto se pueden poner en las máquinas más rápidas disponibles independientemente de donde esten situadas. software. Los componentes grandes reducen el tráfico de red. por ejemplo. estos temas críticos de diseño pueden ser tratados se forma bastante sencilla. cuando el cliente accede a la aplicación a través de una red lenta. En cualquier caso. pero aumentan el tráfico de red. y en la máquina "servidor". ya esté en el mismo proceso que el cliente o en una máquina en cualquier lugar del mundo. la carga de red es menor y no es un problema. sino que además no necesita que el programa sea recompilado. pero también reducen la flexibilidad. se necesita poder integrarlas y nivelarlas para reducir el desarrollo y el tiempo de trabajo y coste. cuando el ancho de red entre la máquina "cliente" y la máquina "middle-tier" es suficiente. DCOM olvida completamente la localización de los componentes. La independencia del lenguaje permite crear componentes en lenguajes de nivel superior como Microsoft Visual Basic. como TCP/IP. IPX/SPX y NetBIOS. Sacco Universidad Blas Pascal Figura 4. La elección es generalmente un termino medio entre el coste de desarrollo. la aplicación puede combinar componentes relacionados en máquinas "cercanas" entre si. Pablo A. Java. Los desarrolladores pueden simplemente utilizar las características proporcionadas por DCOM y asegurar que sus aplicaciones son completamente independientes del protocolo. y estos componentes puede ser utilizado por muchos más lenguajes y herramientas. Virtualmentem cualquier lenguaje puede ser utilizado para crear componentes COM. la experiencia disponible y la funcionalidad. 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. Independencia de localización Con la independencia de localización de DCOM. Microsoft Visual Basic. Incluso si un gran número de pequeños componentes implementan la funcionalidad de un gran módulo lógico. Page 10 of 21 . que permiten tomar ventaja de características avanzadas como multihilo.Sistemas Informáticos Distribuidos – Ing. DCOM es completamente independiente del lenguaje. DCOM proporciona un marco de seguridad a todos estos protocolos. obligará a mejorar todos los cliente. Como una extensión de COM. en una sola máquina o incluso en el mismo proceso. podrán interactuar eficientemente entre ellos. PowerBuilder. los desarrolladores de aplicaciones puede elegir las herramientas y lenguajes con los que estén más familiarizados. y Micro Focus COBOL interactuan perfectamente con DCOM. Necesitar un protocolo específico de red. y después reimplementarlos en distintos lenguajes como C++ o Java. lo que es inaceptable en muchas situaciones. Con la independencia de lenguaje de DCOM. DCOM proporciona esta transparencia: DCOM puede utilizar cualquier protocolo de transporte. Delphi. Los desarrolladores de aplicaciones tienen que tener cuidado de mantener la aplicación lo más independiente posible de la infraestructura de la red. UDP. Microsoft Visual C++. Independencia del protocolo Muchas aplicaciones distribuidas tienen que ser integradas en la infraestructura de una red existente. concordia.uc3m. Page 11 of 21 .gsyc.htm http://www.upm.iftech.com/library/en-us/dndcom/html/msdn_dcomtec.htm DCOM y CORBA (comparación) Links ActiveX y DCOM DCOM Introducción a COM.cs.dit.uab.de/~stolle/f/CompSem2000/works/COM-paper_html/ COM+ http://sern.com/articles/dcom_1/ http://www.gsi.codeproject.uni-jena.eafit.es/~jjmunoz/lro/9798/copia/%257Eatrigo/datos/indice.ucalgary.edu.html http://tochna.edu/~schmidt/submit/Paper.com/library/en-us/dndcom/html/msdn_dcomarch.html Modelo de objetos de componentes distribuido (DCOM) ActiveX.asp http://www.dalmatian.microsoft. Sacco Universidad Blas Pascal Enlaces DCOM http://www.dis.edu/~tliu/ds520/link. Com y DCOM COM/DCOM/ActiveX 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.com/activex/index.html http://shrike.Sistemas Informáticos Distribuidos – Ing.cvc.technion.asp http://msdn.wustl.informatik.microsoft.com/Com/ Página oficial de Microsoft Arquitectura DCOM Resumen Técnico de DCOM http://msdn. DCOM y http://swt. 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.inf.es/shared/teach/a20383/practiques/ Introducción al modelo COM OLE/COM/DCOM http://www.microsoft.com/com Código fuente COM/DCOM Excelente Tutorial de COM/DCOM Tutorial DCOM/COM http://journal.ca/Courses/CPSC/547/W2000/webnotes/COM/COM.html http://www.com/~chavesj/dcom/ DCOM for children Código fuente ActiveX/COM/DCOM http://www.idecnet.ac.codeguru.ca/~teaching/comp690j/dcomTutorial/comTutorial.cs.com/com_dcom.depaul.htm http://www.il/project/LearnDCOM/html/LearnDCOM.shtml http://www.es/~jcg/is/curso97-98/grupos/y3/html_doc/indice2.html http://club.co/areas/telematica/online/corba/intro/ Objetos distribuidos CORBA/RMI/DCOM Programación COM/DCOM http://www. Pablo A. 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. Por ejemplo. Un ejemplo de aplicación DCOM es un servicio de información de cotizaciones de bolsa. 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. Mediante DCOM.Sistemas Informáticos Distribuidos – Ing. Para ello requieren algunas modificaciones menores en la configuración del sistema. En una aplicación DCOM. Las aplicaciones COM (OLE) existentes pueden utilizar DCOM. Si el precio cae por debajo de cierto nivel. DCOM es OLE en una red. Por ejemplo. DCOM proporciona la infraestructura que conecta los objetos distribuidos para que los clientes reciban la información que necesitan. acceso y contexto. COM es la base de OLE y es el estándar por el que los componentes de software utilizan otros componentes. Se trata de un transporte rápido para las aplicaciones distribuidas creadas con COM. se enviará una notificación de compra. un programa usa la red como un medio para ejecutar componentes individuales en otros hosts en ubicaciones remotas. Una segunda conversación DCOM toma esos datos y los compara con las normas bursátiles almacenadas en un objeto en un tercer equipo. Remote Procedure Call) y las funciones de seguridad de Windows NT. es decir. una aplicación cliente ejecuta una llamada a un "código de etiqueta" que ocupa el lugar de un procedimiento local. COM con un cable más largo. Además. Page 12 of 21 . DCOM utiliza llamadas a procedimientos remotos para permitir a las aplicaciones existentes interactuar en múltiples equipos a través de una red. • Activación remota: Iniciar una aplicación mediante una llamada a un componente. 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. RPC permite que una aplicación ejecute procedimientos en un equipo remoto. El modelo de programación es idéntico a las tecnologías ActiveX. o son utilizados por ellos. el servidor distribuye el precio de las acciones a los clientes de la red. 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. De este modo se integra la funcionalidad de aplicaciones diversas. Pablo A. pero ninguna en el código de la aplicación en sí. para permitir que las aplicaciones se comuniquen a través de redes. es posible crear una regla que especifique cuándo se deben comprar unas acciones determinadas. 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. incluso a través de Internet. a diferencia de RPC. Pruebe las aplicaciones OLE existentes antes de ponerlas en funcionamiento con DCOM. DCOM utiliza las mismas herramientas y tecnologías que el Modelo de objetos de componentes (COM). • 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. como los permisos. de modo que la integración puede hacerse directamente. DCOM proporciona un modelo de programación para programadores de software que se puede usar para crear aplicaciones distribuidas. • Seguridad: Controlar la seguridad de inicio. Sacco Universidad Blas Pascal DCOM utiliza llamadas a procedimientos remotos (RPC. 1. Una aplicación cliente inicia una RPC. El proceso siguiente describe el flujo de una llamada de una aplicación cliente a un objeto del servidor. DCOM incluye las características siguientes: • Distribución: Ejecutar aplicaciones en una red. Puede utilizar el cuadro de diálogo Propiedades de Configuración COM distribuida para activar DCOM y establecer sus propiedades. que lo convierte en una llamada a procedimiento remoto. La etiqueta de RPC del servidor empaqueta el resultado del procedimiento y. preparar aplicaciones para que se ejecuten en el equipo que contiene los datos. y Configuración para permitir a los usuarios o grupos ver o modificar la configuración de la aplicación almacenada en el registro. Inicio para permitir o denegar a los usuarios o grupos la capacidad de iniciar la aplicación. el nombre y tipo de aplicación (así como si se encuentra en el equipo local o en otro equipo de la red). seleccione la aplicación y haga clic en Propiedades.exe se encuentra en la carpeta raíz_sistema\System32. 3. Inicio y Configuración. Aparecerán las fichas siguientes: o General describe las propiedades de la aplicación DCOM. como Autentificación predeterminada y Nivel de representación predeterminado. La biblioteca RPC en tiempo de ejecución del cliente recibe el paquete y lo reenvía a la etiqueta del cliente. 6. Usuario que inicia o Este usuario. Las propiedades de Autentificación predeterminada definen la seguridad a nivel de paquetes para las comunicaciones entre aplicaciones. o La ficha Localización se utiliza para buscar el equipo correcto para una aplicación dada. Para tener acceso a esta herramienta escriba dcomcnfg en el símbolo del sistema. la biblioteca RPC en tiempo de ejecución transmite el paquete al cliente que ejecuta la aplicación. 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. en un equipo local o en algún otro equipo en la red. Para ver y configurar las propiedades. Un administrador puede.Sistemas Informáticos Distribuidos – Ing. • Propiedades predeterminadas: Activar DCOM en el equipo local y establecer las propiedades de comunicación predeterminadas. Page 13 of 21 . La etiqueta de RPC del cliente empaqueta la llamada y entonces la biblioteca RPC en tiempo de ejecución transmite el paquete al servidor. o Seguridad se utiliza para establecer los permisos siguientes: Acceso para permitir o denegar a usuarios o grupos el acceso a la aplicación. • Seguridad predeterminada: Establecer los permisos de seguridad predeterminados para Acceso. y la ruta de acceso. Se ejecuta la llamada al procedimiento remoto. Configuración de DCOM DCOM se instala durante la instalación de Windows NT. 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. entonces. 4. Pablo A. que a su vez desempaqueta los datos para la aplicación cliente. Dcomcnfg. La biblioteca de RPC en tiempo de ejecución del servidor recibe el paquete y lo reenvía a su etiqueta de RPC. 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. Sacco Universidad Blas Pascal 2. mediante esta ficha. La opción Este usuario permite especificar una cuenta de usuario o de servicio. 5. 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. 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. • 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. Java) • Se tiene abstracción. manipulación por parte de los ambientes de desarrolladores. JavaBeans y CORBA – CORBA en sí mismo NO es un modelo de componentes.Sistemas Informáticos Distribuidos – Ing.O. Pablo A. COM NO es una Librería. Existen 3 modelos: – COM.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. 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. y la cuenta de usuario que se utilizará para ejecutarla. Windows esta compuesto por componentes Dichos componentes siguen una especificación: COM OLE fue el precursor de COM – OLE (1991) para creación de documentos compuestos – Previo a OLE -> portapapel y DDE – En 1993 apareció OLE 2. Concepto Fundamental de COM: – Separación entre la Interfaz Pública de un Componente y si Implementación. • • • COM NO es un Sistema. 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. comunicación entre componentes. • 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. – 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++. Page 14 of 21 .0 el cual dio origen a COM – Con OLE 2. 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. – 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. lpArchivo->Escribir ¿Qué es un objeto COM? • • • • Un objeto COM es el motor que ejecuta los metodos definidos en las interfaces. Equivalente a una clase abstracta IArchivo *lpArchivo IArchivo Abrir()=0. tablas de métodos o clases de objetos Un componente COM es un objeto que Implementa una o más interfaces. Una INTERFAZ es una tabla formada por PUNTEROS a métodos implementados por un cierto objeto. Se utiliza el mecanismo de herencia para obtener la espec de la interfaz y otros aspectos COM. Al crear un Componente COM hay que decidir que Interfaces implementará. Para utilizar un cierto objeto. Leer()=0. 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. – Una Interfaz es como una clase abstracta. Otros aspectos COM: – Control de ciclo de vida Page 15 of 21 . Escribir()=0. – 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. Pablo A. Se crea una nueva clase que derive de todas las interfaces COM. Basta con conocer las interfaces disponibles en el objeto. Son contenedores. Sacco Universidad Blas Pascal – Interfaces COM. Cerrar()=0.Sistemas Informáticos Distribuidos – Ing. físicamente la interfaz es una tabla de punteros – Servidor: los componentes COM se alojan en DLL o EXE. Implementar una Interfaz significa que el objeto a crear tendrá que codificar TODOS los métodos indicados en ella. Cerrar(). QueryInterface(). Release(). Escribir(). lo hace a través de un puntero a una de sus interfaces de negocio o a través de IUnknown • • Estructura de un objeto AddRed(). Pablo A. 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 . (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. forman parte de Servidores COM. 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.Sistemas Informáticos Distribuidos – Ing. CMiArchivo ¿Qué es un servidor COM? • Un objeto COM no existe de forma aislada. IArchivo Leer(). IUnknown Abrir(). exe Iarchivo *lpArchivo Proxy COM RPC Computador B Stub COM IArchivo Servidor remoto (DCOM) CMiArchivo Servidor. Pablo A.Sistemas Informáticos Distribuidos – Ing.exe Page 17 of 21 . Sacco Universidad Blas Pascal Introducción a DCOM (2) Utilizado en Clientes y Servidores en máquinas diferentes Computador A Cliente. modulo de código que contendrá identificadores de interfaces y objetos. es como una caja que cuenta con 3 elementos: (1) Clases de objetos. HRESULT Leer([in] LPOLESTR datos. retval] tipo* … • El precompilador MIDL toma un archivo *.idl y genera una Librería de Tipos. retval] int* bytesleidos). Sacco Universidad Blas Pascal Estructura de un servidor El contenedor de primer nivel (servidor COM). HRESULT Cerrar().DLL IUnknown CMiArchivo Factoria IArchivo IClassFactory export DLLRegisterServer(): export DLLGetClassObject(). (2) Factorias y (3) Funciones adicionales como registro del servidor u obtención de una factoria para un cierto objeto. NO Multiple • Todo método retorna HRESULT el cual indica condición o no de error. Archivos header para c/c++. [in] int longitud). P. Visual Basic La Interfaz IUknown • Un objeto para que sea COM tiene que implementar la interface IUnknown Page 18 of 21 . HRESULT Escribir([in] LPOLESTR datos. [out. • Solo se soporta la herencia simple. • La librería de tipos es la que se utiliza en otros lenguajes diferentes a c/c++. proxys. [in] int longitud.Sistemas Informáticos Distribuidos – Ing. … • • • • Interfaz: simple tabla de punteros mediante la cual es posible llamar a metodos disponibles en un objeto. }. Archivo. Pablo A.e. 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). • Que pasa si un método retorna algún valor? – Atributo retval – [out. 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(). Se utilizan identificadores conocidos como GUID – Global Unique Identifier – Teóricamente son irrepetibles en el tiempo y espacio. esto implica usar los métodos de la Interface IClassFactory. 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. Page 19 of 21 . GUID que identifican componentes COM IID (Interface Identifier). – 128 bits de longitud CLSID (Class Identifier). Pablo A.Sistemas Informáticos Distribuidos – Ing. Sacco Universidad Blas Pascal Introducción a DCOM (1) Distributed COM Utilizado en Clientes y Servidores outprocess Si están en la misma máquina: LIPC (Local Interprocess Communication) Cliente.exe Iarchivo *lpArchivo Proxy COM LIPC Stub COM IArchivo Servidor fuera de proceso CMiArchivo Servidor.exe Iarchivo *lpArchivo Proxy COM RPC Computador B Stub COM IArchivo Servidor remoto (DCOM) CMiArchivo Servidor.exe Introducción a DCOM (2) Utilizado en Clientes y Servidores en máquinas diferentes Computador A Cliente.exe Page 20 of 21 .Sistemas Informáticos Distribuidos – Ing. Pablo A. Page 21 of 21 . Pablo A. 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++.Sistemas Informáticos Distribuidos – Ing. 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. Esta misma funcionalidad se conoce en W2K como COM+. cuya finalidad es poner en marcha al componente cargando la DLL. 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. Con COM+ el desarrollo. 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. Sacco Universidad Blas Pascal Procesos subrogados • • • Se puede utilizar servidores remotos dentro de proceso utilizando un proceso sustituto o subrogado.
Copyright © 2024 DOKUMEN.SITE Inc.