我对三层体系结构有疑问。
我有一个使用Spring Boot和Angular的应用程序。 我想知道是否:
或者如果有两个三层体系结构:角形是一个,弹簧靴也是一个。
我知道Angular从技术上讲不是三层体系结构,因为它不是与数据库交互的,这就是为什么我要说它只是表示层。但是我还没有阅读任何证实它的内容。
答案 0 :(得分:1)
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/
答案 1 :(得分:1)
简短的回答:这取决于实现的质量。
对于更长的答案,我想先总结一下软件体系结构的目的。在软件工程中将项目分为多个层的目的是在您和您的团队开始编码之前“物理地”分离您的代码。预先确定体系结构的过程可以使您深入了解整个项目的结构,以及可以/应该使用哪种语言或框架。
三层体系结构的示例:
出于语义原因,我不能说Angular / Spring是“三层体系结构”,因为这完全取决于您的实现。如果您希望它们都可以是三层。但是,在您的情况下,正确的说法是Angular应该是表示层,而Spring Boot应该是应用程序层。
使用Angular作为您的表示层(仅限于您的表示层)非常有意义。您的Angular应用程序不必在乎收到的数据,而应该只显示它。因此,Spring Boot将成为将数据从数据层传递到表示层的组件。
良好的实现可以使三层体系结构互换。不想再使用Angular吗?只需升级到另一个框架,客户看到的数据将保持不变。这就是精心设计的架构的强项,以及您希望通过它实现的目标。
维基百科对软件体系结构的描述如下:
“软件体系结构是指软件系统的高层结构以及创建此类结构和系统的原则。每个结构都包含软件元素,它们之间的关系以及元素和关系的属性。软件系统的体系结构是一个比喻建筑物的比喻,它是系统和开发项目的蓝图,列出了设计团队必须执行的任务。”
因此,最后回答您的问题:您的设置确定您的体系结构。如果您将Angular用作UI,将Spring Boot用作Services的集合以及用于存储数据的数据库,则将具有三层体系结构。如果您决定在不带Angular的Spring Boot中生成前端,您将 still 具有三层体系结构,但是Spring Boot占据了其中的两层(这就是Spring严格遵循MVC模式的原因)。