码迷,mamicode.com
首页 > 其他好文 > 详细

COM、ActiveX、OLE的联系和区别

时间:2017-10-14 18:30:58      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:word   cts   输入   空间   服务器   direct   软件架构   复合   工程   

这三者都是微软上世纪90年代提出的技术,不仅至今仍在使用,其设计思路对今天的软件架构仍有着很大的参考意义。

从出现的历史来看,OLE最早出现,然后COM,然后ActiveX。

最早是应复合文档的需求,OLE(Object Linking and Embedded)出现了,典型应用是Word文档中可以插入的图片,在Word中就可以编辑。

微软的工程师,把OLE中的通用代码提取出来,作为一种基础技术,并广泛使用,这样COM技术的出现了。与OLE不同的是,COM是作为一项通用技术,而不是产品应用。

随着互联网的发展,要求网页有更丰富的表现形式,HTML和CGI有些吃力,前者缺灵活,后者开发门槛高。ActiveX应时而生,填补了需求。典型应用就是IE浏览器中的所谓的加密密码输入框,来实现数据以加密的方式传送到服务器。

 

从技术层次上讲,ActiveX和OLE一样,是COM技术的落地应用。

OLE是基于COM技术的,虽然前者先于后者出现。也可以说COM技术是OLE发展过程中,技术总结然后上升到理论层次。

ActiveX也是基于COM技术,比如COM技术定义了接口,ActiveX使用了此定义,约定了一批符合COM接口约定的ActiveX接口。

OLE和ActiveX都是基于COM技术,前者起身于复合文档,后者行走于互联网,他们的接口因为领域不同而有所差异,但都复合COM标准。

OLE和ActiveX都是Microsoft的商标,但COM不是,它只是一项技术。

 

其实,基于COM技术的,不仅仅是OLE和ActiveX。DirectX也是基于COM,典型代表是广泛应用于播放器的DirectShow技术。

从动态链接库出现的那天开始,win下的DLL文件和Linux的so文件,一下子把应用程序的开发简化了,多人协作更容易了。

为方便不同编程语言互相协作,win系统的DLL一律使用stdcall调用约定,也就是PASCAL约定,终于不用每个程序员都必须用某一种语言了。

面向对象语言,简化了编程工作中维护代码的繁琐,一些团队内部开始使用C++对象在DLL之间传送,其它语言没法用,甚至不同的C++编译器不能通用,标准化的需求又来了。

COM技术开始出现,它不再传递对象,而只传递接口,每个接口都有最低的基本要求,因为可以跨语言,这使得面向对象可以在跨模块之间,用的更广泛。

 

当微软开始推广它的DotNet技术时,一个理由是,DLL有很多版本,exe程序不知道用哪个好。其实COM设计之初考虑到了这个问题,就是你升级了要换接口ID,旧接口要保留除非没有必要,但是很多用户不care的。

于是,DotNet中,微软用文件名和版本号共同维护DLL,还规划了不同的目录命名规则,这时候,如果你不知道第三方提供的exe用的那个版本,可以选择把所有的版本都装上,微软有一套规则保证他们可以相安无事的共存。

于是,微软觉得自己解决了一个难题,空间换运行,反正硬盘都是几个T的,内存都是好多G的。

COM、ActiveX、OLE的联系和区别

标签:word   cts   输入   空间   服务器   direct   软件架构   复合   工程   

原文地址:http://www.cnblogs.com/McuPlayer/p/7667717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!