我目前正在为两个需要通信的独立程序开发一个 C#(我也可以使用 python)插件。在第一个程序中,我将 3D 几何解构为边、点、法线等。然后我将所有这些数据发送到我的第二个程序中的插件以进行重建。理想情况下,这会尽可能快地发生,以使事情保持“实时”。
目前,我正在使用 JSON 转换我的数据,并将 JSON 写入磁盘。然后我的第二个程序监视文件更改,然后读取文件并使用 JSON 数据。
到目前为止,我整个插件的最大瓶颈是读/写过程。必须有比写入文件更快的方法。
有几种方法可以使用进程间通信。
最著名的是在不同机器之间使用:WCF(.NET 3.5) 和 Remoting(.NET 2)
对于机器上的通信,您可以选择使用命名管道或内存映射文件。
内存映射文件与您的解决方案类似,因为它们使用页面文件作为备份。
我认为命名管道解决方案是最方便的:您设置一个“服务器”流并等待一些“客户端”连接。然后,您可以像通过任何其他流一样传输数据。
这是 NamedPipeServerStream。
这是 NamedPipeClientStream。
那里的代码示例几乎涵盖了它。
我认为带有命名管道的 WCF 可以完成这项工作,您只需要创建传输对象,这些对象将被序列化,并且这一切都将由 WCF 自动完成,或者您可以只准备现有对象以通过命名管道传输而不是真的大开销。使用 json 会很好,但它会创建额外的层,并且使用 WCF 您可以传输可以立即使用的对象,而无需通过 json 进行翻译。(实际上它们被翻译成xml,但你不是自己做的,所以我认为最好用解析json来做)。