命令行应用程序 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 前端的推荐通信模式的主要内容,如果未能解决你的问题,请参考以下文章

前端新春进阶利器:6款开源 Web 性能优化辅助工具的推荐

桌面应用程序和 Web 前端之间的通信

五款web前端开发工具推荐,哪款最能cue到你?

web前端开发技术DIV+CSS页面布局 5行5列怎么弄?

http模式

前端常用的框架都有哪些?