.NET替代COM吗?

时间:2010-08-14 13:13:33

标签: com .net .net-3.5 .net-4.0

我想了解.NET和COM的目的,

  • .NET与COM的目的是否相同?因为COM的主要目的是允许.NET的语言互操作性?
  • 如果是这样的话为什么许多公司仍在使用COM进行开发项目?
  • 当我们可以使用.NET时,是否值得学习COM?

2 个答案:

答案 0 :(得分:6)

  1. COM的一个原因是,如果您在Borland C ++构建器中开发了C ++库,则无法在VB6中使用它。但你也不能在VC6中使用它(COM比这些产品更老了)。所以COM是一个C类协议,用于应用程序和库之间的互操作性。 .NET允许托管应用程序之间的互操作性。如果要与C ++互操作,请使用C ++ / CLI。但是如果你有一个希望使用.NET组件的传统COBOL应用程序,你会怎么做?将该组件公开为COM将是一种接近它的方法。公开类似API的API是另一种方式。

  2. 自从80年代末以来COM一直存在(我认为)以来,COM技术已经建立了很多商业价值,这并不令人惊讶。它没有任何商业意义,并且将工作应用程序重写为.NET只是为了它的乐趣而且成本太高且风险太大。因此,必须维护遗留应用程序的公司自然会拥有大量基于COM的工具和应用程序。

  3. 这完全取决于您的商业案例。你能不能只使用.NET平台我猜你不需要知道COM(虽然.NET由.NET平台使用,有时会出现错误泄漏)。如果您正在使用操作系统或其他库公开的COM库,那么了解一些基本的COM规则是有意义的。

  4. 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将有助于排除那些出现的低级别问题,但除非是您的主要或次要职业重点,否则我不会花很多时间在它上面。