【发布时间】:2010-10-18 06:48:14
【问题描述】:
我无法理解 XPCOM。它与 COM 有何不同?是什么让它跨平台?
它是一个包含一组可用于完成某些工作的库的框架吗?
另外,组件对象模型是否意味着每个功能都在组件中实现,所以我们可以在不知道具体实现的情况下使用它?
有人能帮我理解一下吗? 谢谢, 陈。
【问题讨论】:
我无法理解 XPCOM。它与 COM 有何不同?是什么让它跨平台?
它是一个包含一组可用于完成某些工作的库的框架吗?
另外,组件对象模型是否意味着每个功能都在组件中实现,所以我们可以在不知道具体实现的情况下使用它?
有人能帮我理解一下吗? 谢谢, 陈。
【问题讨论】:
我无法理解 XPCOM。 它与 COM 有何不同?
XPCOM 是 Mozilla 自己的跨平台(因此有 XP 位)版本的 COM。
是什么让它跨平台?
它是在一个库中实现的,该库已由 Mozilla 开源项目的贡献者移植到许多平台。您可以为您希望的任何平台构建它或下载二进制文件,并且如果您想在尚不支持的平台上使用它,那么您自己移植它应该很简单。
同样,组件对象模型 意味着每个功能都是 在组件中实现,因此我们可以使用 它不知道细节 实施?
是的,当机立断。这个想法是建立一个独立于语言的框架,它使不同的组件能够进行通信和交互,而不需要任何特殊的语言知识来实现任何特定的组件。因此,例如,javascript 代码可以调用 C++ 代码。
这是通过发布定义良好的接口的组件实现的,使用一种称为IDL 的语言(或者,在 XPCOM 的情况下,XPIDL)。这些接口使用定义良好的类型以及每种支持语言的映射。每个接口都继承自一个通用基接口,该接口提供了用于引用计数和类型推断的标准方法(在 COM 中称为 IUnknown,在 XPCOM 中称为 nsISupports)。
谁能帮我理解 请问这个?
在线资源方面,MSDN (for COM) 和MDC (for XPCOM) 都有专门的区域。如果您想真正了解 COM 的动机以及为什么会这样,我建议您选择Don Box 的Essential COM。当然,如果您有任何需要回答的具体问题,您可以随时来这里提问。 :)
【讨论】: