目录

介绍

在应用程序设计中,分层架构是一种被广泛使用的技术,它助于降低复杂度和提高代码的可重用性。在ABP框架中,使用了DDD(领域驱动设计)的原则来实现分层架构.

DDD分层架构

在DDD(领域驱动设计)架构模型中,有四个基础层。

  • 表现层: 用户访问接口。使用应用层来实现与用户交互。
  • 应用层: 应用层是表现层和领域层之间的媒介,它负责组织和编排业务对象来执行特定的应用任务。,
  • 领域层:定义业务对象、逻辑和规则,它是整个应用的核心。
  • 基础设施层:为上层提供通用的技术支持,大多数情况会使用第三方库。

ABP架构模型

在一个现代化的架构应用中,除了DDD模型的4个基础层(表现层、应用层、领域层、基础设施层)以外, 通常还有其他的一些逻辑层和物理层。下面的架构模型图是ABP建议使用并且已经实现的结构模型。ABP框架不仅提供了基类和服务来非常容易的实现此架构模型,并且已经提供了模板程序(参见ABP框架 - 我的第一个WEB API)来让我们直接在此架构模型上开始开发。

客户端

远程客户端是应用服务的消费者,通过HTTP API的方式来调用应用服务。客户端可以是一个单页应用程序(SPA),一个移动APP,也可以是一个第三方的消费者。本地化和导航可以在客户端中实现。

展现层

ASP.NET (Core) MVC可以被认为是展现层。展现层可以是物理层(通过HTTP API来调用应用服务),也可以是一个逻辑层(直接注入并使用应用服务)。展现层一般提供本地化、导航、对象映射、缓存、配置管理、审计日志等这些功能。也可以处理授权、会话和异常。

分布式服务层

分布式服务层通过API(例如REST、OData、GraphQL)来为远程客户端提供应用服务功能。它不包含任务业务逻辑,仅仅是接收HTTP请求,然后调用相应的应用/领域服务来完成特定功能。分布式服务层一般包括授权、缓存、审计日志、对象映射、异常处理和会话等。

应用层

应用层主要包含应用服务,应用服务从展示层/分布式服务层接收输入DTO对象,然后调用领域层的特定操作,组合编排领域对象,并根据需要返回输出DTO给展示层/分布式服务层。应用层通常也会包括授权、缓存、审计日志、对象映射、会话等。

领域层

领域层主要用来实现业务逻辑,它包括领域实体、值对象、领域服务并执行业务逻辑。它也规约和领域事件。领域层定义了数据仓储接口来读取和持久化实体到数据源,但是领域层并不实现数据仓储。

基础设施层

领域层定义了数据仓储接口,基础设施层则通过Entity Framework(Core)/NHibernate与实际数据库交互来实现数据仓储接口。基础设施层并没有严格的定义,它里面实现的功能通常是提供给其他层使用的公共功能,比如发送邮件功能,就可以定义在基础设施层。

ABP框架 - N层架构的更多相关文章

  1. ABP之N层架构

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

  2. 一、ABP框架框架摘要

    ABP框架几点说明: 一.什么是ABP ABP是一个建立在最新的ASP.NET的MVC和Web API技术的应用框架.它可以很容易地使用依赖注入.日志记录.验证.异常处理.本地化等,也使用流行的框架和 ...

  3. 使用代码生成工具快速生成基于ABP框架的Vue+Element的前端界面

    世界上唯一不变的东西就是变化,我们通过总结变化的规律,以规律来应付变化,一切事情处理起来事半功倍.我们在开发后端服务代码,前端界面代码的时候,界面都是依照一定的规律进行变化的,我们通过抽取数据库信息, ...

  4. [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序

    本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...

  5. ABP理论学习之N层架构

    返回总目录 自从写这个系列博客之后,发现很多园友还是希望有个直接运行的demo,其实在github上就有官方的demo,我直接把这demo的链接放到这里吧,另外,我分析,这些找不到demo的同学,很可 ...

  6. ABP架构学习系列三:手工搭建ABP框架

    由于公司的项目才接触到ABP这个框架,当时就觉得高大上,什么IOC.AOP.ddd各种专业词汇让人激情 澎湃,但在使用过程中碰到了许多坑,可能也许是没有去看源码导致的,但工作确实没有那么多时间让人去慢 ...

  7. ABP官方文档翻译 1.2 N层架构

    N层架构 介绍 ABP架构 其他(通用) 领域层 应用层 基础设施层 网络和展现层 其他 总结 介绍 应用程序代码库的分层架构是被广泛认可的可以减少程序复杂度.提高代码复用率的技术.为了实现分层架构, ...

  8. ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据

    ABP默认的数据库是SQLServer,不过ABP框架底层是EF框架,因此也是很容易支持其他类型的数据库的,本篇随笔介绍在ABP框架使用Mysql数据库,以及基于SQLServer创建MySql数据库 ...

  9. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

随机推荐

  1. Linux 绝对路径与相对路径

    根据文件名写法的不同,可将所谓的路径(path)定义为绝对路径(absolute)和相对路径(relative). 绝对路径:由根目录(/)开始写起的文件名或目录名称. 相对路径:相对于当前路径的文件 ...

  2. 使用gevent提高IO繁忙型wsgi服务的并发量(转)

    add by zhj: 在Benchmark of Python WSGI Servers一文中,作者进行详细分析,得出的结论是gevent在所有WSGI Server(包括Tornado.Uwsgi ...

  3. java排序算法(一):概述

    java排序算法(一)概述 排序是程序开发中一种非常常见的操作,对一组任意的数据元素(活记录)经过排序操作后,就可以把它们变成一组按关键字排序的一组有序序列 对一个排序的算法来说,一般从下面三个方面来 ...

  4. 关于SELECT LAST_INSERT_ID()的使用规则

    尊重个人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/71302441 首先我先解释以下在在映射文件中的代码是什么意思. < ...

  5. SuperMap iClient 查询成功后如何传递参数?

    一.iClient API文档中的接口描述 二.范例 //定义一个this对象 this.param = new SuperMap.LonLat(point.x, point.y); querySer ...

  6. Java基础学习笔记七 Java基础语法之继承和抽象类

    继承 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系. 例如公司中的研发部员工和维护部员工都属于员工, ...

  7. beta冲刺6

    前言:此篇是补昨天凌晨的.后面有更新但是太晚了就没有即使更新.所以现在过来更新一下. 昨天的未完成: 用户测试+测试报告 目前剩下的功能点:输入内容检测 我的社团输出显示格式调整. 今天的完成: 我的 ...

  8. 第一次作业:我与CS的缘分

    "既然选择了远方,便只顾风雨兼程"   --汪国真 一.结缘计算机 1.1初识计算机 当第一次看到这个作业题目的时候,我的思虑不禁回到了小时候那个对这个世界的一切充满兴趣的纯真年代 ...

  9. 网络1711c语言第0次作业总结

    作业地址:https://edu.cnblogs.com/campus/jmu/JMUC--NE17111712/homework/861 总结 1.评分标准 以下要求中除了未交和抄袭0分,其他项最多 ...

  10. 201621123040《Java程序设计》第十一周学习总结

    1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 2.1源代码阅读:多线程程序BounceThread 2.1.1BallRunnable类有什么用?为什 ...