在两个c#程序之间发送大量数据

本文关键字:之间 数据 程序 两个 | 更新日期: 2023-09-27 18:18:09

我目前正在为两个需要通信的独立程序开发c#(我也可以使用python)插件。在第一个程序中,我将3D几何解构为边缘,点,法线等。然后,我将所有这些数据发送到第二个程序中要重新构建的插件。理想情况下,这将尽可能快地发生,以保持"实时"。

目前,我正在用JSON转换我的数据,并将JSON写入磁盘。然后我的第二个程序监视文件更改,然后读取文件并使用JSON数据。

到目前为止,我的整个插件最大的瓶颈是读/写过程。一定有比写入文件更快的方法

在两个c#程序之间发送大量数据

有几种使用进程间通信的方法。
最著名的是在不同的机器之间使用:WCF(;. NET 3.5)和Remoting(。净2)

对于机器通信,您可以选择使用命名管道或内存映射文件。

内存映射文件与您的解决方案类似,因为它们使用页面文件作为备份。

我认为命名管道解决方案是最方便的:您设置了一个"服务器"流并等待某个"客户端"连接。然后你传输数据,就像你通过任何其他流一样。

NamedPipeServerStream。
这是NamedPipeClientStream。
这里的代码示例几乎涵盖了它。

我认为带有命名管道的WCF会完成这项工作,你只需要创建传输对象,这将被序列化,它将由WCF自动完成,或者你可以准备你现有的对象通过命名管道传输,而不是真正大的开销。使用json会很好,但它会创建额外的层,并且使用WCF可以传输可以立即使用的对象,而无需通过json进行转换。(实际上它们被翻译成xml,但你不能自己做,所以我认为这比解析json更好)