.NET进程间通信的最佳选择是什么?[关闭]


82

我应该使用命名管道还是.NET Remoting与计算机上正在运行的进程进行通信?


1
哇,我基本上只是问exatly同样的问题... stackoverflow.com/questions/84860/...
克里斯埃里克森

Answers:


58

WCF是最佳选择。它支持多种不同的传输机制包括 命名 管道),并且可以完全由配置驱动。我强烈建议您看一下WCF。

这是一个进行WCF与Remoting性能比较的博客。

博客引用:

WCF和.NET Remoting在性能上确实相当。差异是如此之小(测量客户端延迟),以至于哪个快一点都没关系。尽管WCF具有比.NET Remoting更好的服务器吞吐量。如果我要开始一个全新的项目,我会选择WCF。无论如何,WCF的功能远不止Remoting,而且我喜欢它的所有这些功能。

WCF的MSDN部分


1
支持远程处理的更多证据。来自Microsoft Remoting / WCF团队的一位人士说:“ Remoting投入的开发资金非常少。WCF是Remoting的后继产品。” 从这里stackoverflow.com/questions/1294494/…–
MarkJ


5

如果您是指进程间通信,那么到目前为止,我使用.NET Remoting都没有任何问题。如果两个进程在同一台机器上,则通信速度非常快。

命名管道绝对有效,但是它们要求至少设计一个基本的应用程序协议,这可能不可行。远程处理使您可以轻松地调用远程方法。


3
WCF在命名管道上也允许这样做。您可以在两个流程中使用相同的合同程序集。
肯特·布加亚特

3

.NET Framework 2.0中的远程处理为同一计算机内的进程间通信提供了IPC通道


3

如果您使用的是.NET Framework 3.0或更高版本,则应使用WCF。使用WCF,您可以使用基于性能/互操作/等之间权衡的不同绑定。您需要的。

如果性能不是很关键,并且需要与其他Web Service技术互操作,则将需要使用WS-HTTP绑定。对于您的情况,可以将WCF与net-tcp绑定或命名管道绑定一起使用。两者都应该起作用。

我个人认为,WCF方法更干净,因为您可以进行合同驱动的服务,并专注于消息而不是对象(我在此基于WCF / .NET Remoting的默认编程模型进行概括)。我不喜欢通过电线发送对象,因为很多语义信息会丢失或不清楚。当您像使用WCF一样发送消息时,可以更轻松地将通信和单个节点组成的类/基础结构之间的关注点分开。



1

.Net远程处理本身并不是一个协议。它使您可以选择要使用的协议:SOAP,命名管道等。


0

.net远程处理内置于.net中,以进行内部进程通信。如果您使用它,他们将继续支持并可能在将来的版本中对其进行增强。命名管道并不能保证您会在.net的未来版本中得到增强


2
它们不太可能会增强远程处理能力。来自Remoting / WCF团队的某人说:“ Remoting投入的开发资金非常少。WCF是Remoting的后继产品。” 从这里stackoverflow.com/questions/1294494/…–
MarkJ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.