gpt4 book ai didi

java - 应用架构建议

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:15 24 4
gpt4 key购买 nike

我将要构建一个系统,该系统将拥有自己的引擎以及前端用户界面。我想尽可能地将这两者分离。引擎应该能够接受命令和数据,能够处理这些数据,并返回一些结果。引擎的作业可能很长,客户端应该能够随时查询引擎的当前状态。

分离的前端/后端系统对我来说是新领域,我不确定最佳架构。我希望前端是基于网络的。它将通过表单向引擎发送命令,并通过ajax 调用显示引擎输出和当前状态。我很可能会在 Tomcat 中使用基于 Spring 的 Web 应用程序。

我的问题涉及引擎组件的最佳结构。这些是我正在考虑的可能性:

  • 将引擎实现为网络应用程序中的一组线程和数据结构。这里的优点是实现更简单,Web 应用程序前端和引擎之间的消息传递也很简单(只不过是一些共享数据结构)。缺点是前端和后端之间的紧密耦合,依赖服务器容器来管理引擎(例如,如果网络服务器或网络应用程序崩溃,引擎也会崩溃)。

  • 将后端实现为独立的 Java 应用程序,并通过 TCP 端口上的某些服务公开其功能。我喜欢这种方法,因为它与 Web 服务器分离。但是,我对所需的低级网络/通信代码量并不感兴趣。我更喜欢抽象套接字等的更高级别的消息传递。

  • 使用 OSGi 容器(如 Spring DM 服务器)来托管网络应用和引擎。这种方法很好,因为网络代码不存在。该引擎向 OSGI 容器公开服务以供 Web 应用程序使用。这里的缺点是新技术的学习曲线和开销:OSGi。此外,前端和后端再次保持耦合,我真的不想要。换句话说,我不能在任何旧的 servlet 容器上部署前端,它必须与引擎位于同一个 OSGi 容器中。

我感觉 RMI 是实现这一目标的方式,但这对我来说又是一个新的技术领域,它仍然没有解释如何设计底层系统的架构。 JMS 呢?

感谢您的任何建议。

最佳答案

如果您真的想解耦 Web 应用程序和引擎,您还可以将引擎部署在不同的服务器中,并将 API 公开为 Web 服务调用(WS-* 或 REST)。

关于java - 应用架构建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2083534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com