COM和OLE有什么区别?

46 com ole

COM和OLE有什么区别,如果有的话?

Ben*_*Ben 69

  • OLE =对象链接和嵌入
  • DDE =动态数据交换
  • COM =组件对象模型

OLE:这是一种将一个文档的部分链接到另一个文档的部分的方法.例如,使用嵌入了Excel图表的PowerPoint幻灯片.更新Excel电子表格后,图表也应更新.当你重新打开PowerPoint时,它神奇地拥有了!(此示例是链接对象.)嵌入对象与外部文件中不存在Excel电子表格相同,电子表格的数据包含在PowerPoint文件中.

您可以使用链接对象将Excel,Word和PowerPoint文档相互嵌入.其他应用程序专门用于支持嵌入到Word中,例如Microsoft公式编辑器.

OLE 1构建在DDE上,它使用窗口消息在源数据更改时通知应用程序,并且通常使用HGLOBAL全局内存句柄传递数据.

OLE 2是在COM上构建的.

COM是一种语言中立的,面向对象的组件模型和基于DCE RPC的ABI.作为RPC系统,它支持在同一台机器上的进程之间进行远程调用,之后使用DCOM在不同的机器上进行远程调用.最初COM被用作MAPI体系结构的一部分(它使用COM对象模型,但不使用COM注册服务),然后作为一般对象模型正式启动,完成注册表和对象激活以及其他服务.(例如,Monikers和结构化存储.)

OLE自动化与OLE无关 - 它只是一个品牌连接.OLE自动化是COM的Visual Basic兼容子集,它仅支持基本数据类型(例如,没有无符号整数或结构),但包括对象(COM接口).

但是OLE控件与OLE相关.它们是主要针对Visual Basic用户的可视化组件,从VB 4开始,但可视化元素是使用OLE 2的嵌入工具提供的.它们也可以由任何能够托管OLE 2的东西托管(理论上,如果正确编写)嵌入式对象,也常用于C++应用程序.它们通常使用OLE自动化兼容接口在运行时进行编程.

从微软试图推广用于扩展Web应用程序的技术时起,ActiveX控件就是COM对象的营销术语.


cod*_*zen 6

COM 是 OLE 演变而来的。OLE 是一组接口和数据存储机制,用于促进应用程序之间的数据共享。COM 是使用接口的自然扩展,不仅可以共享数据,还可以共享运行时功能 - 数据由实际机制处理以方便使用。我一直把它粗略地描述为 C 和 C++ 之间的区别,在 C 中,您可以共享头文件和结构,而在 C++ 中,您可以共享封装的对象。

作为一个肥皂盒,我仍然想念 OLE 结构化存储,因为在协作系统之间共享不透明数据存储有一些好处。看到拖放/剪贴板仍然取决于它,我想知道 .Net 替代品是什么?

  • OLE 是 ** 不是 ** COM 演变而来的。Ole 1 早于 COM。然而,OLE2 是建立在 COM 上的。OLE 结构化存储仍然存在并且永远存在,如果您愿意,可以从 .Net 使用它。请注意,与 ZIP 之类的东西相比,OLE 结构化存储的许多设计动机是允许就地修改磁盘数据结构。随着软盘和慢速 HD 的终结,这种情况在很大程度上已经消失了。 (6认同)
  • @Ben - 您将引用中 COM 和 OLE 的顺序与答案的实际内容颠倒了。 (2认同)