我即将构建一个将拥有自己的引擎以及前端用户界面的系统。我想尽可能地解耦这两个。引擎应该能够接受命令和数据,能够处理这些数据并返回一些结果。引擎的工作可能很长,客户应该有能力随时查询引擎以了解其当前状态。关于应用程序体系结构的建议
一个分离的前端/后端系统是我的新领域,我不确定最好的架构。我希望前端是基于网络的。它将通过表单向引擎发送命令,并通过ajax调用显示引擎输出和当前状态。我可能会在Tomcat中使用基于Spring的Web应用程序。
我的问题涉及发动机部件的最佳结构。这些是我正在考虑的可能性:
在web应用中实现引擎作为一组线程和数据结构。这里的优势是更简单的实现,并且Web应用程序前端和引擎之间的消息传递将很简单(只不过是一些共享数据结构)。缺点是前端和后端之间紧密耦合,依靠服务器容器管理引擎(例如,如果Web服务器或Web应用程序崩溃,引擎也会崩溃)。
将后端实现为独立的Java应用程序,并通过TCP端口上的某些服务公开其功能。我喜欢这种方法,因为它与Web服务器分离。但是,我并没有对所需的低级网络/通信代码的数量感兴趣。我希望更高级别的消息传递,抽象插座等。
使用OSGi容器,如Spring DM服务器来承载Web应用程序和引擎。这种方法很好,因为网络代码不存在。该引擎向OSGI容器公开服务以供Web应用程序使用。这里的缺点是新技术的学习曲线和开销:OSGi。此外,前端和后端保持耦合,我真的不想要。换句话说,我不能在任何旧的servlet容器上部署前端,它必须与引擎位于同一个OSGi容器中。
我有一种感觉,RMI是去这里的路,但同样这是一个新的技术领域对我来说,它仍然没有解释如何设计底层系统的体系结构。怎么样JMS?
谢谢你的任何建议。
+1推荐REST – medopal 2010-01-18 07:18:18