欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ABP之N层架构

程序员文章站 2022-04-28 09:36:25
介绍 应用程序代码库的分层是一种广泛接受的技术,有助于降低复杂性并提高代码的可重用性。 为了实现分层体系结构,ASP.NET Boilerplate遵循领域驱动设计(DDD)的原则。 领域驱动设计(DDD) 领域驱动设计有四个基本层 表现层:提供用户界面,并使用应用层来进行用户交互 应用层:相当于表 ......

介绍

应用程序代码库的分层是一种广泛接受的技术,有助于降低复杂性并提高代码的可重用性。 为了实现分层体系结构,asp.net boilerplate遵循领域驱动设计(ddd)的原则。

领域驱动设计(ddd)

领域驱动设计有四个基本层

表现层:提供用户界面,并使用应用层来进行用户交互

应用层:相当于表现层和领域层的“中介”,处理业务对象以执行特定的应用程序任务

领域层:包含业务对象和他们的规则,是应用程序的核心

基础设施层:提供一些通常的技术功能,主要使用第三方库来支持更高层的功能。

asp.net boilerplate应用程序体系结构模型

除了ddd,应用程序架构中还有其他一些逻辑层和物理层。下图中的模型是在abp应用程序中是实现的。abp不仅通过提供基类和服务来简化此模型,还提供了直接开始此模型架构的启动模板。

ABP之N层架构

客户端应用程序

这些是通过http api(api控制器,odata控制器,甚至可能是graphql端点)将应用程序用作服务的远程客户端。 远程客户端可以是spa(单页面应用程序),移动应用程序或第三方消费者。 可以在此应用程序内完成本地化(localization)和导航(navigation)。

 表现层

asp.net[core] mvc (model-view-controller) 可以被任务是表现层。它可以是物理层(通过http api使用应用程序)或逻辑层(直接注入和使用应用程序服务)。无论在何种情况下,它都可以包含本地化,导航,对象映射,配置关咯,审计日志等等。它还会处理授权,会话,功能(用于多租户应用程序)和异常处理。

分布式服务层

该层用于通过rest,odata,graphql...远程api提供应用程序/域功能。他们不包含业务逻辑,只是将http请求转换为域交互,或者可以使用应用程序服务来委派操作。该层通常包含授权,缓存,审计日志,对象映射,异常处理,session会话等。

应用程序层

应用程序层主要包括使用域层和域对象(域服务,实体...)来执行所请求的应用程序功能的应用程序服务。 它使用数据传输对象从表示或分布式服务层获取数据并将数据返回。 它还可以处理授权,缓存,审计日志,对象映射,会话等...

领域层

这是实现我们的域逻辑的主要层。 它包括实体,值对象和域服务,以执行业务/域逻辑。 它还可以包括规范并且可以触发域事件。 它定义了仓储接口,以便从数据源(通常是dbms)读取和保留实体。

基础设施层

基础设施层就是帮助其他层工作:它实现仓储接口(例如使用ef core)来使用真实的数据库.它还可能包括给供应商发送电子邮件的集成等。这不是图层下面的严格图层,但实际上是通过实现他们的抽象概念来支持其他图层。