【发布时间】:2010-11-20 15:18:47
【问题描述】:
每个人都在说 .NET Remoting 如何被 WCF 取代,但我想知道这到底有多准确。我还没有看到任何官方消息说 Remoting 已被弃用,而且在我看来,在某些情况下,Remoting 肯定比 WCF 更有意义。即使在框架的 4.0 版中,也没有弃用任何与远程处理相关的对象或方法。我也理解3.5和4.0框架中的System.AddIn使用Remoting。
有没有人有任何相反的官方说法?
在文章中,Choosing Communication Options in .NET(对于 3.0,因为那是那篇文章的最新版本),它指出:
8 跨应用域通信
如果您需要支持同一进程内不同应用程序域中的对象之间的通信,则必须使用 .NET 远程处理。
现在,这当然是不准确的,因为 WCF 确实可以用于跨越应用程序域的边界,但它是否给出了针对该场景的官方建议?
更新:我向 Clemens Vasters(他在拥有 Remoting 和 WCF 的团队中)发送了这个问题:
Clemens,我知道您在同时拥有远程处理和 wcf 的团队中,我有几个问题,我认为我需要找到源头。
首先,我有一个关于远程处理是否会消失的问题。具体来说,我们有一个相当大的应用程序,它广泛使用远程处理进行进程内跨应用程序域通信,我想知道这种远程处理的使用是否被认为是“遗留”。如果是这样,AppDomain.CreateInstance 和朋友会被其他东西替换吗?
这是他的回复:
Remoting 是 .Net 框架的一部分,因此它不会消失。 COM 从 Windows NT 3.5/Windows 95 开始就在 Windows 中,并且没有消失,我也认为它不会很快消失。
也就是说,Remoting 的开发投资非常少。 WCF 是 Remoting 的继承者,并取代了 COM/DCOM 用于托管代码。
对于进程内、跨应用程序域通信 Remoting 是 CLR 的本机通信方式。如果您发现在短时间内抽取大量数据或大量消息时出现性能问题,您应该认真研究 WCF 和 NetNamedPipeBinding。
【问题讨论】:
-
请参阅stackoverflow.com/questions/1295353/…,了解为什么在我的特定情况下 WCF 比远程处理慢得多。
-
Remoting 是 .NET 所固有的,它所扮演的角色及其工作方式的详细信息可以在 Don Box 和 Chris Sells 的 Essential .NET 中找到。但是,当组件间通信不可靠或速度慢时,它就会崩溃,并且与进程内消息传递相比,几乎所有传输(甚至是千兆位 LAN)都不可靠且速度慢。当人们谈论 WCF 慢时,他们通常会想到 Web 服务。如果您尝试将 Web 服务用于进程内通信,则 Web 服务会太慢。但是,它们旨在容忍缓慢和不可靠的连接,并在这些条件下运行良好。
-
@Peter:感谢您提供的信息,但您的一些假设是完全错误的。一,远程处理缓慢或不可靠。它不是。它非常快,非常可靠(当然是通过可靠的渠道)。另一个是“网络服务”(不管那是什么意思)很慢。他们不是。当然,任何进程中的任何东西都会比网络上的任何东西快得多,但这根本不是这个问题的意义所在......
-
现在 wcf 快死了,微软推荐 grpc...