托管在同一台机器上的C#和Python应用程序之间的通信

时间:2012-02-17 00:33:48

标签: c# python interface tcp communication

我们正在开展一个项目,要求我们与一组特定的硬件进行交互;使用C#可以很容易地控制一组,另一组使用Python进行本机编程。该项目的一部分涉及让在Python上运行的硬件与通过C#运行的硬件进行通信,不幸的是,由于时间限制,我们无法创建一组C#或Python软件来控制另一组硬件。

在Python上运行的硬件集完全基于事件,因为我们可以编程在硬件满足某些条件时调用的函数。我们的想法是修改控制另一组硬件的C#应用​​程序以托管Python应用程序(使用Application.Run()之类的东西),然后编写Python函数以将相关数据传播到C#应用程序,因为事件来自硬件

我们正在考虑使用套接字连接来处理两者之间的通信,因为C#和Python都很容易以这种方式工作(或者我们的Python人声称)。我们最关心的问题是,如果两个程序都托管在同一台机器上,那么会出现任何问题。如果这不是问题,我们可能最终会使用共享库,例如0MQ

我们还对以下几个方面进行了一些研究:

  • 管道/命名管道
  • 消息队列
  • 共享内存

基本上我们想知道这些(或任何其他)的哪种方法最容易用这些语言实现,哪种方法能给我们带来最佳性能。我们只关注数据的速度准确性(即,如果使用网络数据包,则会降低最少)。安全不是问题。

理想情况下,应该有一个数据流从Python应用程序传输到C#应用程序,两个数据流从C#应用程序传递到Python应用程序。主机将运行Windows 7.我可以根据需要提供其他信息。

1 个答案:

答案 0 :(得分:1)

一种选择是尝试IronPython。由于IronPython是一种.NET语言,因此与C#代码进行通信应该很容易。

似乎值得研究在IronPython上运行现有Python代码有多难。