【问题标题】:How to setup communication between frontend and backend programs如何设置前端和后端程序之间的通信
【发布时间】:2014-07-20 11:05:13
【问题描述】:

我正在开发一个 perl 后端项目,该项目根据 JSP Web 应用程序提供的输入执行操作。两者都在基于 linux 的服务器上运行。执行请求的操作后,后端需要向前端发送相同的确认/确认 - 这需要实时发生。

有人建议我使用文件作为这些前端和后端程序之间的通信方式。根据设计,frontend to backend 消息会有一个文件,而反向消息会有一个文件,即 backend to frontend 消息。前端/后端进程将连续读取两者,这些进程将根据从这些文件中读取的控制消息采取适当的行动。

尚未编写此代码,因为我仍然不确定这是否是最好的方法。我听说过进程间通信,但不确定如何在我的情况下实现它。我对这类事情真的很陌生,正在寻找建议/建议或很好的参考资料,这将为我指明解决这个问题的正确方向。

【问题讨论】:

  • 前端是web客户端(浏览器)?通常,Web 客户端无权访问服务器上的文件。
  • 我没有使用基于 perl 的后端进行 JSP 通信的具体经验。我不鼓励您使用基于文件的方法。我想到了两件事:i。 IPC 通过套接字 ii。 Perl 网络服务器,例如基于 Mojolicious,因此 JSP 可以与您的后端进行 HTTP 通信

标签: perl jsp ipc frontend backend


【解决方案1】:

如果我正确理解您的问题,您的服务器上有两个独立的应用程序运行。

  1. 应用程序 A 是一个应用程序服务器或 servlet 引擎(例如 Tomcat),它托管一个由 JSP 页面组成的 Web 应用程序。
  2. 应用程序 B 是一些基于 PERL 的后端应用程序。

现在 A 想和 B 通信。对吗?

我同意 BarneySchmale 和他的评论。我不会实现基于输入/输出文件的通信。首先,因为这会迫使您两个应用程序对同一文件具有读/写访问权限,这使得设置的可扩展性不高。其次,因为你总是要监听文件的变化。这可能很难以高性能的方式实现同​​步通信。

我的建议是通过 HTTP 调用从应用程序 A 到 B 进行通信。例如,您可以使用 RESTful 方法。应该有很多库可以帮助您实现这一点。它是可扩展的,这意味着如果您决定将应用程序 B 放在不同的服务器上,它仍然可以工作。您可以在它们之间放置防火墙,切换到安全通信,没问题。而且调试起来也比较容易。

当然,在选择最终架构之前需要考虑一些问题,例如:

  • 方向是否只有一种方式:前端向后端发送请求,后端发送响应,或者是否存在后端必须实例化通信的情况?
  • 如果后端关闭或没有响应会怎样?前端是否必须对请求进行排队,或者是否足以在前端显示错误?
  • 你真的需要一直同步通信吗?有时异步调用对用户更友好,因为前端不必等待响应。

当然,如果您从异步通信开始,则必须进行某种排队。甚至是应用程序 A 和 B 之间的消息代理,如果它变得复杂的话。

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多