关于c#:. NET进程间通信的最佳选择是什么?

关于c#:. NET进程间通信的最佳选择是什么?

What is the best choice for .NET inter-process communication?

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


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

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

博客引用:

The WCF and .NET Remoting are really comparable in performance. The differences are so small (measuring client latency) that it does not matter which one is a bit faster. WCF though has much better server throughput than .NET Remoting. If I would start completely new project I would chose the WCF. Anyway the WCF does much more than Remoting and for all those features I love it.

WCF的MSDN部分


如果在单台计算机上,则命名管道可以为您提供更好的性能,并且可以与远程处理基础结构以及WCF一起实现。或者,您可以直接使用System.IO.Pipes。


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

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


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

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

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


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


WCF还提供了灵活性。通过仅更改一些配置(绑定),您就可以在其他计算机上使用相同的服务,而不是在同一计算机上使用IPC。因此,您的代码保持灵活。


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


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


推荐阅读

    linux查询命令进程?

    linux查询命令进程?,系统,名称,总量,情况,状态,进程,材料,工具,电脑,数据,怎

    linux命令如何杀进程?

    linux命令如何杀进程?,状态,系统,暂停,管理,进程,命令,平台,信息,工具,电脑,L

    linux常用命令查进程?

    linux常用命令查进程?,系统,情况,软件,工具,实时,代码,电脑,地址,总量,状态,

    linux命令进程状态?

    linux命令进程状态?,系统,状态,进程,命令,数据,管理,软件,名称,信息,参数,Lin

    linux查进程命令软件?

    linux查进程命令软件?,系统,软件,状态,进程,信息,命令,名称,数据,基础,表示,l

    linux中进程的命令?

    linux中进程的命令?,系统,进程,管理,状态,情况,信息,命令,平台,数据,实时,lin

    重启计算机命令linux?

    重启计算机命令linux?,系统,工作,命令,服务,标准,设备,灵活,首要,意义,参数,L

    linux命令搜索进程?

    linux命令搜索进程?,系统,状态,软件,情况,进程,命令,代码,信息,数据,实时,如

    linux查看命令行进程?

    linux查看命令行进程?,系统,软件,信息,状态,进程,名称,实时,命令,数据,电脑,

    linux计算机的命令?

    linux计算机的命令?,系统,工作,信息,设备,技术,命令,网站,管理,灵活,基础,lin

    监视进程命令linux?

    监视进程命令linux?,系统,状态,工作,地址,信息,进程,软件,命令,数据,实时,如

    linux结束进程命令?

    linux结束进程命令?,系统,软件,管理,进程,名称,数据,单位,状态,数字,代码,Lin

    linux杀进程命令图片?

    linux杀进程命令图片?,系统,工具,图片,进程,管理,名称,传播,工作,命令,后台,L

    linux命令查找进程?

    linux命令查找进程?,系统,名称,软件,状态,进程,电脑,信息,命令,材料,数据,怎

    linux命令校验进程?

    linux命令校验进程?,服务,系统,情况,状态,异常,进程,命令,管理,检测,平台,Lin

    linux中终止进程命令?

    linux中终止进程命令?,系统,进程,信息,管理,命令,代码,传播,状态,名称,数字,l

    linux关闭子进程命令?

    linux关闭子进程命令?,系统,进程,名称,软件,管理,传播,命令,信息,状态,数字,l

    linux用计算器的命令?

    linux用计算器的命令?,代码,环境,情况,异常,工具,数据,位置,平台,精密,设计,

    linux进程运行命令?

    linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,lin

    进程管理linux命令?

    进程管理linux命令?,系统,管理,地址,状态,情况,简介,工具,网络,分析,软件,lin