假设您只在C++世界中工作(不需要跨语言互操作)。您认为使用COM而不是普通的基本DLL有什么优点/不便之处?如果您不打算使用来自不同语言的接口,您认为使用COM值得麻烦吗?
发布于 2009-06-12 14:52:26
每个人都在提到COM's plus专栏中的内容。我会提到一些贬损。
发布于 2009-06-12 14:40:10
COM在普通的老式C++中很有用,用于:
也就是说,如果你不需要它,就不要使用它。
发布于 2009-06-12 14:44:59
使用DLL,您可以获得更紧密的耦合,而COM则非常精确地限制交互。这就是优点和缺点的根源!
您获得了更多的功能和灵活性(例如,从DLL中定义的类继承,但在COM中是不可行的),但依赖性也因此更强(需要为DLL的某些更改重新构建用户,等等)。
通常,尤其令人难堪的是,所有all和EXE必须使用相同类型的运行时库和选项(例如,所有动态链接到msvcrt*的非调试多线程版本--不能只重新构建一个来使用调试版本,而不会导致很可能的错误!)。
因此,COM的松散耦合通常是可取的,除非您在特定情况下确实需要更紧密耦合类型的交互(例如,一定需要用户代码从其类继承的框架应该是DLL)。
https://stackoverflow.com/questions/986972
复制相似问题