学习COM还有用吗?

学习COM还有用吗?,com,Com,从一个想了解更多关于Windows内部构件的人,读《Windows内部构件》一书,并想进入驱动程序开发领域,学习COM编程是一个好主意吗 我应该深入到多深?考虑到上述因素,只需了解基础知识,或者需要进一步了解。COM在当前开发中使用不多,但仍有大量软件在使用它。只要了解基本知识就足够了。Windows设备驱动程序与COM无关。您可以放心地忽略它。COM对内核模式驱动程序的开发也没有太大的价值,但它对用户模式驱动程序可能很有用。例如,DirectShow是COM,甚至在内核模式的DShow过滤器中

从一个想了解更多关于Windows内部构件的人,读《Windows内部构件》一书,并想进入驱动程序开发领域,学习COM编程是一个好主意吗


我应该深入到多深?考虑到上述因素,只需了解基础知识,或者需要进一步了解。

COM在当前开发中使用不多,但仍有大量软件在使用它。只要了解基本知识就足够了。

Windows设备驱动程序与COM无关。您可以放心地忽略它。

COM对内核模式驱动程序的开发也没有太大的价值,但它对用户模式驱动程序可能很有用。例如,DirectShow是COM,甚至在内核模式的DShow过滤器中使用了一个轻量级的COM模拟

有很多代码是COM,遗留代码需要几年或几十年才能消失。但更重要的是,在C/C++中使用.NET程序集时,它看起来像COM对象,因此我认为如果您打算继续编写C/C++代码,了解COM仍然有一定的价值


如果您计划切换到C#、Java或其他几十种语言中的一种,而没有大多数程序员(从这里的问题来看)采用的指针,那么不值得付出机会成本。

一方面,COM似乎是Microsoft在本机代码和托管(.Net)代码之间进行互操作的首选方法。老实说,.Net确实很好地处理COM

另一方面,用不朽的话来说:

COM就像吸烟:如果你还没有开始,你就不应该现在就开始,如果你已经开始了,是时候停止了


P>个人,当我需要和现有的COM对象(如MSXML)交谈时,我需要使用它,或者如果我绝对需要从原生代码与.NET程序集进行对话,在这个代码中,非托管出口之类的东西不是一个选项,但不要认为它对新的开发有用。多媒体驱动程序堆栈使用COM的一种形式。+1是事实,但海报可能会遇到大量使用“类似COM”接口的低级API。我在vssapi中遇到了这个问题,它有一个独立的IUnknown实现。了解COM使我能够更快地理解API。当你在这里侮辱别人时,他们往往会对你的回答投反对票,所以我不这么认为D“COM在当前开发中使用不多”。。真正地我主要在.net中工作,但花了很多时间与基于COM的组件进行交互!是的,这就是为什么我说他应该学习基础知识。创建新的COM组件,并不是那么多。如果你得到一份开发COM的工作,就尽可能快地朝相反的方向运行。-1,这个答案根本不能解决最初的问题。Kevin的回答是这样的。我应该在我的评论中补充的是,我使用的基于COM的组件正在积极开发中