为 Web 和服务端点建立单独的项目/部署是一种好的做法吗?

发布于 2024-12-17 07:39:19 字数 281 浏览 1 评论 0原文

如果我有一个托管的 Web 应用程序,那么将 Web 和 api Web 服务拆分为 tomcat 中的 2 个不同的项目/托管应用程序是一个好习惯吗?

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

如果我要创建 2 个独立的项目(或者如果最初不是,但为了实现拆分的潜力而构建),我可以以某种方式在两个项目之间共享我的休眠数据层吗?

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

If I have a hosted web application, is it good practise to split the web and api web service into 2 different projects/hosted applications in tomcat?

I can see that if people try and abuse the API it will effect the performance of the web application.

If I was to go with creating 2 separate projects (or if not initially but build for the potential to split things off), can I somehow share my hibernate data layer between 2 projects?

I'm using IntelliJ, how can I do this? Would it be to create a seperate module for hibernate (domain entities, Dao, and Service classes).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

唱一曲作罢 2024-12-24 07:39:19

我不认为这是一个好的做法,但对于某些场景来说可能是一个好主意。

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

另一种情况是当您想要执行单独的部署时,因为例如两个层中的工作是由不同的团队或在单独的工作流中完成的 - 我会质疑这是否是一个好的实践,尽管与在垂直功能而不是在层中工作的团队相反。

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

  • 作为 Web 服务。当您需要互操作性时。
  • 作为远程 EJB(这在 TomEE 中是可能的)。当不需要互操作性时。
  • 您还可以创建上述两者的组合,它们并不相互排斥。

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

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

I wouldn't say is a good practice in general, but maybe a good idea for some scenarios.

In a service oriented architecture, a service layer is consumed by not only the web layer, but potentially other clients. In this case is probably a good idea to build the web and service layers in separate servers.

Another case would be when you want to perform separate deployments, because e.g. work in both layers is done by different teams or in separate workstreams - I would question whether this is a good practice though as opposed to teams working in vertical features rather than in layers.

You can create your service layer in many different ways:

  • As web services. When you need interoperability.
  • As remote EJBs (this is possible in TomEE). When interoperability is not necessary.
  • You can also create a combination of the both above, they are not mutually exclusive.

In terms of splitting the projects, you could create:

  • A set of domain objects in a jar module that is to be shared between your web and service layers.
  • A war module for your web layer.
  • A jar module for your service layer interfaces that is a dependency for your web layer.
  • A jar/war module for your service layer containing services and DAOs.
-小熊_ 2024-12-24 07:39:19

从客户端的角度来看,您所说的“Web”和“API Web 服务”有什么区别?程序化客户端可以“滥用”其中任何一个,因此不确定因此而拆分它们是否有意义。您可以使用负载均衡器进行横向扩展。

What's the difference between what you call "web" and "api web service" from the client perspective? A programmatic client can "abuse" either of those, so not sure if it makes sense to split them for that reason. You can use a load balancer to scale out.

黯然#的苍凉 2024-12-24 07:39:19

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

You could make an internal API that the web interface consumes, and a web api that consumes the internal API.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文