`
youthon
  • 浏览: 18567 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

com和ole和ActiveX之间是什么关系

 
阅读更多

熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。
在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术定义。它们的主要区别是:
1)组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用;
2)组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序;
3)组件为模块重用,而对象为代码重用。
现在,比较流行的组件模型有COM(Component Objiect Module,对象组件模型)/DCOM(Distributed COM,分布式对象组件模型)和CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)。到这里,已经出现了与本文相关的主题COM,而CORBA与本文无关,就不作介绍。之所以从组件与对象的区别说起,是想让大家明确COM和CORBA是处在整个体系结构的最底层,如果暂时对此还不能理解,不妨继续往下看,最后在回过头看一看就自然明白了。
现在开始阐述ActiveX、OLE和COM的关系。首先,让大家有一个总体的概念,从时间的角度讲,OLE是最早出现的,然后是COM和ActiveX;从体系结构角度讲,OLE和ActiveX是建立在COM之上的,所以COM是基础;单从名称角度讲,OLE、ActiveX是两个商标名称,而COM则是一个纯技术名词,这也是大家更多的听说ActiveX和OLE的原因。
既然OLE是最早出现的,那么就从OLE说起,自从Windows操作系统流行以来,“剪贴板”(Clipboard)首先解决了不同程序间的通信问题(由剪贴板作为数据交换中心,进行复制、粘贴的操作),但是剪贴板传递的都是“死”数据,应用程序开发者得自行编写、解析数据格式的代码,于是动态数据交换(Dynamic Data Exchange,DDE)的通信协定应运而生,它可以让应用程序之间自动获取彼此的最新数据,但是,解决彼此之间的“数据格式”转换仍然是程序员沉重的负担。对象的链接与嵌入(Object Linking and Embedded,OLE)的诞生把原来应用程序的数据交换提高到“对象交换”,这样程序间不但获得数据也同样获得彼此的应用程序对象,并且可以直接使用彼此的数据内容,其实OLE是Microsoft的复合文档技术,它的最初版本只是瞄准复合文档,但在后续版本OLE2中,导入了COM。由此可见,COM是应OLE的需求而诞生的,所以虽然COM是OLE的基础,但OLE的产生却在COM之前。
COM的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。COM是应OLE的需求而诞生,但它的第一个使用者却是OLE2,所以COM与复合文档间并没有多大的关系,实际上,后来COM就作为与复合文档完全无关的技术,开始被广泛应用。这样一来,Microsoft就开始“染指”通用平台技术。但是COM并不是产品,它需要一个商标名称。而那时Microsoft的市场专家们已经选用了OLE作为商标名称,所以使用COM技术的都开始贴上了OLE的标签。虽然这些技术中的绝大多数与复合文档没有关系。Microsoft的这一做法让人产生这样一个误解OLE是仅指复合文档呢?还是不单单指复合文档?其实OLE是COM的商标名称,自然不仅仅指复合文档。但Microsoft自己恐怕无法解释清楚,这要花费相当的精力和时间。
于是,随着Internet的发展,在1996年春,Microsoft改变了主意,选择ActiveX作为新的商标名称。ActiveX是指宽松定义的、基于COM的技术集合,而OLE仍然仅指复合文档。当然,ActiveX最核心的技术还是COM。ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而ActiveX则以提供进一步的网络应用与用户交互为主。到这里,大家应该对ActiveX、OLE和COM三者的关系有了一个比较明确的认识,COM才是最根本的核心技术,所以下面的重点COM。
让对象模型完全独立于编程语言,这是一个非常新奇的思想。这一点从C++和Java的对象概念上,我们就能有所了解。但所谓COM对象究竟是什么呢?为了便于理解,可以把COM看作是某种(软件)打包技术,即把它看作是软件的不同部分,按照一定的面向对象的形式,组合成可以交互的过程和以组支持库。COM对象可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。使用COM对象的浏览器,无需关心对象是用什么语言写的,也无须关心它是以DLL还是以另外的过程来执行的。从浏览器端看,无任何区别。这样一个通用的处理技巧非常有用。例如,由用户协调运行的两个应用,可以将它们的共同作业部分作为COM对象间的交互来实现(当然,现在的OLE复合文档也能做到)。为在浏览器中执行从Web服务器下载的代码,浏览器可把它看作是COM对象,也就是说,COM技术也是一种打包可下载代码的标准方法(ActiveX控件就是执行这种功能的)。甚至连应用与本机OS进行交互的方法也可以用COM来指定,例如在Windows和Windows NT中用的是新API,多数是作为COM对象来定义的。可见,COM虽然起源于复合文档,但却可有效地适用于许多软件问题,它毕竟是处在底层的基础技术。用一句话来说,COM是独立于语言的组件体系结构,可以让组件间相互通信.


分享到:
评论

相关推荐

    com和active和ole区别

    OLE(Object Linking and Embedding)是微软在早期推出的一种技术,主要目的是解决Windows应用程序之间的数据交换和交互问题。在OLE 1中,它主要是用于创建复合文档,让用户可以在一个文档中嵌入来自其他应用程序的...

    OLE COM ActiveX历史渊源及关系

    从历史渊源上分析几个技术之间的关系, 这样能让人明白的更加系统。是我见过的分析的比较好的文章。

    OLE DB 教程

    它是数据源和应用程序之间交互的主要通道。 4. **命令对象(ICommand)**: 命令对象用于执行SQL语句或存储过程,它允许开发者指定SQL命令,并返回结果集。 5. **记录集对象(IRowset)**: 记录集对象表示一组相关...

    ODBC、OLE DB和ADO简单介绍

    OLE DB处于ODBC层和应用之间,对于ASP页面来说,ADO是OLE DB上的一个“应用”,所以在连接数据库的时候OLE DB速度更快。 四、ADO介绍 ADO是目前主流的数据访问技术,属于应用程序层次,专用于对数据源进行访问。...

    OLE DB的概念与编程.docx

    此外,ActiveX Data Objects (ADO) 是微软推出的一个基于OLE DB的高级接口,它简化了对数据的访问,提供了更高层次的抽象,使得开发者可以更方便地在.NET和COM环境中进行数据操作。ADO提供了更易用的编程模型,而...

    ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。

    ActiveX Data Objects (ADO) 是微软为数据访问提供的一个高效且易于使用的应用程序接口,它是建立在 OLE DB 技术之上的。OLE DB 是一种组件对象模型(COM)接口,旨在提供统一的数据访问方式,可以访问多种不同类型...

    在VB中利用OLE技术实现数学公式的输入.pdf

    链接是指在源文档和目标文档之间建立一种关系,这样当源文档中的数据发生变化时,目标文档中的链接数据也会相应更新。而嵌入则是将对象完全复制到目标文档中,即使源文档不存在或被修改,嵌入的对象仍保持不变。 ##...

    WINDOWS程序员使用指南(三)----OLE_DDE

    3. OLE接口和类库:介绍COM(Component Object Model)和ActiveX,以及如何使用这些接口和类库来实现OLE功能。 4. DDE工作原理:详细说明DDE消息、服务、话题和项的概念,以及如何在代码中建立DDE连接。 5. OLE与DDE...

    WINDOWS程序员使用指南--OLE-DDE

    **OLE与DDE的关系**:虽然OLE后来引入了更先进的COM(Component Object Model)和ActiveX技术,但早期版本的OLE仍然依赖DDE进行服务器间的通信。在OLE中,DDE用于初始化和控制嵌入或链接的对象,以及在应用程序之间...

    Visual+C++实践与提高-ActiveX篇.pdf

    首先,作者对ActiveX技术的由来、发展历史以及它与OLE和Internet的关系进行了阐述。ActiveX技术是微软提出的一系列基于COM(组件对象模型)技术的组件技术总称,它允许软件组件在网络环境中相互操作。OLE(对象链接与...

    显示时间ActiveX控件.rar_activeX控件_activex_activex 时间_visual basic_时间显示

    在标签中,“activex控件”、“activex”和“activex_时间”进一步强调了这个控件与ActiveX技术的关系,特别是它专注于处理时间的特性。“visual_basic”标签表明这个控件可能与Visual Basic编程环境密切相关,可能...

    BCB程序ACTIVEX中调用EXCEL

    你需要知道如何访问和操作Workbook、Worksheet、Range等对象,以及它们之间的关系。例如,你可以通过Application对象的Worksheets集合来访问或创建工作表,通过Range对象来读写单元格数据。 6. **错误处理**:在...

    dba.zip_OLE DB

    ADO(ActiveX Data Objects)是基于OLE DB的高级接口,它为开发者提供了一种简单的方式来访问和操作数据。在“dba.zip_OLE DB”这个压缩包中,我们有两个文件:一个名为“dba.chm”的帮助文件和一个名为...

    MFC数据库编程 VC 数据库 ODBC OLE DAO

    尽管比ODBC复杂,但OLE DB提供了更多的功能和灵活性,尤其适合处理非关系型数据或需要高性能的应用。MFC通过提供COleDBSession、COleDBCommand、COleDBRecordset等类来支持OLE DB编程。 DAO(Data Access Objects)...

    ACTIVE,WEB,COM控件区别.txt

    在IT领域,特别是软件开发与应用环境中,ActiveX、OLE(对象链接与嵌入)、COM(组件对象模型)以及DCOM(分布式组件对象模型)是几种重要的技术概念,它们之间存在紧密联系但也各有特点,下面将对这些概念进行详细...

    OLEDB和ODBC的区别(优缺点)

    ODBC和OLEDB都是在应用程序和数据库之间起到桥梁作用的技术,但它们的设计理念和使用场景有所差异。 ODBC,全称为Open Database Connectivity,是微软提出的一种开放标准,它定义了一个API,使得应用程序能够以统一...

    VB学生成绩管理系统.doc

    ADO Data控件是使用Microsoft ActiveX数据对象来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合OLEDB规范的数据源。ADO Data控件使用OLEDB...

    OleView

    总结起来,OleView是了解和管理ActiveX控件的强大工具,它利用COM和OLE技术,提供了深入的组件分析和诊断功能,对IT专业人士来说是不可或缺的。通过使用OleView,用户可以增强系统的安全性和稳定性,同时也能提高...

    delphi中提示尚未调用coinitialize错误的解决方法.pdf

    在 Delphi 中,CoInitialize 和 OleInitialize 的关系是,COM 库是 OLE 系统的子集,OLE 系统是 COM 库的前身。现在,微软公司已经全部转道 COM 上了,不再发展 OLE。 因此,在使用 Delphi 开发应用程序时,需要...

Global site tag (gtag.js) - Google Analytics