假设您只在 C++ 世界中工作(不需要跨语言互操作)。您认为使用 COM 而不是普通的基本 DLL 有哪些优势/不便?如果您不打算使用来自不同语言的界面,您认为使用 COM 值得吗?
最佳答案
每个人都在提到 COM 的加号列中的内容。我会提到几个缺点。
当您使用 COM 实现您的系统时,您需要在安装时注册 COM“服务器”(无论是进程内还是进程外),并在卸载时注销它们。这可能会稍微增加设置系统的复杂性,并且往往需要重新启动,除非用户先小心地拆除正在运行的进程。
与做同样事情的其他标准方法相比,COM 速度较慢。此评论可能会引起很多仇恨,也可能会产生一些反对票,但事实是,在某些时候您将需要整理数据,而这是昂贵的。
根据 COM 规则,接口(interface)一旦发布就永远无法更改。这本身并不是消极的,你甚至可能会争辩说它迫使你在发布界面之前进行彻底的设计。但事实是没有永远不会这样的事情,而且在生产代码中接口(interface)会发生变化。您无疑需要添加方法或更改现有方法的签名。为了实现这一点,您必须要么打破 COM 的规则——这会产生不良影响——要么遵循 COM 的规则,这些规则比直接向函数添加参数更复杂,就像使用直接的 DLL 一样。
关于c++ - 与普通 DLL 相比,使用 COM 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986972/