ABP:基于DDD的现代ASP.NET开发框架

1:ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。

2:一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板。

3:基于DDD的经典分层架构思想,实现了众多DDD的概念(但没有实现所有DDD的概念)。

4:ABP的官方网站:http://www.aspnetboilerplate.com

5:ABP在Github上的开源项目:https://github.com/aspnetboilerplate

6:ABP框架于2014年5月4日首次在Github开源

ASP.NET Boilerplate采用了以下技术:

服务器端:

•ASP.NET MVC 、Web API 2、ASP.NET Core

•DDD领域驱动设计 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)

•Castle windsor (依赖注入容器)

•Entity Framework 6、Entity Framework Core 、 Daper ……,数据迁移

•Log4Net、NLog(日志记录)

•AutoMapper(实现Dto类与实体类的双向自动转换)

•CacheManager、EventBus、Module、SettingManager、 BackgroundJob、NodifyService

•…

ABP框架已实现了以下特性:

•多语言/本地化支持

•多租户支持(每个租户的数据自动隔离,业务模块开发者不需要在保存和查询数据时写相应代码)

•软删除支持(继承相应的基类或实现相应接口,会自动实现软删除)

•统一的异常处理(应用层几乎不需要处理自己写异常处理代码)

•数据有效性验证(Asp.NET MVC只能做到Action方法的参数验证,ABP实现了Application层方法的参数有效性验证)

•日志记录(自动记录程序异常)

•模块化开发(每个模块有独立的EF DbContext,可单独指定数据库)

•Repository仓储模式(已实现了Entity Framework、NHibernate、MangoDB、内存数据库)

•Unit Of Work工作单元模式(为应用层和仓储层的方法自动实现数据库事务)

•EventBus实现领域事件(Domain Events)

•DLL嵌入资源管理

•通过Application Services自动创建Web Api层(不需要写ApiController层了)

•自动创建Javascript 的代理层来更方便使用Web Api

•封装一些Javascript 函数,更方便地使用ajax、消息框、通知组件、忙状态的遮罩层等等

领域层:

•领域层是所有的业务规则实现的地方。

•实体代表了业务领域的数据和操作。在实践中,它们一般会映射到数据库的表中。

•仓储是跟集合很像的对象,使用仓储可以检索数据源(数据库)上的实体,并将实体持久化到数据源上。领域层只是定义了仓储,但是并没有实现它们,它们是在基础设施层实现的。

•领域事件定义了领域特定的事件,也包括触发和处理这些事件。领域服务借助实体运行,并实现了不属于单个实体的业务规则。

•工作单元是一种管理实体的设计模式,这些实体受业务逻辑影响,并将状态持久化到数据存储中。

•领域层应该尽可能地独立于第三方的库。

应用层:

1.应用层包含了展现层使用的应用服务。应用服务方法接收一个DTO(数据传输对象)作为输入参数,使用这个输入对象执行一些特定的领域层操作,然后,如果需要的话,可能返回另一个DTO。

2.一般而言,应用服务方法不接收或者返回一个实体对象,这样做的好处就是可以允许展现层可以从领域层中将实体抽象出来,而不受实体的约束。

3.一个应用服务方法一般被看作是一个工作单元。

4.用户输入验证也是在这一层实现的。ABP提供了一个基础设施,因此可以很容易地实现验证。

5.建议使用一个将实体映射为DTO的工具,比如AutoMapper,TinyMapper等。

ABP框架与基础组件介绍相关推荐

  1. ABP 详解系列4:ABP框架的基础配置及依赖注入讲解

    ABP框架的基础配置及依赖注入讲解 这篇文章主要介绍了ABP框架的基础配置及依赖注入讲解,是ABP框架上手使用的基本,要的朋友可以参考下 配置ABP 配置是通过在自己模块的PreInitialize方 ...

  2. 每日优鲜小程序基础组件介绍

    每日优鲜小程序基础组件介绍 1.基础组件介绍 2.基础组件的结构与作用 3.基础组件的接入方法 初次引入 初始化 更新与维护 基础组件接入 1.基础组件介绍 小程序基础组件基于每日优鲜主商城小程序业务 ...

  3. abp项目怎样发布到服务器,ABP框架的基础配置及依赖注入讲解

    配置ABP 配置是通过在自己模块的PreInitialize方法中来实现的 代码示例如下: ? 和orchard类似,abp框架一开始就被设计成模块化的,不同的模块可以通过abp框架来进行配置.举个例 ...

  4. 鸿蒙开发-基础组件介绍及chart组件使用

    场景 鸿蒙基于JS搭建HelloWorld并修改国际化文件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118274050 在 ...

  5. ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

    在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...

  6. ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程

    在前面随笔介绍的<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>里面,介绍了如何改进和完善审计日志和登录日志的应用服务端和Winform客户端,由于篇幅限制,没有进 ...

  7. ABP框架-1.1 ABP总体介绍 - 入门介绍

    ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用佳实践和流行技术开发现代WEB ...

  8. ABP框架—项目文件介绍(2)

    目录 1.ABP项目文件 2.后台解决方案介绍 1.ABP项目前端文件介绍 (1)_screenshots :截屏文件夹, 存放了项目运行截图,可直接删除 (2)aspnet-core:项目后台代码 ...

  9. Scrapy基础 第三节:Scrapy框架结构和组件介绍

    前置知识: 掌握Python的基础知识 对爬虫基础有一定了解 说明: 运行环境 Win10,Python3 64位 目录: 第一节:Scrapy介绍和安装配置 第二节:Scrapy版的Hello Wo ...

最新文章

  1. 推荐10款优秀的JavaScript Web UI库 框架和套件
  2. Luggage Lock 偏移,bfs,预处理(2021.11.沈阳)
  3. Tornado web 框架
  4. Mac下ssh支持auto complete
  5. ubantu 添加防火墙策略_ubuntu安装防火墙并策略配置
  6. 二维数组各行求和_数组入门 | 数组的维度和尺寸
  7. 专业英语笔记:Spring框架
  8. mysql循环建表_MySQL 开发准则(总结自阿里巴巴开发手册)
  9. Ajax运用json数组传输数据
  10. opendss视频教程
  11. 在线UML图设计 用例图 在线制图
  12. laravel 开源文档管理系统
  13. 劲爆!群晖docker视频
  14. 扫地机器人的配件能自制么_米家扫地机器人,第三方配件耗材靠谱吗?
  15. VBA获取区域的起始行、结束行
  16. python输出emoji表情符号 学习笔记
  17. LSI SAS9311-8i阵列卡更新固件、刷新IT模式过程详解
  18. C++设计模式——状态模式(高屋建瓴)
  19. unity投篮小游戏,原创,请勿转载。
  20. 使用SQL4Automation让CodeSYS连接数据库

热门文章

  1. Python PyScript教程之将 Python 带入浏览器进行图像处理
  2. 淘宝客微信机器人SDK调用接口
  3. ffmpeg云服务器推流
  4. 软件工程实践2019第四次作业
  5. 2011年第四季度,DDR3最新进展,尔必达出品,25nm工艺,单颗粒最大512MB!
  6. Springer latex期刊模板使用的坑
  7. 统计思维就是透过现象看本质
  8. margin和padding的坑
  9. 饥荒联机版 Don‘t Starve Together服务器架设
  10. 分类预测 | MATLAB实现SVM(支持向量机)分类预测