什么是分层架构?
据我了解,分层体系结构是将项目结构组织为四个主要类别: 表示,应用程序,领域和基础结构。每个层都包含与其表示的特定关注点有关的对象。
· 表示层 包含负责向最终用户呈现UI或将响应发送回客户端的所有类(以防我们在后端进行深入操作)。
· 应用程序层 包含应用程序满足其功能要求所需的所有逻辑,但同时又不是域规则的一部分。在我使用过的大多数系统中,应用程序层都是由服务编排域对象来满足用例场景的服务。
· 域层 表示基础域,主要由域实体以及某些情况下的服务组成。业务规则,如不变式和算法,都应保留在该层中。
· 基础结构层(也称为持久层) 包含负责进行技术工作的所有类,例如将数据持久保存在数据库中(例如DAO,存储库或您正在使用的其他任何东西)。
要正确实现经典的分层体系结构,有两个重要规则:
1. 从展示到基础架构,所有依赖关系都朝一个方向发展。(好吧,处理持久性和域有点棘手,因为基础结构层通常直接保存域对象,因此它实际上知道域中的类)
2. 与一层关注点无关的逻辑不应放在另一层中。例如,用户界面中不应执行任何域逻辑或数据库查询。
分层架构的本质
架构是一个重载的术语,因此我们可能应该更深入地了解该术语在层上下文中的实际含义。分层体系结构背后的主要思想是关注点分离–正如我们已经说过的那样,我们希望避免将域或数据库代码与UI内容等混合使用。将项目分为几层的实际想法表明,应将关注点分离为由源代码组织实现。这意味着,除了对应该分离的问题提供一些指导之外,分层体系结构还没有告诉我们有关项目设计和实施的其他信息。这意味着我们应该用其他一些体系结构过程对其进行补充,例如一些前期