【问题标题】:COM vs. XPCOM the difference between these twoCOM vs. XPCOM 这两者的区别
【发布时间】:2014-03-26 02:31:26
【问题描述】:
我知道这里有一个链接,讨论了一点关于 COM 和 XPCOM 之间的区别。
What is XPCOM? XPCOM vs COM?
但是,我想更详细地了解这个主题。
例如,对于引用计数和类型推断,COM 继承自 IUnknown,XPCOM 继承自 nsISupport。 IUnkown 和 nsISupoort 除了命名有什么区别?
此外,这两个不同的组件是否支持不同的线程管理或内存管理?像这样的话题我真的很感兴趣。
如果您知道,请回复此帖子。
谢谢
【问题讨论】:
标签:
com
xpcom
firefox-os
b2g
【解决方案1】:
除了命名之外,IUnkown 和 nsISupoort 有什么区别?
没有,真的。 nsISupoort 专门设计为与 IUnknown 二进制兼容,以使 FireFox 更容易托管 ActiveX 控件,并将其本身作为 ActiveX 控件公开。
这两个不同的组件是否支持不同的线程管理或内存管理?
是的。 XPCOM 使用自己的内存分配器(nsMemory::Alloc 等),完全独立于 COM 分配器(CoTaskMemAlloc 等)。 COM 提供了一组广泛的线程模型以及编组支持。 XPCOM 几乎不处理线程(参见nsIProxyObjectManager),并且没有编组的概念。
警告:此信息很可能已过时。我对 Mozilla 开发状态的了解是 2010 年左右的。