COM技术似乎已经过时了,但仍在使用中。但是,在构建.NET应用程序时,特别是在WPF中,建议采用什么方法来实现相同类型的互操作性?
即。什么是COM对象的现代替代品?
答案 0 :(得分:8)
.NET非常希望成为COM的替代品。该项目正在进行中有许多名称,但它的起点是“COM +”。这种影响在许多地方仍然很明显。 CLR的许多核心源代码文件都以名称“com”开头,即使CLR使用(几乎)根本没有COM。托管异常的Windows异常代码为0xE0434F4D。代码的最后3个字节值是“COM”的ASCII。
WCF取代的断言并不准确。它取代了.NET Remoting。 COM具有非常广泛的范围,它是一个通用的互操作工具,很像CLR允许多种语言进行互操作。它的一个特性是支持不同进程和机器之间的互操作,也许是声明的来源。但这仅仅是其中的一部分。
仍有许多COM应用程序尚未被.NET取代。最好的例子是Windows shell,Explorer.exe。很难做到像在C#中创建上下文菜单shell扩展一样简单的事情。直到.NET 4.0强烈反对。
答案 1 :(得分:7)
一般来说,.NET 本身是COM的替代品,COM对象的替代品是.NET程序集。例如,参见Don Box和Chris Sells的the highly suggestive chapter title of this early .NET book(他们可以非常肯定地知道他们在谈论什么......)
答案 2 :(得分:5)
答案 3 :(得分:2)
查看this wikipedia article中的第一段。
WCF是COM的现代替代品。