为Web和服务端点分别进行项目/部署是一种好习惯吗?

时间:2011-11-22 22:16:16

标签: java hibernate spring intellij-idea jersey

如果我有托管的Web应用程序,将web和api Web服务拆分为tomcat中的2个不同项目/托管应用程序是不错的做法?

我可以看到,如果人们尝试滥用API,则会影响Web应用程序的性能。

如果我要创建2个单独的项目(或者如果不是最初但是为了分解事物而构建),我可以以某种方式在2个项目之间共享我的hibernate数据层吗?

我正在使用IntelliJ,我该怎么做?是为hibernate创建一个单独的模块(域实体,Dao和Service类)。

3 个答案:

答案 0 :(得分:2)

我不会说一般来说这是一个好习惯,但对某些情况来说可能是一个好主意。

在面向服务的体系结构中,服务层不仅被Web层使用,还被其他客户端使用。在这种情况下,在单独的服务器中构建Web和服务层可能是一个好主意。

另一种情况是您希望执行单独的部署,例如两个层次的工作都是由不同的团队或在不同的工作流程中完成的 - 我会质疑这是否是一个好的做法,而不是在垂直特征而不是分层工作的团队。

您可以通过多种不同方式创建服务图层:

  • 作为网络服务。何时需要互操作性。
  • 作为远程EJB(TomEE中可以这样做)。当不需要互操作性时。
  • 您也可以创建上述两者的组合,它们不是互斥的。

在拆分项目方面,您可以创建:

  • jar模块中的一组域对象,将在您的Web层和服务层之间共享。
  • 您的网络图层的war模块。
  • 用于服务层接口的jar模块,它是Web层的依赖项。
  • 包含服务和DAO的服务层的jar / war模块。

答案 1 :(得分:1)

从客户角度来看,您称之为“网络”和“api网络服务”的区别是什么?程序化客户端可以“滥用”其中任何一个,因此不确定是否因为这个原因拆分它们是有意义的。您可以使用负载均衡器向外扩展。

答案 2 :(得分:0)

您可以创建Web界面使用的内部API,以及使用内部API的Web API。