我想了解.NET和COM的目的,
答案 0 :(得分:6)
COM的一个原因是,如果您在Borland C ++构建器中开发了C ++库,则无法在VB6中使用它。但你也不能在VC6中使用它(COM比这些产品更老了)。所以COM是一个C类协议,用于应用程序和库之间的互操作性。 .NET允许托管应用程序之间的互操作性。如果要与C ++互操作,请使用C ++ / CLI。但是如果你有一个希望使用.NET组件的传统COBOL应用程序,你会怎么做?将该组件公开为COM将是一种接近它的方法。公开类似API的API是另一种方式。
自从80年代末以来COM一直存在(我认为)以来,COM技术已经建立了很多商业价值,这并不令人惊讶。它没有任何商业意义,并且将工作应用程序重写为.NET只是为了它的乐趣而且成本太高且风险太大。因此,必须维护遗留应用程序的公司自然会拥有大量基于COM的工具和应用程序。
这完全取决于您的商业案例。你能不能只使用.NET平台我猜你不需要知道COM(虽然.NET由.NET平台使用,有时会出现错误泄漏)。如果您正在使用操作系统或其他库公开的COM库,那么了解一些基本的COM规则是有意义的。
PS。我喜欢COM。我不喜欢注册部分,我不喜欢DCOM,我认为最终COM公寓比帮助开发人员更困惑(它最初是为帮助开发人员避免竞争条件和相关问题而开发的)。但核心COM相当不错。一些争吵已经结束“是COM OO吗?”但归结为我们为什么要使用OO? IMO给予封装。那么问题是:“COM是否提供了良好的封装?”。答案是肯定的(IMO)。
PS。最后我检查了Firefox使用了一个名为XPCOM的东西,看起来很像我的COM。
答案 1 :(得分:1)
您可能会发现此Channel9视频很有趣。微软COM / WCF专家Juval Lowy表示,可能每个类都有一个WCF服务,类似于DCOM
http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Every-Class-a-WCF-Service-with-Juval-Lowy/
该链接认为,随着时间的推移,在易用性和易于开发的性能方面做出了妥协。随着这种趋势的继续,降低了对低级COM / DCOM编程的需求。当然,这并不涵盖所有情况,但它确实涵盖了许多非关键业务需求。
你应该学习COM吗?就目前而言,WCF(以及.NET的其他部分)基于COM。了解COM将有助于排除那些出现的低级别问题,但除非是您的主要或次要职业重点,否则我不会花很多时间在它上面。