1

我知道这里有一个链接,它讨论了一些关于 COM 和 XPCOM 之间的区别。

什么是 XPCOM?XPCOM VS COM?

但是,我想更详细地了解这个话题。例如,对于引用计数和类型推断,COM 继承自 IUnknown,XPCOM 继承自 nsISupport。除了命名之外,IUnkown 和 nsISupoort 有什么区别?

此外,这两个不同的组件是否支持不同的线程管理或内存管理?像这样的话题我真的很感兴趣。

如果您知道,请回复此帖子。谢谢

4

1 回答 1

3

除了命名之外,IUnkown 和 nsISupoort 有什么区别?

没有,真的。nsISupoort专门设计为与 二进制兼容IUnknown,以使 FireFox 更容易托管 ActiveX 控件,并将其本身作为 ActiveX 控件公开。

这两个不同的组件是否支持不同的线程管理或内存管理?

是的。XPCOM 使用自己的内存分配器(nsMemory::Alloc等),完全独立于 COM 分配器(CoTaskMemAlloc等)。COM 提供了一组广泛的线程模型以及编组支持。XPCOM 几乎不处理线程(请参阅nsIProxyObjectManager参考资料),并且没有编组的概念。

警告:此信息很可能已过时。我对 Mozilla 开发状态的熟悉度是 2010 年左右的最新情况。

于 2014-02-24T23:34:04.773 回答