从Linux调用Windows中的exe

时间:2013-11-22 08:09:49

标签: python linux django windows apache

背景知识:Django中的网站在apache下运行。

简单地说,我需要从Linux机器上调用Windows机器中的.exe程序。

原因是我们的网站在Linux上运行,但一个模块依赖于Windows DLL。因此我们计划将它放在一个单独的Windows服务器上,并使用一些方法来调用exe程序,然后返回结果。

我的想法是:在该Windows机器上设置一个Web服务,向其发布一些数据,让它自己处理exe程序,并返回一些数据作为响应。请注意,请求数据和响应数据都包含文件。

我想知道是否有更简洁的方法呢?

编辑:感谢@fhs,我发现我的主要问题不够明确。是的,网络服务可以工作。但主要的缺点是:基本,我需要发布几个文件到windows; windows 接收文件,保存文件,使用这些文件作为参数调用程序,然后将结果文件打包成zip并返回。在linux中,接收文件,将其解压缩到本地文件系统。这有点麻烦。

那么,有没有办法让两台机器像在本地文件系统中一样轻松访问另一台文件?

1 个答案:

答案 0 :(得分:0)

我可以想到一些方法来做到这一点:

  • 使用具有真实REST协议和跨站点脚本保护的Web服务
  • 使用WINE(正如OneOfOnes在评论中所建议的)
    但这对于实际生产来说风险很大,可能根本不起作用(或者只是当负载变重时)
  • 在Windows机器中编写一些代码,并使用 Zero-MQ (ZMQ)或类似产品
  • 之类的代码调用此代码

根据您使用此库的方式,One解决方案可以比其他解决方案更好。

对于大多数情况,我建议使用 ZMQ
通过这种方式,您可以使用更复杂的通信模型(订阅 - 订阅者,发送 - 响应等) 此外,如果需要,您可以使用ZMQ 以非常简单的方式扩展(您将能够使用少量Windows机器来处理请求)

修改
要支持计算机之间的文件传输,您也几乎没有选择。

  • 使用 ZMQ 。文件可以只是一个数据流 使用ZMQ
  • 支持这样的流没问题
  • 文件服务器与一些Enq一起使用。程序
    ENQ。可以通过ZMQ消息来完成,以通知对方该文件已准备就绪 您可以使用文件夹共享而不是文件服务器,但在Windows计算机上共享文件将不是一个可扩展的解决方案
  • Windows程序可以通过 FTP或SSH 将文件发送到Linux服务器 再次,可以使用ZMQ
  • 完成信令(文件就绪,文件名,...)