ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-有关应用程序体系结构的建议

2019-11-06 23:12:15  阅读:153  来源: 互联网

标签:architecture java


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

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

我的问题涉及发动机组件的最佳结构.这些是我正在考虑的可能性:

>将引擎实现为Web应用程序中的一组线程和数据结构.这样做的好处是实现起来更简单,并且Web应用程序前端与引擎之间的消息传递也很简单(仅是一些共享数据结构).缺点是前端和后端之间的紧密耦合,依赖于服务器容器来管理引擎(例如,如果Web服务器或Web应用程序崩溃了,引擎也会崩溃).
>将后端实现为独立的Java应用程序,并通过TCP端口上的某些服务公开其功能.我喜欢这种方法,因为它与Web服务器分离.但是,我对所需的低级网络/通信代码的数量并不感到惊讶.我希望可以通过更高级别的消息传递来抽象套接字等.
>使用OSGi容器(例如Spring DM服务器)来托管Web应用程序和引擎.这种方法很好,因为不存在网络代码.该引擎将服务公开给OSGI容器,以供Web应用使用.不利的一面是新技术OSGi的学习曲线和开销.另外,前端和后端仍然保持耦合,这并不是我真正想要的.换句话说,我无法在任何旧的servlet容器上部署前端,它必须与引擎位于同一OSGi容器中.

我感觉RMI是解决问题的方法,但对我而言,这又是一个新技术领域,它仍然没有解释如何设计基础系统的体系结构. JMS呢?

感谢您的任何建议.

解决方法:

如果将要成为Web应用程序,则无需像在桌面应用程序前端和服务器后端那样将流程解耦.因此,保持简单.

我将使用的基础(事实证明,该基础正在用于我当前正在研究的项目中)是这种堆栈:

>春季3
> Web容器
>部署为Web应用程序(WAR)的应用程序;
>对于持久性,可以使用Ibatis(我的首选)或JPA / Hibernate(如果您希望使用更多的对象持久性方法);
>您首选的Web框架选择.这里没有简单的答案,有几十种可供选择,从简单的模板到更组件化的(JSF,Seam等). Tapestry / Wicket看起来很有趣,但我都不是专家.

Spring容器完全能够启动一系列线程,并且这样做很普遍.因此,您需要的是一系列简单的引擎组件.除非有充分的理由,否则Web应用程序上下文中的Spring bean是简单,灵活和强大的.

在前端,这取决于您想要什么.直接HTML可以使用任何Web框架完成.即使由某些Javascript装饰.我将jQuery用于此类事情.

如果您希望前端看起来像台式机应用程序(所谓的“丰富” UI),它只会有所不同.为此,您要么需要使用Google Web Toolkit(“ GWT”),要么可能是诸如JSF之类的组件Web框架(尽管我倾向于认为它们会很快变得混乱不堪)或一个Javascript框架(如ExtJS,SmartClient,YUI或相当新宇.

标签:architecture,java
来源: https://codeday.me/bug/20191106/2001754.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有