COM和OLE有什么区别,如果有的话?
OLE:这是一种将一个文档的部分链接到另一个文档的方法。例如,将一个 Excel 图表嵌入 PowerPoint 幻灯片中。当更新 Excel 电子表格时,图表也应该更新。重新打开 PowerPoint 时,它会神奇地更新!(此示例为链接对象)。嵌入式对象相同,只是 Excel 电子表格不存在于外部文件中,电子表格的数据包含在 PowerPoint 文件中。
您可以使用链接对象将 Excel、Word 和 PowerPoint 文档相互嵌入。其他应用程序专门编写支持嵌入到 Word 中,例如 Microsoft 方程编辑器。
OLE 1 基于 DDE 构建,DDE 使用窗口消息来通知应用程序源数据已更改,并通过使用 HGLOBAL 全局内存句柄传递数据。
OLE 2 基于 COM 构建。
COM 是一种语言中立的面向对象组件模型和 ABI,基于 DCE RPC。作为一个 RPC 系统,它支持在同一台机器上的进程之间进行远程调用,并且后来通过 DCOM 在不同的机器上进行远程调用。最初,COM 作为 MAPI 架构的一部分使用(它使用 COM 对象模型但不使用 COM 注册服务),然后作为一个完整的对象模型正式启动,包括注册表、对象激活和其他服务。(例如单元标识符和结构化存储)。
OLE Automation 与 OLE 没有任何关系 - 它只是品牌连接。OLE Automation 是 COM 的 Visual Basic 兼容子集,仅支持基本数据类型(例如无符号整数或结构体除外),但包括对象(COM 接口)。
OLE控件与OLE相关,主要面向VB 4及以上版本的Visual Basic用户,但视觉元素是通过OLE 2的嵌入功能提供的。它们也可以被任何能够托管OLE 2嵌入对象的应用程序(在理论上,如果正确编写)托管,并经常用于C ++应用程序中。它们通常使用OLE自动化兼容接口进行运行时编程。
ActiveX控件是COM对象的营销术语,当时微软试图推广这项技术以扩展Web应用程序。
OLE技术比COM作为独立实体早了很长一段时间。在此之前,OLE被实现为一种嵌入和链接对象的方式。经典案例是将电子表格嵌入到Word文档中。COM的基础技术被启用,以便其他语言(如VB)也可以与这些对象交互。
然后,历史上,我们有很多服务器类型的程序员,他们羡慕这些酷东西,如语言独立性、引用计数和线程模型,但并不太关心嵌入技术。理所当然的事情是将底层服务器功能拆分为COM——这是一个更自然的低级API。
这两种技术仍然存在。现在,OLE与ActiveX有点联系在一起或者可能是相同的。