2009-02-05 11 views

Respuesta

3

COM es OLE evolucionado. OLE era un conjunto de interfaces y mecanismos de almacenamiento de datos para facilitar el intercambio de datos entre las aplicaciones. COM fue la extensión natural del uso de interfaces no solo para compartir datos, sino también para la funcionalidad en tiempo de ejecución, donde los datos se enfrentaron con mecanismos reales para facilitar su uso. Siempre lo he descrito más o menos como la diferencia entre C y C++, donde con C, puede compartir archivos de encabezado y estructuras, y con C++ comparte objetos encapsulados.

Como una especie de tribuna, sigo extrañando OLE Structured Storage, ya que hay algo agradable acerca de compartir el almacenamiento de datos opacos entre los sistemas colaboradores. Al ver que arrastrar y soltar/portapapeles aún depende de él, me pregunto qué será el reemplazo de .Net.

+4

OLE ** no ** COM evolucionado. Ole 1 es anterior a COM. OLE2 se basa en COM sin embargo. El almacenamiento estructurado OLE todavía existe y siempre lo hará, y puede usarlo desde .Net si lo desea. Tenga en cuenta que gran parte de la motivación de diseño para el almacenamiento estructurado OLE versus algo como ZIP fue permitir la modificación en el lugar de las estructuras de datos en disco. Eso se ha ido en gran medida con el final de los disquetes y HDs lentas. – Ben

+0

"Ole 1 es anterior a COM. OLE2 se basa en COM sin embargo". Sí ... algo así como evolucionó. La idea de usar interfaces entre datos que interactúan, y luego datos + comportamiento provino de OLE y fue el germen de COM. – codekaizen

+1

@Ben - Invirtió el orden de COM y OLE en su cita de lo que dice realmente la respuesta. –

0

La tecnología OLE es anterior a COM como una entidad separada por una cantidad de tiempo significativa. Antes de eso, OLE se implementó como una forma de Incrustar y Vincular Objetos. El ejemplo clásico es el de incrustar una hoja de cálculo dentro de un documento de Word. La tecnología subyacente de COM se habilitó para que otros lenguajes como VB pudieran interactuar también con esos objetos.

Luego, históricamente, teníamos muchos programadores de tipo servidor que buscaban cosas interesantes como la independencia del idioma, el recuento de referencias y el enhebrado de modelos con envidia, pero realmente no les importaba demasiado la tecnología de integración. Lo lógico era dividir la funcionalidad del servidor subyacente como COM: esta era una API de bajo nivel más natural.

Ambas tecnologías todavía existen. OLE está relacionado con o puede ser lo mismo que ActiveX en estos días.

46
  • OLE = Object Linking and Embedding
  • DDE = intercambio dinámico de datos
  • COM = Component Object Model

OLE: Se trata de un método para unir partes de un documento a las partes de otro. Por ejemplo, tener una diapositiva de PowerPoint con un gráfico de Excel incrustado en ella. Cuando se actualice la hoja de cálculo de Excel, la tabla también debería actualizarse. ¡Cuando vuelves a abrir Powerpoint, mágicamente tiene! (Este ejemplo es un objeto vinculado). Los objetos incrustados son los mismos, solo que la hoja de cálculo de Excel no existe en un archivo externo, los datos de la hoja de cálculo están contenidos en el archivo de PowerPoint.

Puede incrustar Excel, Word y Powerpoint entre sí con objetos vinculados. Otras aplicaciones se escribieron específicamente para admitir que se incrustado en Word, como el Editor de ecuaciones de Microsoft.

OLE 1 se creó en DDE, que utilizaba mensajes de Windows para notificar a las aplicaciones cuando cambiaban los datos de origen, y normalmente pasaba datos mediante el uso de identificadores de memoria globales HGLOBAL.

OLE 2 se construyó en COM.

COM es un modelo de componente orientado a objetos neutral de lenguaje y ABI basado en DCE RPC. Como sistema RPC, admite llamadas remotas entre procesos en la misma máquina y, más tarde, con DCOM en diferentes máquinas.Inicialmente COM se usó como parte de la arquitectura de MAPI (que usa el modelo de objetos COM pero no los servicios de registro COM) antes de iniciarse formalmente por sí mismo como un modelo de objeto general completo con registro y activación de objetos y otros servicios. (Monikers y almacenamiento estructurado, por ejemplo).

OLE Automatización no tiene nada que ver con OLE, es solo una conexión de marca. Automatización OLE es un subconjunto visual y básico compatible de COM que solo admite tipos de datos básicos (por ejemplo, enteros o estructuras sin signo) pero que incluyen objetos (interfaces COM).

OLE Controls sin embargo, están relacionados con OLE. Son componentes visuales dirigidos principalmente a los usuarios de Visual Basic desde VB 4 en adelante, pero los elementos visuales se proporcionan usando las funciones de integración de OLE 2. También se pueden alojar (en teoría, si se escriben correctamente) mediante cualquier elemento capaz de albergar un OLE 2 objeto incrustado, y también se usaban a menudo en aplicaciones C++. Por lo general, utilizan interfaces compatibles con OLE Automation para programar en tiempo de ejecución.

control ActiveX es un término de marketing para los objetos COM, desde el momento en que Microsoft estaban tratando de popularizar la tecnología para extender las aplicaciones web.

+1

Muchas gracias. Con mucho, la mejor visión general sobre este lío de nombres ;-) Supongo que este tema no estará desactualizado pronto ... – Rainer

Cuestiones relacionadas