U4 COM/DOM


TECNOLÓGICO NACIONAL DE MÉXICO
           INSTITUTO TECNOLÓGICO  DE IGUALA

MATERIA:
PROGRAMACION AMBIENTE CLIENTE/SERVIDOR

NOMBRE DEL DOCENTE:
M. C VICTOR MANUEL JACOBO ADÀN
 
NOMBRE DE LA ALUMNA
EVA YARITZELL LOPEZ MILLAN

TEMA:
COM/DCOM.

CARRERA:
INGENIERÍA INFORMÁTICA
7° SEMESTRE


  INTRODUCCIÓN

Para  poder ver la introduccion de este tema clic en el siguiente video 
 
https://www.youtube.com/watch?v=aPBnd7Uzv38

¿QUE ES COM/DCOM?

  • COM
Component Object Model (COM) es una plataforma de Microsoft para para desarrollar compontes de software, introducida en 1993. Esta plataforma es utilizada para permitir la comunicación entre procesos y la creación dinámica de objetos, en cualquier lenguaje de programación que soporte dicha tecnología.

 El término COM es a menudo usado en el mundo del desarrollo de software como un término que abarca las tecnologías OLE, OLE Automation, ActiveX, COM+ y DCOM. Si bien COM fue introducido en 1993, Microsoft no hizo énfasis en el nombre COM hasta 1997.

Esencialmente COM es una manera de implementar objetos neutrales con respecto al lenguaje, de manera que pueden ser usados en entornos distintos de aquel en que fueron creados, a través de fronteras entre máquinas. Para componentes bien creados, COM permite la reutilización de objetos sin conocimiento de su implementación interna, porque fuerza a los implementadores de componentes a proveer interfaces bien definidas que están separados de la implementación.

 Las diferentes semánticas de reserva de memoria están acomodadas haciendo a los objetos responsables de su propia creación y destrucción por medio del contador de referencias. Se puede hacer casting entre distintas interfaces de un objeto por medio de la función QueryInterface(). El método preferido de herencia en COM es la creación de sub-objetos a los que se delegan las llamadas a métodos (llamado agregación).

 
  • DCOM
 El Modelo de Objetos de Componentes Distribuidos (Distributed Component Object Model, DCOM) es una tecnología propetaria de Microsoft para desarrollar componte de software distribuidos sobre varias computadoras y que se comunican entre sí.
Extiende el modelo Component Object Model (COM) de Microsoft  y proporciona el sustrato de comunicación entre la infraestructura del servidor de aplicaciones COM+ de Microsoft.

DCOM fue uno de los mayores competidores de CORBA. Los defensores de ambas tecnologías sostenían que algún día serían el modelo de código y servicios sobre Internet. 

Sin embargo, las dificultades que suponía conseguir que estas tecnologías funcionasen a través de cortafuegos y sobre máquinas inseguras o desconocidas, significó que las peticiones HTTP normales, combinadas con los navegadores web les ganasen la partida. Microsoft, en su momento intentó y fracasó anticiparse a esto añadiendo un transporte extra HTTP a DCE/RPC  denominado "ncacn_http" (connection-based, over HTTP).

4.1 CREACIÓN DE SERVIDORES

 
 DCOM es una extensión de COM, y éste define como los componentes y sus clientes interactúan entre sí. Esta interacción es definida de tal manera que el cliente y el componente pueden conectar sin la necesidad de un sistema intermedio. El cliente llama a los métodos del componente sin tener que preocuparse de niveles más complejos.

 DCOM es una evolución lógica de COM, se pueden utilizar los componentes creados en aplicaciones basadas en COM, y trasladarlas a entornos distribuidos. DCOM maneja detales muy bajos de protocolos de red, por lo que uno se puede centrar en la realidad de los negocios: proporcionar soluciones a clientes.

La arquitectura DCOM 

  Al existir infraestructuras de hardware, software, componentes, al igual que herramientas, se necesita poder integrarlas y nivelarlas para reducir el desarrollo y el tiempo de trabajo y coste. DCOM toma ventaja de forma directa y transparente de los componentes COM y herramientas ya existentes. 
Un gran mercado de todos los componentes disponibles haría posible reducir el tiempo de desarrollo integrando soluciones estandarizadas en las aplicaciones de usuario. Muchos desarrolladores están familiarizados con COM y pueden aplicar fácilmente sus conocimientos a las aplicaciones distribuidas basadas en DCOM.
 
