在同一机器上C#和Python应用的通信
我们正在做一个项目,需要和一组特定的硬件进行连接。其中一组硬件可以很简单地用C#来控制,而另一组则是用Python编程的。项目的一部分是让用Python控制的硬件和用C#控制的硬件进行通信,但由于时间紧迫,我们无法为另一组硬件开发C#或Python的软件。
用Python控制的硬件是完全基于事件的,也就是说,我们可以编写一些函数,当硬件满足特定条件时,这些函数就会被调用。我们的想法是修改控制另一组硬件的C#应用程序,让它来运行Python应用程序(可以使用类似Application.Run()
的方式),然后编写Python函数,将相关数据传递给C#应用程序,当硬件发生事件时。
我们考虑使用套接字连接来处理这两个程序之间的通信,因为C#和Python都可以通过这种方式比较简单地实现(我们的Python开发者是这么说的)。我们最大的担忧是,两个程序都在同一台机器上运行,会不会出现什么问题。如果没有问题,我们可能会使用像0MQ这样的共享库。
我们还研究了一些其他的方案:
- 管道 / 命名管道
- 消息队列
- 共享内存
基本上,我们想知道这些方法(或者其他方法)中,哪种在这两种语言中实现起来最简单,哪种性能最好。我们只关心数据的速度和准确性(比如,如果使用网络数据包,尽量减少丢包)。安全性不是我们的关注点。
理想情况下,应该有一个数据流从Python应用程序到C#应用程序,还有两个数据流从C#应用程序到Python应用程序。主机将运行Windows 7。如果需要,我可以提供更多信息。
1 个回答
1
一个选择是试试 IronPython。因为IronPython是一个.NET语言,所以和C#代码交流应该很简单。
看看把你现有的Python代码在IronPython上运行会有多难,似乎是个值得研究的事情。