具有与其他系统不同接口的Java EE应用程序的哪些部署

时间:2014-04-15 05:38:27

标签: java-ee soap deployment architecture

我正在开发一个Java EE应用程序,它将不同的系统与不同的接口相连接。

我有:

  • SOAP,由客户调用
  • 网页调用的另一个SOAP接口
  • REST,由移动应用调用

然后我为数据库操作和调用一些后端系统提供了一些业务逻辑。

您如何在不同的部署中拆分此企业应用程序?我看到了三种不同的方式:

  • 构建一个内部(一个部署)的一个大EAR
  • 为业务逻辑构建模块并部署三个不同的前端模块,每个模块包含此业务逻辑模块(三个部署)
  • 构建三个前端模块,通过远程接口(四个部署)调用包含业务逻辑的第四个模块

我倾向于第一个解决方案,在一个部署中将所有内容打包在一起,因为错误修复和发布将主要影响一个模块。但是还有一些缺点吗?

在书中你可以阅读很多关于JEE但很少阅读这些最佳实践。

1 个答案:

答案 0 :(得分:1)

很难说哪一个最好,但这是我的2美分。

因此,单一BIG耳朵可以带来的最大缺点是,你必须重新部署世界才能做出一点改变。所以,基于此,我不会去寻找一个大耳朵。想象一下,达到EAR大100MB或者像这样荒谬的东西。

此外,如果您需要将模块,服务,bean或任何内容移动到另一台服务器进行扩展,所有内容都在一个EAR中,您将不得不对EAR进行一些基本更改以将其拆分。这将导致开发时间和成本再次

要点:

简而言之,你的第一个方法是简单的部署没什么大不了的。但请记住,您必须重新部署所有内容。在一个非常大的应用程序中,这将成为一个问题。最大的痛苦拆分扩展应用程序将花费时间,精力和金钱。

您的第二个选择是更加模块化。但是,组件似乎共享了一些业务逻辑。因此,对一个EAR的更新可能意味着对其他EAR进行级联更新。这实质上是重复工作。

要点:

部署更加模块化,使您可以更灵活地部署选项。但是部署更复杂。由于业务逻辑和可能的数据访问逻辑不在共享模块中,因此代码在多个位置被复制。这种重复将导致更高的测试和开发成本。

您的第三个选项将跨域关注点分开。在这种情况下,客户域,网站域,移动域和业务逻辑域。虽然这需要部署工作,但您有更多选择。

要点:

由于共享逻辑放在一个单独的模块中,这将导致更易于维护的设计。您的业​​务逻辑中的单元测试也将具有高质量,因为它们现在不受特定接口/域的约束。因此,测试将更容易,质量保证将更高。您还可以消除重复工作。

这种设计也相对容易扩展。将不同的EARS移动到不同的服务器上,或者扩展服务器。一个缺点是部署要复杂得多。