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

Posted

技术标签:

【中文标题】.NET 进程间通信的最佳选择是啥? [关闭]【英文标题】:What is the best choice for .NET inter-process communication? [closed].NET 进程间通信的最佳选择是什么? [关闭] 【发布时间】:2008-09-17 16:05:21 【问题描述】:

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

【问题讨论】:

哇,我基本上只是问了同样的问题...***.com/questions/84860/… 【参考方案1】:

WCF 是最佳选择。支持a number of different transport mechanisms(includingNamedPipes),可以完全配置驱动。我强烈建议您看看 WCF。

这是一个写WCF vs Remoting performance comparison的博客。

引自博客:

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

MSDN Section for WCF

【讨论】:

支持远程处理的进一步证据。来自 Microsoft remoting/WCF 团队的某个人:“Remoting 的开发投资非常少。WCF 是 Remoting 的继承者。”从这里***.com/questions/1294494/…【参考方案2】:

如果它在一台机器上,命名管道可以为您提供更好的性能,并且可以使用remoting infrastructure 以及 WCF 来实现。或者你可以直接使用System.IO.Pipes。

【讨论】:

【参考方案3】:

如果您的意思是进程间通信,我使用 .NET Remoting 到目前为止没有任何问题。如果这两个进程在同一台机器上,那么通信是相当快的。

命名管道肯定更高效,但它们至少需要设计一个基本的应用程序协议,这可能不可行。远程处理允许您轻松调用远程方法。

【讨论】:

命名管道上的 WCF 也允许这样做。您可以在两个流程中使用相同的合同程序集。【参考方案4】:

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

【讨论】:

【参考方案5】:

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

如果性能不是很重要,并且您需要与其他 Web 服务技术互操作,那么您将希望使用 WS-HTTP 绑定。对于您的情况,您可以将 WCF 与 net-tcp 绑定或命名管道绑定一起使用。要么应该工作。

我个人的看法是,WCF 方法更简洁,因为您可以执行合同驱动的服务并专注于消息,而不是对象(我在这里根据 WCF/.NET Remoting 的默认编程模型进行概括) .我不喜欢通过网络发送对象,因为很多语义信息会丢失或不清楚。当您所做的只是像使用 WCF 一样发送消息时,将您的关注点与通信和单个节点组成的类/基础架构分开会变得更容易。

【讨论】:

【参考方案6】:

WCF 还提供了灵活性。只需更改一些配置(绑定),您就可以在其他机器上拥有相同的服务,而不是在同一台机器上使用 IPC。因此,您的代码仍然很灵活。

【讨论】:

.NET 的 IPC API 列表:weblogs.asp.net/ricardoperes/…【参考方案7】:

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

【讨论】:

【参考方案8】:

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

【讨论】:

它们不太可能增强远程处理。来自远程处理/WCF 团队的某个人:“远程处理的开发投资非常少。WCF 是远程处理的继承者。”从这里***.com/questions/1294494/…

以上是关于.NET 进程间通信的最佳选择是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java 和 .NET 3.5 之间进程间通信的最佳方法是啥?

通过进程间通信将停止参数从.NET应用程序传递给服务的最佳技术是啥?

在 .NET 中,同一台机器上的两个进程进行通信的最佳方式是啥?

大型项目中进程间通信的最佳和最简单方法

C# (.NET 2.0) 中 Windows 的进程间通信

进程间速度最快的通信机制是啥?