Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET中的进程间通信_C#_.net_Ipc - Fatal编程技术网

C# NET中的进程间通信

C# NET中的进程间通信,c#,.net,ipc,C#,.net,Ipc,我有一个核心.NET应用程序,它需要生成任意数量的子进程。这些进程需要能够访问核心应用程序中某种形式的状态对象 最好的技术是什么?我将在进程(位图)之间移动大量数据,因此它需要很快。我有类似的要求,现在正在使用它。不过,我的数据大小可能要小一些 作为参考,我在一台四核机器上每秒处理大约30-60个5K-30K的请求。到目前为止,WCF一直表现良好 使用WCF,您还可以选择适合您的应用程序的传输协议和安全模式。如果您确实需要单独的进程,那么总会有一些运行良好的进程 但是,AppDomain边界是否

我有一个核心.NET应用程序,它需要生成任意数量的子进程。这些进程需要能够访问核心应用程序中某种形式的状态对象


最好的技术是什么?我将在进程(位图)之间移动大量数据,因此它需要很快。

我有类似的要求,现在正在使用它。不过,我的数据大小可能要小一些

作为参考,我在一台四核机器上每秒处理大约30-60个5K-30K的请求。到目前为止,WCF一直表现良好


使用WCF,您还可以选择适合您的应用程序的传输协议和安全模式。

如果您确实需要单独的进程,那么总会有一些运行良好的进程


但是,AppDomain边界是否足够?然后你可以做对象封送,事情会简单得多。应用程序可以使用该属性处理同一对象的共享实例。

我不太愿意移动大数据,我倾向于移动指向大数据的指针,即内存映射文件。

您可以使用.NET远程处理进行进程间通信(IPC)。否则,您可以搜索共享内存包装器和其他IPC表单


编辑:有一个比较WCF和包括远程处理在内的各种方法的方法。然而,除非我读错了条形图,否则它显示远程处理与其他评论所说的相同或稍好一些。还有一个关于WCF和远程处理的问题。这篇博文清楚地表明,对于二进制对象来说,远程处理速度更快,如果您正在传递位图(二进制对象),那么远程处理、共享内存或其他IPC选项可能会更快,尽管WCF可能不是一个坏的选择。

WCF可能符合要求

下面是一个用于执行分布式密集型分析的示例。虽然远程处理已经被WCF所取代,但这篇文章是相关的,并展示了如何异步进行调用,等等


这--编辑:这里的要点显示,WCF吞吐量在小数据方面优于远程处理,但随着数据大小的增加,其性能接近远程处理。

我认为Jarvis的意思是,使用内存映射文件在两个或多个进程之间共享内存。当然。内存映射文件专门设计为能够在进程之间共享内存。有趣的是,C#4.0现在已经为这个任务构建了MMF类。