在同一台计算机上使用不同编程语言的不同程序之间发送数据的最佳方式是什么



我正在考虑开发一个可以与各种语言(Python、C、C#、LabVIEW)接口的解决方案,在那里我可以向解决方案发送数据,也可以从解决方案发送。它与FlexRIO系统接口,在该系统中,FPGA将尽快处理大量数据。解决方案本身可以用C或LabVIEW编写(我的限制是我在软件方面可以选择与FlexRIO驱动程序接口)。

该软件将接受预定义的命令(例如RESET:ALL),但数据的大小可能非常大(如1000万个字符的数组)。

例如,我可以用Python编写代码,向该软件发送命令,并获取信息。

当涉及到如何发送这些数据时,我有哪些选择?我在考虑TCP/IP,但我不知道我可能有什么速度和内存限制。两个软件也将在同一台计算机上。

我也处理过类似的问题。您可以使用的解决方案之一是:

  • 串行化数据(protobuf、json、bson、xml)
  • 压缩数据(gzip、snappy、lz4)。的交易是在算法的速度和输出的大小之间
  • 使用进程间通信将blob发送到其他应用程序

另一方则相反。

我使用了protobuf、lz4和WCF管道,它们对频繁的小消息运行良好,但要用您的数据进行测试。

在您的情况下,写入文件和读取文件可能会更快。

管道是一种方式,您提到的所有语言都支持它们。它是一块共享内存,但API意味着它的工作方式就像文件或流,具体取决于语言。

一个程序写入其中,另一个程序从中读取,就像TCP/IP连接一样,但开销较小。

如果你很聪明,你的大部分代码都不知道它使用的是什么类型的流。然后,如果您需要更改机制,那么您的代码几乎不会受到影响。

您可以使用任何数据交换格式来接受应用程序

  1. XML
  2. JSON

因此您可以与任何阻碍进行通信

看看这些链接中应用程序方法之间的一些传输数据:

http://www.codeproject.com/Articles/14740/Fast-IPC-Communication-Using-Shared-Memory-and-Int

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648774%28v=vs.85%29.aspx

http://pic.dhe.ibm.com/infocenter/tivihelp/v23r1/topic/com.ibm.mbs.doc/designer/t_ctr_user_data_transfer.html

相关内容

最新更新