COMActiveXOLE的联系和区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了COMActiveXOLE的联系和区别相关的知识,希望对你有一定的参考价值。
这三者都是微软上世纪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的。
以上是关于COMActiveXOLE的联系和区别的主要内容,如果未能解决你的问题,请参考以下文章
Android -- 每日一问:Activity的启动模式(launchMode)有哪些,有什么区别?