我在一家全国性的公司工作,所以我们开发的软件规模很大。
我们的核心系统是基于网络的,包括webservices
。我们目前正在重新设计整个项目,现在是开始项目结构的时候了。
我们有大约 7 个 Web 模块,包括基于Struts2
and Spring 3.1
. A Webservice
核心基于JAX-WS
and Spring 3.1
我的问题是为这样的项目设计项目结构和模块化的最佳实践是什么:
我们一定会使用Maven
and OSGi
如果需要的话。我在想类似的事情
WebProject.war
|---Web.xml
|--- Libs
|
|--- Web Module1.jar
|--- Web Module2.jar
|--- Web Module3.jar
|--- Web Module4.jar
|--- Web Module5.jar
|--- Web Module6.jar
WebService.war
|---Web.xml
|--- Libs
|
|--- Service.jar
|--- Service2.jar
EJBProject.jar
|
|--- module.jar
|--- module2.jar
这是我个人的想法,但我们正在寻找更好的模块化的东西,以便我们可以工作和部署WebModule1.jar
不影响其他模块和主项目WebProject.war
。此外,我们希望专业团队只拥有他们项目的代码,所以如果一个团队必须只与Service2.jar
在他们的IDE
他们只会有代码Service2.jar
以及一个已编译其他项目的资源项目。
Thanks
模块化的关键方面是您的模块知道尽可能少的信息,以便它可以在许多不同的上下文中重用。错误仅在违反假设时才会出现,最小化假设是最大的错误杀手。 OSGi 提供了像 µservices 这样的工具,它们非常适合允许假设保持本地化。
您的布局看起来非常像一个 Web 项目,恕我直言,这是错误的,因为我们必须自己开发的大多数代码应该独立于用于呈现它的技术。所有这些技术都可能在不久的将来发生变化,因为网络应用程序正在迅速转移到浏览器,浏览器再次成为胖客户端。 IE。如果您看到纯消息传递正在做什么,那么非常现代的 REST 界面已经感觉非常过时了。所有这些波动性意味着您希望使模块尽可能解耦。
因此,我永远不会将任何域代码与任何与 Web 技术相关的库相耦合。这些传递依赖将在(不久的)将来伤害你。构建小型内聚的非耦合模块,然后将它们用作乐高积木来构建您的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)