我要求为以下Java Web应用程序提供合适的体系结构:
目标是构建几个Web应用程序,这些应用程序都在相同的数据上运行.假设一个银行系统,其中不同的Web应用程序可以访问帐户数据; 它可以由客户(网上银行),服务人员(主要是阅读)和帐户管理部门(管理工具)访问.这些应用程序在不同的计算机上作为单独的Web应用程序运行,但它们使用相同的数据和一组常见的数据操作和搜索查询.
一种可能的方法是构建满足客户共同需求的核心应用程序,即数据存储,操作和搜索工具.然后,客户端可以调用此核心应用程序来完成其请求.要求是应用程序构建在Wicket/Spring/Hibernate堆栈之上作为WAR.
为了得到一张图片,这里有一些我们想到的可能方法:
一个单一的方法.构建一个适合所有需求的巨大Web应用程序(这不是一个真正的选择)
B API方法.构建核心数据库访问API(JAR)以进行数据访问/操作.每个Web应用程序都构建为一个单独的WAR,它使用API来访问数据库.没有单独的核心应用程序.
C RMI方法.核心应用程序作为独立应用程序(可能是WAR)运行,并通过RMI(或HttpInvoker)提供服务.
D WS方法.就像C一样,但用Web Services替换RMI
E OSGi方法.将所有组件构建为OSGi模块,并在OSGi容器中运行.可能使用SpringSource dm Server或ModuleFusion.出于某些原因,这种方法不适合我们......
希望我能说清楚问题.我们只是选择B,但我对此并不十分自信.你有什么看法?还有其他方法吗?每种解决方案有哪些缺点?
B、C 和 D 都只是完成同一件事的不同方法。
我的第一个想法是简单地将所有消费者代码连接到一个公共数据库。这当然是可行的,并且会消除您不想放置在中间的代码。当然,缺点是如果模式发生变化,所有消费者都需要更新。
您可能需要考虑的另一个解决方案是为每个使用者提供自己的数据库,使用某种复制来保持它们同步。