miércoles, 26 de julio de 2017

INTRODUCCION

Existen multitud de bibliotecas de objetos. Una de las más extendidas es la de los componentes COM. De hecho, los sistemas Windows de Microsoft usan esa tecnología. Y no sólo es que la usen, sino que están basados en componentes COM. COM significa Component Object Model. COM es un modelo. Es un modelo binario, que puede ser utilizado independientemente de los lenguajes de programación que puedan soportarlo. CORBA es otro de los modelos que compite con COM.
En este documento veremos como se usan, crean y registran los componentes COM utilizando un compilador de C++ ( usando el entorno de desarrollo Borland C++ Builder ), dejando a un lado el lenguaje IDL ( para la declaración de los objetos ).
Un componente es un objeto ( como los objeto de las clases de C++) que incluye unas características mínimas, para que puedan ser utilizados tanto en un programa como en la etapa de diseño del mismo. Existen otros modelos de componentes como los modelos de Borland, OWL y VCL.  Sin embargo, sólo los componentes COM pueden utilizarse en múltiples lenguajes, de ahí que estén más extendidos. Además, las distintas partes del propio sistema operativo están realizadas con COM. Así, por ejemplo, los menús contextuales, las librerías gráficas DirectX, la creación de enlaces a ficheros, las distintas aplicaciones de Microsoft Office, etc... son objetos COM, que pueden ser utilizados desde cualquier programa.
Sin embargo, la creación de componentes es algo complicada y tediosa. Por ello se suele usar una librería de plantillas de macros que facilitan la tarea de creación de componentes.

 Historia

Cuando Microsoft estaba desarrollando sus primeros sistemas operativos Windows se encontró con un problema. Necesitaban poder insertar gráficos de una de sus aplicaciones ( Microsoft Graph ) en otra de ellas ( Microsoft PowerPoint ). En 1991 diseñaron un protocolo mediante el cual en un documento podrían insertarse objetos mantenidos por programas distintos en los que se estaba editando. El protocolo se llamaba OLE 1.0 y se basaba en el paso de mensajes y el uso de memoria global compartida. El resultado fue realmente malo, no sólo por la fragilidad del sistema ( con la caída de una de las aplicaciones caía el sistema ), además de que era muy complicada la realización de componentes para los programadores.
La siguiente versión de OLE ( llamada COM ) se rescribió desde cero por Microsoft y DEC en un principio. Al final DEC abandonó el proyecto y Microsoft continuó con él.
Las nuevas versiones que realizó Microsoft ampliaron el modelo para poder usar los componentes desde distintos ordenadores ( DCOM o Distributed COM ).

¿Por qué  y para qué COM?

COM viene incluido como parte de Windows. Es más, muchas partes de Windows son objetos COM. Si el programador quiere realizar una extensión del sistema operativo, tendrá que realizar un objeto COM. El desarrollo de un Sistema Operativo lo realizan multitud de personas. Encontrar un modelo que se adapte al desarrollo global del sistema es difícil. La programación orientada a objetos es una alternativa. COM realiza esta programación a nivel de programas binarios, en contra de lo que suele ser normal. Es decir, no hace falta tener los códigos fuentes del objeto para poder usarlo.
DCOM se puede usar en redes de una forma muy transparente, lo que nos permite la programación a varios niveles.
Podemos aprovechar las ventajas de las DLLs ( Librerías de Enlace Dinámico ) en el modelo de componentes. Entre estas ventajas están:
-          Minimizar el uso de memoria de programas ( al existir sólo una copia de las funciones en memoria )
-          Las actualizaciones de las librerías realizan mejoras sobre todos los programas que las usan ( aunque esto es un inconveniente, pues todas las nuevas versiones deben de ser compatibles 100% con las anteriores )
-          Se pueden usar y escribir funciones de/desde distintos lenguajes de programación.

No hay comentarios:

Publicar un comentario

PORTADA

PROGRAMACIÓN EN AMBIENTE  CLIENTE/SERVIDOR UNIDAD 4 -COM/DCOM PROFESOR   VÍCTOR MANUEL JACOBO ADÁN. ALUMNO:...