代码之家  ›  专栏  ›  技术社区  ›  Ofek Shilon

COM/OLE/ActiveX/IDispatch

  •  6
  • Ofek Shilon  · 技术社区  · 15 年前

    我无法理解这些术语之间的差异。

    ActiveX对象只是公开IDispatch的COM对象吗?

    许多旧的MSDN页面提到IDispatch,但没有任何COM上下文。它是否有一个单独的历史,并且在其生命周期的后期刚刚在COM“保护伞”下引入?

    Wikipedia 提供了一些见解,但不多。我找不到更深入的参考资料。

    3 回复  |  直到 15 年前
        1
  •  9
  •   lsalamon    14 年前

    从中找到一些引用 COM Programming by Example

    你很快就会发现另一件事 COM是营销部的一次实地考察 每天都要学习术语。不如 有助于增进了解, 你会发现,在大多数情况下,它促进 神秘的事物OLE、ActiveX、远程 周

    COM从解决方案演变为 处理程序,以在 文字处理器来做这件事。这 随着OLE(OLE2)的第二次发布, 它的创建者将OLE32.DLL修改为 公开更多的基本功能 这样就可以使用它的API了 另一个的功能。这个API,, 自1993年以来变化不大, 是什么被认为是COM

    一旦暴露了COM API, 微软用它创造了我们想要的东西 那个螺旋形的列表框 用Visual C++编写的音乐 应用。最终还是这样 技术被用来进行控制 浏览器此时,名称 纯广告营销 原因。尽管你可以打包任何东西 ActiveX控件中的功能, 它的要求一直在提高

    谢谢你的回答!

        2
  •  5
  •   Jason S    15 年前

    IDispatch是一个由COM对象实现的接口,因此客户端程序可以在运行时(后期绑定)动态调用其方法,而不是在编译时,在编译时需要提前知道所有方法和参数类型。

    OLE是COM的早期版本。

        3
  •  1
  •   Johannes Passing    15 年前

    关于OLE:COM源于OLE。但今天,OLE可能被认为是建立在COM之上的,并且主要用于其名称所暗示的——文档链接和嵌入。虽然COM本身只定义了几个接口(IUnknown、IClassFactory、iAlloc等),但OLE添加了大量额外的接口,如IMoniker、iOleitemComContainer等。