Cualquier componente que sea desarrollado como una parte de una aplicación distribuida es un candidato para ser reutilizado. Organizando los procesos de desarrollo alrededor del paradigma de los componentes permite continuar aumentando el nivel de funcionalidad en las nuevas aplicaciones y reducir el tiempo de desarrollo.

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


4.2 CREACIÓN DEL CLIENTE 




El cliente debe realizar las siguientes tareas:

Iniciar la librería COM
Obtener la interfaz
Manipular el objeto a través de su interfaz
Liberar las interfaces
Finalizar la librería COM
Para iniciar la librería COM hay que llamar al método del API COM CoInitialize:
            hr = CoInitialize(NULL);
            if ( SUCCEEDED(hr) )
            {
                        ...
            }
  • El método CoInitialize inicializa la librería en el thread de ejecución desde el que se invoque. Es necesario llamar a CoInitialize desde cada thread de la aplicación que quiera acceder a objetos COM.


OBTENER LA INTERFAZ
Para obtener la interfaz inicial llamamos al método CoCreateInstance, este creará una nueva instancia de un objeto COM y nos devolverá un puntero a su interfaz.
            IUnknown *pIUnknown = NULL;
            hr = CoCreateInstance(CLSID_UserInfo, NULL,
                                   CLSCTX_INPROC_SERVER, IID_IUnknown,
                                   (LPVOID *)&pIUnknown);
            if (SUCCEEDED(hr))
            {....}


A través del puntero a IUnknow obtener el puntero a la interfaz IUserInfo
                        hr = pIUnknown->QueryInterface(IID-IUserInfo,
                                   (LPVOID *)&pIUserInfo);
                                   if (SUCCEEDED(hr))
                                               {\\manipulación del objeto}



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

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

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

4.3 AUTOMATIZACIÓN
 
Basado en la Biblioteca de plantillas estándar (STL), ATL amplía el entorno de desarrollo de Visual Studio con asistentes utilizados para la automatización objeto COM. ATL facilita la programación de objetos COM para la invocación guión de páginas Active Server (ASP). ATL se puede utilizar para crear una variedad de objetos, incluyendo cuadros de diálogo y los controles de Internet Explorer. ATL soporta características de COM clave, como los controles ActiveX, interfaces duales y puntos de conexión.

4.4 ATL (Active template library)


Active (ATL) Template Library tiene compatibilidad especial para características COM clave, incluidas las implementaciones comunes, interfaces duales, interfaces COM estándar de enumeradores, puntos de conexión, rasga interfaces, y controles ActiveX.

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


ATL incluye muchas clases RAII para simplificar la gestión de los tipos COM. Las clases más usadas incluyen:
  • CComPtr<T>  puntero inteligente de uso general,
  • CComBSTR  envoltura BSTR,
  • CComVariant envoltura VARIANT, y
  • CComSafeArray<T> SAFEARRAY envoltura.


4.5 DCOM 
 
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í. Extiende el modelo COM de Microsoft y proporciona el sustrato de comunicación entre la infraestructura del servidor de aplicaciones COM+ de Microsoft. Ha sido abandonada en favor del framework .NET.1 2
La adición de la "D" a COM fue debido al uso extensivo de DCE/RPC, o más específicamente la versión mejorada de Microsoft, conocida como MSRPC.
En términos de las extensiones que añade a COM, DCOM tenía que resolver los problemas de:


  •     Aplanamiento - Serializar y deserializar los argumentos y valores de retorno de las llamadas a los métodos "sobre el cable".
 Recolección de basura distribuida, asegurándose que las referencias mantenidas por clientes de las interfaces sean liberadas cuando, por ejemplo, el proceso cliente ha caído o la conexión de red se pierde.
Uno de los factores clave para resolver estos problemas es el uso de DCE/RPC como el mecanismo RPC subyacente bajo DCOM. DCE/RPC define reglas estrictas en cuanto al aplanamiento y a quién es responsable de liberar la memoria.
DCOM fue uno de los mayores competidores de CORBA. 

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



 CONCLUSIÓN

Para poder ver la conclusiòn de este tema clic en el siguiente video.


https://www.youtube.com/watch?v=3cwE6sxYb-Q

 REFERENCIAS




 consultado el dia 15/07/17


 Grabriela Range, 01/2016, U4COM/DCOM, blogspot.mx,Disponible en: http://u4comdcom.blogspot.mx/. 
consultado el dia 15/07/17


Microsoft Corp. (2006). «Component Object Model». Archivado desde el original el 26 de noviembre de 2015. Consultado el 6 de febrero de 2006
https://es.wikipedia.org/wiki/Component_Object_Model












 

Comentarios