Activex、OLE、COM、OCX、DLL之间的分(转)

熟悉面向对象编程和网编程的丁肯定对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进一步升华吧分布式组件对象模型,这虽是DCOM,它仿佛于CORBA的ORB,本文对这个将不再做越来越的阐释。通过上面的描述相信大家自然对ActiveX、OLE和COM/DCOM的涉嫌来矣一个领略的打听。

采用Windows的人头对ActiveX控制得不见面生,它提供了扳平栽类似于DLL动态链接库的调用,不过她同DLL的绝无仅有区别就是是ActiveX不报不能够让网识别并行使。那么,当我们取得一个ActiveX没有叫科学安装都无能够使的音信后,又要安装ActiveX怎么处置呢?

1.Regsvr32程序法在Windows的System文件夹下发生一个regsvr32.exe的先后,它就是Windows自己带的ActiveX注册及倒注册工具。利用它吧能够好便宜地注册AcitveX控件,它的用法也:regsvr32/u/s/n/i
dllname,
dllname其中dllname为ActiveX控件文件称,建议于安装前拷贝到System文件夹下参数有如下意义:

    /u
- 反注册控件

    /s
- 不管注册成功与否,均不示提示框

    /c
- 控制高出口

    /i
- 跳了控件的选项进行安装 (与登记不同)

    /n
- 不报控件,此选项必须跟/i 选项一起利用

像笔者要登记一amovie.ocx控件,则打入
regsvr32 amovie.ocx即可,要倒注册它常单待使用
regsvr32 /u amovie.ocx就实行了。

2.报表法所谓注册AcitveX,无非是拿部分信记录在Windows的挂号表中,如Shockwave
Flash
Object控件,我们可以运行Regedit.exe注册表编辑程序,利用重点字展开搜寻,然后将搜索得到后的挂号表导出也一REG注册表文件,再以那个相应的ActiveX文件拷贝到Windows的System文件夹(一般ActiveX底文本称吧OCX,安装于Windows的System文件夹内)下,最后当苟安装ActiveX的机械及双击导入刚才导出的注册表文件即可到位安装。

 

小结:Activex,OLE,COM都是微软的片段技术标准。Ole比较一直后来进步成Activex,再后来向上变成COM
OCX,DLL是扩张名。
Activex有一定量栽扩大名OCX和DLL。实际上你可以把它的扩暂名字调换。
COM作为ActiveX的翻新技术,扩展名吧发出或是DLL
DLL文件还有可能是动态链接库。主要是装有函数,可以动态加载。