1

我有一个关于三层架构的问题。

我有一个使用 Spring Boot 和 Angular 的应用程序。我怀疑是否 :

  • 表示层 = 角度
  • 应用层 = spring boot

或者如果有两个三层架构:angular是一个,spring boot也是一个。

我知道 Angular 在技术上不是三层架构,因为它不是用来与数据库交互的,这就是为什么我会说它只是表示层的原因。但我还没有读到任何证实它的东西。

4

2 回答 2

6

简短的回答:这取决于您的实施质量。

对于更长的答案,我想先总结一下软件架构的目的。在软件工程中将项目分成多个层的目的是在您和您的团队开始编码之前“物理地”分离您的代码。预先确定架构的过程可以让您深入了解整个项目的结构以及可以/应该使用哪些语言或框架。

三层架构的示例:

  • 表示层:应用程序的前端。可以是 HTML/CSS 或 Angular 或 React 等 Web 框架。您希望该层显示它检索到的数据并尽可能少地“思考”。
  • 应用层:这是您的应用程序的中间件。可以用您喜欢的任何语言实现,例如 PHP、Java、C#、Python 等。这一层是您软件的“引擎”,它将表示层连接到数据层。您不希望在这一层中有任何视图或 UI,因为这是小队的“伟大思想家”。
  • 数据层:您的数据库或存储系统。可以在 MySQL、PostgreSQL、MongoDB 等。数据会被应用层通过 API 调用访问(注意:API 调用本身是由表现层触发的,但表现层不知道应用层会做什么)做那个电话,这是两者之间的黑匣子)

出于语义原因,我不能说 Angular/Spring“是一个三层架构”,因为这完全取决于您的实现。如果您愿意,两者都可以是三层的。但是,在您的情况下,声明 Angular 应该是表示层,而 Spring Boot 应该是应用程序层是正确的。

使用 Angular 作为您的表示层(以及仅您的表示层)非常有意义。你的 Angular 应用程序不应该关心它收到的数据,它应该只显示它​​。因此,Spring Boot 将成为将数据从数据层传递到表示层的组件。

一个好的实现使三层架构可以互换。不想再使用 Angular?只需升级到另一个框架,您的客户看到的数据仍将保持不变。这就是精心设计的架构的优势,也是您想用它实现的目标。

维基百科对软件架构的描述如下:

“软件架构是指软件系统的高级结构以及创建此类结构和系统的学科。每个结构都包含软件元素、它们之间的关系以及元素和关系的属性。软件系统的架构是一个隐喻,类似于建筑物的架构。它充当系统和开发项目的蓝图,列出了设计团队必须执行的任务。

因此,最终回答您的问题:您的设置决定了您的架构。如果你使用 Angular 作为你的 UI,Spring Boot 作为一个服务集合和一个数据库来存储你的数据,你将拥有三层架构。如果你决定在没有 Angular 的情况下在 Spring Boot 中生成前端,你仍然会有一个三层架构,但 Spring Boot 占据了其中的两层(这就是 Spring 密切遵循 MVC 模式的原因)。

于 2019-01-24T23:33:03.693 回答
2

Spring MVC + Angular 单页 Web 应用程序的架构
表单密集型企业级应用程序非常适合构建为单页 Web 应用程序。与其他更传统的服务器端架构相比,主要思想是将服务器构建为一组无状态的可重用 REST 服务,并从 MVC 的角度将控制器从后端移出并将其移动到浏览器中:

在此处输入图像描述

客户端支持 MVC 并包含所有呈现逻辑,这些逻辑被分离在视图层、控制器层和前端服务层中。在初始应用程序启动后,只有 JSON 数据通过客户端和服务器之间的线路。

来源:https ://blog.angular-university.io/developing-a-modern-java-8-web-app-with-spring-mvc-and-angularjs/

于 2018-08-25T14:47:43.780 回答