我知道这里有一个链接,它讨论了一些关于 COM 和 XPCOM 之间的区别。
但是,我想更详细地了解这个话题。例如,对于引用计数和类型推断,COM 继承自 IUnknown,XPCOM 继承自 nsISupport。除了命名之外,IUnkown 和 nsISupoort 有什么区别?
此外,这两个不同的组件是否支持不同的线程管理或内存管理?像这样的话题我真的很感兴趣。
如果您知道,请回复此帖子。谢谢
我知道这里有一个链接,它讨论了一些关于 COM 和 XPCOM 之间的区别。
但是,我想更详细地了解这个话题。例如,对于引用计数和类型推断,COM 继承自 IUnknown,XPCOM 继承自 nsISupport。除了命名之外,IUnkown 和 nsISupoort 有什么区别?
此外,这两个不同的组件是否支持不同的线程管理或内存管理?像这样的话题我真的很感兴趣。
如果您知道,请回复此帖子。谢谢
除了命名之外,IUnkown 和 nsISupoort 有什么区别?
没有,真的。nsISupoort
专门设计为与 二进制兼容IUnknown
,以使 FireFox 更容易托管 ActiveX 控件,并将其本身作为 ActiveX 控件公开。
这两个不同的组件是否支持不同的线程管理或内存管理?
是的。XPCOM 使用自己的内存分配器(nsMemory::Alloc
等),完全独立于 COM 分配器(CoTaskMemAlloc
等)。COM 提供了一组广泛的线程模型以及编组支持。XPCOM 几乎不处理线程(请参阅nsIProxyObjectManager
参考资料),并且没有编组的概念。
警告:此信息很可能已过时。我对 Mozilla 开发状态的熟悉度是 2010 年左右的最新情况。