托管在同一台机器上的C#和Python应用程序之间的通信
本文关键字:Python 通信 之间 应用程序 机器 一台 | 更新日期: 2023-09-27 18:24:50
我们正在进行一个项目,该项目要求我们与一组特定的硬件接口;一个集合可以使用C#非常容易地进行控制,另一个集合则使用Python进行本地编程。该项目的一部分涉及让运行在Python上的硬件与运行在C#上的硬件进行通信,不幸的是,由于时间限制,我们无法创建一组C#或Python软件来控制另一组硬件。
在Python上运行的硬件集完全基于事件,因为我们可以对硬件满足某些条件时调用的函数进行编程。我们的想法是修改控制另一组硬件的C#应用程序以托管Python应用程序(使用类似Application.Run()
的东西),然后对Python函数进行编程,以便在事件从硬件传入时将相关数据传播到C#应用程序。
我们正在考虑使用套接字连接来处理两者之间的通信,因为C#和Python都很容易以这种方式工作(或者正如我们的Python人员所声称的那样)。我们最担心的是,两个程序都将托管在同一台机器上,这一事实是否会出现任何问题。如果这不是一个问题,我们可能最终会使用共享库,如0MQ
我们还对以下领域进行了一些研究:
- 管道/命名管道
- 消息队列
- 共享内存
基本上,我们想知道其中哪种方法(或任何其他方法)最容易用这些语言实现,哪种方法能给我们带来最好的性能。我们只关心数据的速度和准确性(即,如果使用网络数据包,则会减少最少的数据包)。安全不是一个问题。
理想情况下,应该有一个数据流从Python应用程序到C#应用程序,以及两个数据流,从C#应用程序到Python应用程序。主机将运行Windows 7。我可以根据需要提供更多信息。
一种选择是尝试IronPython。由于IronPython是一种.NET语言,因此与C#代码的通信应该很容易。
让现有的Python代码在IronPython上运行有多难,这似乎值得一看。