为 Web 和服务端点建立单独的项目/部署是一种好的做法吗?
如果我有一个托管的 Web 应用程序,那么将 Web 和 api Web 服务拆分为 tomcat 中的 2 个不同的项目/托管应用程序是一个好习惯吗?
我可以看到,如果人们尝试滥用 API,将会影响 Web 应用程序的性能。
如果我要创建 2 个独立的项目(或者如果最初不是,但为了实现拆分的潜力而构建),我可以以某种方式在两个项目之间共享我的休眠数据层吗?
我正在使用 IntelliJ,我该怎么做?是否会为 hibernate 创建一个单独的模块(域实体、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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我不认为这是一个好的做法,但对于某些场景来说可能是一个好主意。
在面向服务的体系结构中,服务层不仅由 Web 层使用,还可能由其他客户端使用。在这种情况下,在单独的服务器中构建 Web 层和服务层可能是个好主意。
另一种情况是当您想要执行单独的部署时,因为例如两个层中的工作是由不同的团队或在单独的工作流中完成的 - 我会质疑这是否是一个好的实践,尽管与在垂直功能而不是在层中工作的团队相反。
您可以通过多种不同的方式创建服务层:
在拆分项目方面,您可以创建:
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:
In terms of splitting the projects, you could create:
从客户端的角度来看,您所说的“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.
您可以创建一个供 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.