命令行应用程序 Web 前端的推荐通信模式
Posted
技术标签:
【中文标题】命令行应用程序 Web 前端的推荐通信模式【英文标题】:Recommended communication pattern for web frontend of command line app 【发布时间】:2011-06-07 19:03:28 【问题描述】:我有一个 perl 应用程序,它处理来自本地文件系统的文本文件(将其视为过于复杂的 grep)。 我想设计一个 webapp,它允许远程用户通过设置所需的参数来调用 perl 应用程序。 一旦它运行起来,就需要在 perl 应用程序和 webapp 之间进行某种关于进程状态(正在运行、完成百分比、完成)的通信。 哪个是推荐的两个进程之间的通信方式?我在考虑数据库表,但我不确定这是个好主意。
任何建议表示赞赏。
【问题讨论】:
完成这个过程需要多长时间?您会同时允许多个网络用户吗? 这取决于参数,但在几分钟到几个小时之间。网络应用应负责作业排队。 【参考方案1】:Stackers,继续编辑此答案以添加代码示例或链接。
DrNoone,我想到了两种方法。
回调
您的 greppy 应用程序需要提供一个回调函数来返回状态并由 Web 应用程序定期调用。
事件
如果您已经在使用一个 Web 服务器/应用程序框架,该框架公开了一个可从外部应用程序使用的事件循环(在 Perl 领域不太可能),那么这是有道理的。 greppy 应用程序在状态更改时触发事件,Web 应用程序附加/侦听它们并采取相应的行动。
对于您所设想的 IPC,普通数据库不太适合。而是查看消息队列。要获得出色的互操作性,请选择符合 AMPQ 的实现。
【讨论】:
我应该将 perl 应用程序包装在 Web 服务上并让 Web 应用程序调用 Web 服务还是不必要的层?【参考方案2】:如果您使用open($handle, "cmd |")
运行该过程,您可以实时读取结果并在您的回复打开时将它们直接打印到 STDOUT。这可能是最简单的方法。
【讨论】:
进程输出很大,打印前要格式化以上是关于命令行应用程序 Web 前端的推荐通信模式的主要内容,如果未能解决你的问题,请参考以下文章