在C#中两个进程之间进行通信的最快和最简单的方法是什么?

时间:2014-05-23 09:58:03

标签: c# xml serialization deserialization ipc

从我的主c#app开始,我使用Process.Start方法启动了许多奴隶进程。 (在同一台PC上)

在启动这些从属进程之前,我在 XML文件中序列化一些数据(我有序列化类),这些数据在Process类的参数中传递。

在每个从属进程中,对这些数据进行反序列化并进行计算。对XML进行了新的序列化,以便将结果发送到主进程。

我的应用有效,但性能非常糟糕。 序列化/反序列化操作的时间太长,因为每个XML文件的大小约为1.5 Mo ......

我真的需要高性能才能在主应用和从属进程之间进行简单的通信。

如何轻松修改代码以提高性能? Nb:将来我的主进程将是64位,从站进程为32位。

我听说有些应用允许在RAM中虚拟化硬盘?它存在吗?它是免费的吗?

我听说过WCF,命名管道,内存映射等,但我似乎很难用......?

2 个答案:

答案 0 :(得分:2)

内存映射文件(MMF)是最快的方法。但是,正如您所指出的,问题在于序列化而不是转移本身。任何传输都需要序列化,甚至MMF(除了最简单的情况,当你有简单的数据记录,可以在内存中顺序排列)。 XML并不快 - 任何类型的二进制序列化都会更好。

答案 1 :(得分:0)

使用SlimSerializer 从这里: https://github.com/aumcode/nfx/tree/master/Source/NFX/Serialization/Slim

单个线程上的第二个成千上万的序列化事务 - 这是针对"典型的Person"对象(姓名,地址,联系信息,薪水)

另外see this post about Glue

胶水专为"胶水"非常有效地共同处理

Video

Another Video (In Russian)