繁体   English   中英

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

[英]Sending large volume of data between two C# programs

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM