现代REST应用程序是3层架构还是4层架构?

4
我目前正在学习UML和部署/组件图,并希望将我的现有应用程序建模为3或4层架构。我的应用程序有以下实例:
  1. Angular应用程序
  2. Java Spring Boot应用程序作为REST-Webservice
  3. 数据库
这三个实例可以部署在不同的服务器上。在我看来,这是一个3层架构。但现在我很困惑,因为我不确定Web浏览器的客户端是否是我的架构的第四层。Web浏览器和Angular应用程序是否可以在表示层中,就像这样:

enter image description here

我在思考并感到困惑,因为在这篇文章中: 使用UML组件图来表示3层架构是否合适? 他将应用程序和浏览器总结在表示层中。
编辑:以下是我如何将其实现为4层架构部署图:

enter image description here


这是否回答了你的问题(如果我理解正确,与UML没有真正关联):https://dev59.com/bWgv5IYBdhLWcg3wNuN5 - bruno
1个回答

4

你的应用程序采用三层架构。浏览器只是执行环境,运行着你前端应用程序代码的一部分。

前端应用程序分布在Web服务器上(至少托管了包含前端静态文件的内容,即使你正在使用angular,也不会有更多操作),以及Web浏览器上。

API是第二层。 你的Angular应用连接到它以调用逻辑并访问数据。

数据库是第三层。

我建议使用您的顶部图表,但将您的Angular应用程序嵌套在浏览器中。


我编辑了我的第一个图表。像你说的那样,它正确吗? - Cenasa
我做了一些研究,发现通常静态网站使用Apache或Nginx Web服务器,所以我认为你是正确的。你能帮我命名Angular构件吗?我该如何区分它们? - Cenasa
嗨,你好。Apache或Nginx都可以胜任这个角色。如果它在S3中,你可以将Web服务器(当前标记为“Apache HTTP”)简单地命名为AWS S3 Bucket。第二个问题——如果Angular应用程序文件位于S3中,那么显然S3没有连接到你的API——运行在浏览器内的Angular应用程序正在连接到API。因此,你的浏览器应该建立两个连接——一个连接到S3 Bucket(直接HTTP,以加载应用程序),另一个连接到你的API(你标记为REST / HTTP)。这有意义吗? - muszeo
继续我之前的评论... Angular应用程序(在浏览器中)可以显示连接到API(您称之为Angular的“服务”),而浏览器本身正在连接到S3以获取Angular应用程序文件。 - muszeo
API 是第二层。请注意,API 本身不是层级或分层,而是层与层之间的接口。使用 REST API 封装的层级是应用程序层(通过应用程序层,可能也会间接涉及数据或者数据库层)。 - zr0gravity7
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接