.NET中的DCOM是否可行?

时间:2009-11-02 10:11:59

标签: .net wcf com dcom

我知道.net有WCF,我认为当代号为Indigo(?)时它被吹捧为COM的替代品 - 但它实际上适合在.NET应用程序中使用,提供与C ++ /相同的功能DCOM应用程序?

客户端 - 服务器系统上的DCOM应用程序可能很痛苦,但我认为与其他选项(如网络服务)相比它非常有效 - 无论如何还有其他问题。

那么,WCF是(D)COM的真正继承者还是它有不同的目标?

编辑:我正在谈论分布式应用程序和远程控制 - 例如服务器可以在工作站上启动对话框,工作站可以调用服务器上的方法来发送响应等等。我添加了'D'相应地我的头衔。

4 个答案:

答案 0 :(得分:8)

WCF从未被认为是COM的替代品。 .NET框架本身就是COM的替代品。

WCF旨在为编写客户端/服务器应用程序(如SOAP Web服务和远程处理应用程序)提供通用接口,而不依赖于所使用的协议/传输/序列化机制。

答案 1 :(得分:2)

通过选择正确的行为/序列化/协议,您可以非常有效地使用WCF。 实际上使用带有dot-net的COM / DCOM效率较低今天b / c从dot net传递到com的速度很慢。

答案 2 :(得分:1)

我不知道任何为DCOM命名继任者的官方指导,但.NET有两个框架可以取代DCOM的使用。它们是WCF和.NET Remoting。

WCF可以用作DCOM提供的所有传输功能的替代品。如果您处于无法使用.NET 3.0或更新版本的情况;您只能使用.NET远程处理。 .NET中的两个框架都允许您发出调用并将执行控制权转移给其他线程,进程和计算机中的主机。远程处理可能是DCOM的替代品,它也可以处理几乎所有的传输功能,但采用率并不高。

一般来说,大多数人现在更喜欢WCF,因为一切都已定义良好,并且有大量功能可以控制通过WCF进行的调用方面。如今,常规.NET远程处理在某种程度上已被废弃,因为您需要管理线路两端的类型信息 - 与DCOM相比,这并没有显着改善负担。此外,它没有共享内存传输,因此线程内/进程内部通信仅使用基于套接字的通信进行设置,并受到环回套接字性能的限制。

关于您提到的一般情况,几乎任何应用程序都可以通过WCF或Remoting连接到其他应用程序。大多数棘手的问题涉及与Web应用程序中的托管组件进行通信。通常,这通常不会完成 - 从它们发出呼叫但很少在http / https网络活动之外接受。安全性和身份管理也很棘手,但与DCOM基于配置的设置相比有很大改进。

总的来说,WCF和.NET Remoting都明显优于DCOM。它们更容易设置和维护,并且没有与COM组件在DCOM下使用相同的注册难题。此外,您可以获得内在的好处,例如.NET中的故障条件的自然库异常;而在DCOM中,您必须担心在应用程序代码中优雅地处理失败的传递和超时。仅此一项就可以显着减少为处理这些条件而必须编写的代码量,并且通过异步调用,您也可以随时退出长时间操作。在DCOM中做得好是非常棘手的。

答案 3 :(得分:-1)

每项技术都有自己的力量。 WCF不是COM的替代品。

场景使用COM的位置:

我们可以利用.Net应用程序中的现有技术。 原因:许多组织(银行/电信/医疗保健系统)可能会在自动化上投入大量资金。他们喜欢使用最新技术进行迁移(并非所有业务流程,都应该是流程的一部分)。那么,那么可以选择最新的技术。但是,它们遵循现有代码的业务流程(代码可以是任何东西,COM ......)。因此,它将降低开发成本,时间,调试和更多因素。每种技术都应该具有向后兼容性,否则它将无法适应这个竞争激烈的世界。这就是.Net引入INTEROPERABILITY的原因。 (RCW,CCW等)。