我正在尝试编写有关该应用程序的文档,但我对如何描述架构感到困惑。
根据我所做的研究,我认为表示层是我的 React 应用程序,业务/应用程序层是 Spring Boot 应用程序,数据层是 MySQL。
这对我来说看起来很逻辑,但我偶然发现了这个教程
https://www.youtube.com/watch?v=xJC7ItRoEbw&ab_channel=Amigoscode
他在 10:38 左右说控制器是表示层的一部分,这似乎与我已经知道的内容没有联系。
还有另一个教程 https://www.youtube.com/watch?v=udzBtJv2uls&ab_channel=Izenda,它表达了我最初的想法。
此外,我知道 Spring Boot 应用程序具有多层控制、服务和存储库(或 dao),因此我想结合所有这些信息,但我不确定是否要编写一些大的内容是否有错误
您能否根据我的项目向我解释一下这些内容?在前端,我有一个 React 应用程序,它将获取请求发送到典型的控制器,该控制器调用服务方法,该方法调用与数据库通信并执行查询的存储库方法。
在视频中,演示者非常非正式,他可以互换使用层和层。很多人都这样做,你必须弄清楚上下文的意图。
对我来说,层通常意味着跨不同机器的分布。 MySQL、springboot 应用程序和客户端浏览器中的 React 代码通常都运行在不同的机器上,因此它们是不同的层。
但是术语“层”并不意味着这样的分布,SpringBoot 应用程序可以具有 Web 控制器层、服务层和数据访问层,它们都是同一应用程序工件的一部分。该术语用于讨论应用程序内的逻辑是如何组织的。
Spring 最初是对一种流行假设的回应,即应用程序必须通过 Web 应用程序分层构建,这些 Web 应用程序称为 ejb 服务器,这些服务器托管在单独的集群上并通过网络进行通信。 Spring 创始人对层和层进行了区分,以便更容易解释他们的方法。 Rod Johnson 的一对一书中介绍了 Spring 的主要思想,其中使用了此措辞。控制器是否是表示层的一部分是有争议的。对我来说,演示意味着外观和感觉,控制器执行特定于 Web 的操作,例如公开端点、验证参数等,但尤其是在 SPA 中,演示位于前端代码中,而服务器端仅提供数据。在 SPA 控制器之前,控制器会转发到在服务器上呈现 html 的视图,因此控制器和演示文稿的相关性更加紧密。