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

Posted

技术标签:

【中文标题】现代 REST 应用程序是 3 层架构还是 4 层架构?【英文标题】:Are modern REST-Applications 3-Tier-Architecture or 4-Tier-Architecture? 【发布时间】:2020-12-09 16:37:55 【问题描述】:

我目前正在学习 UML 和部署/组件图,并希望将我现有的应用程序建模为 3 层或 4 层架构。我的应用有以下实例:

    Angular 应用程序 Java Spring Boot 应用程序作为 REST-Web 服务 数据库

所有三个实例都可以部署在不同的服务器上。在我看来,这是一个三层架构。但是现在我很困惑,因为我不确定带有 Web 浏览器的客户端是否是我架构的第 4 层。 webbrowser 和 Angular 应用程序是否可以在表示层中,如下所示:

我对此感到困惑和困惑,因为在这篇文章中:

Is this okay to use UML component diagram for a 3-tier Architecture?

他在表示层总结了应用程序和浏览器。

编辑:这就是我将其实现为 4 层架构部署图的方式:

【问题讨论】:

这是否回答了您的问题(如果我理解良好,则与 UML 没有真正的联系):***.com/questions/10761440/… 【参考方案1】:

您的应用程序具有 3 层架构。浏览器只是一个运行部分前端应用程序代码的执行环境。

前端应用程序在 Web 服务器上的部署(至少托管构成您的前端的静态文件,即使(因为您使用 Angular)它什么也不做)和 Web 浏览器上的部署分开.

API 是第二层。您的 Angular 应用程序正在连接到此以调用逻辑和访问数据。

数据库是第三层。

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

【讨论】:

感谢您的回答,因为它似乎有道理。在 cmets 中,链接了以下帖子:***.com/questions/10761440/… - 在此帖子中,“展示”层和“客户”层被拆分。正如我预期的那样,表示层是 Angular 应用程序,而“客户端”是 Web 浏览器——这有什么不正确的? 我编辑了我的第一个图表。你说的对吗? 是的,看起来不错。您的 Angular 应用程序是由 Tomcat 还是其他东西提供服务?如果它由 Tomcat 提供服务,您可能会考虑将 Angular 应用程序的 > 嵌套在 Tomcat 中(因为 Tomcat 在模型中,我很想知道什么是在 Web 服务器上为 Angular 应用程序提供服务)。此外,Web 浏览器是直接连接到 API 还是通过 Application Server 上的层,如您所展示的那样? 老实说,我不确定哪个 Web 服务器正在为前端提供服务。在我的“实用”示例中,文件只是作为静态网站上传到 S3 存储桶 (AWS) 中。你对此有什么想法吗?我也不太确定你的第二个问题。与 API 的直接连接会是什么样子?现在就像,用户点击一个按钮。并且点击+数据由角度的“服务”处理。这些服务处理数据并将它们发送到 api。 我做了一些研究,发现通常 Apache 或 nginx Web 服务器用于静态网站,所以我认为你是对的。你最终能帮我命名这两个 Angular Artifact 吗?如何区分它们?

以上是关于现代 REST 应用程序是 3 层架构还是 4 层架构?的主要内容,如果未能解决你的问题,请参考以下文章

REST接口设计规范总结

什么是RESTRESTful

在 J2EE 服务器上交付服务时,REST 服务在哪些层工作?

DDD 与 N 层(3 层)架构

转帖:3层架构?

网络架构/结构