ABP Framework 入门开发指南
领域驱动设计(DDD)红宝书
修订版本号:1.0.0.0
ABP 框架中国小组(ABPFrameWorkGroup)@版权所有
2015-06-11
ABP Framework 入门开发指南
序 言
天道
该开发指南基于 ABP Framework 官方文档,由 ABP 框架中国小组(ABPFrameWorkGroup)
翻译。ABP 框架中国小组在 Github 的地址为:https://github.com/ABPFrameWorkGroup,
大家可以在该地址下载最新的翻译文档并加入讨论。
以后,最新的 ABPFrameWork 档,ABPFrameWork 实例教程,以及代码都通过 Github 的
ABP 框架中国小组(ABPFrameWorkGroup)发布,请大家关注。
ABP 官方文档翻译征集启动以来,得到了大家的热烈响应,先后共有 10 多名群友参与了
翻译,目前翻译工作已经安排完毕,再次感谢广大群友的热烈支持。毫无疑问,该开发指南的发
布是一次团体智慧和协作的结晶,是”ABP 框架中国小组”共同努力的成果。我们应当感谢他们
的默默付出,感谢他们在这个酷热的夏天依旧能够挥洒着汗水辛苦的工作。
此次的翻译工作完全是个人自主行为,旨在帮助那些学习.NET 架构和研究领域驱动设计
(DDD)的开发者们。我们有理由相信,通过学习官方文档并结合 ABP 的源码,大家的.NET 水平
必定有所提高。
该文档不仅是 ABP 的开发指南,也是.NET 架构设计的一个优秀参考范本,指南中提及的
各种封装和技术实现,也可以很方便的集成到自己的项目中去。因此,这里推荐大家在研究源码
的时候,遇到问题可以首先参考一下这本指南。
关于此次翻译的标准如下:
(1) 保留了原文的大部分关键词,这样方便大家以后学习这些常见词汇。
(2) 翻译的人称有第一人称和第二人称,由于时间关系,来不及统一。我个人倾向于第一人
称,因此对部分群友的翻译做了调整。
(3) 对部分翻译的语法做了调整,并且更加符合中国人的习惯。
(4) 翻译总体上保留了原文的风格,大家可以对比一下原文,这不失为一个学习英语的最佳
实践。
(5) 对于常见词汇,翻译统一了标准:如,derived 翻译为派生,be used to 翻译为“调用”
而不是“被用来”,implement 翻译为实现,等等。这里不在叙述。
ABP 框架中国小组(ABPFrameWorkGroup) 版权所有 | 版本:1.0
ABP Framework 入门开发指南
关于 ABP 快速开发框架及实战:
(1) 接下来 ABP 群会推出实例演示视频以及在线培训等。
(2)此外会根据大家的使用情况推出集成权限、用户、角色的基本开发框架。
(3)针对企业的开发者,我们将会推出高级版开发框架。
欢迎大家关注群主(上海 -阳铭)的博客:http://www.cnblogs.com/mienreal
ABP 架构设计交流群:134710707
ABP 框架中国小组(ABPFrameWorkGroup)成员如下(排名不分先后,随机排列):
山东-李伟 303283209
台灣-小張 2987853943
厦门-浩歌 385650059
深圳-Carl 280141563
冰封 121087772
NoZero 3921342
南京-菜刀 252900664
深圳-Leo 254213048
成都-乐忧 68336713
上海-半冷 562758404
上海-阳铭 614573519
东莞-天道 1832339824
总排版:北京-北北 34665992
总审核:上海-阳铭 614573519
总编辑:东莞-天道 1832339824
由于个人技术水平和英文水平也是有限的,因此错误在所难免。希望大家多多指正。有错误
或其他疑问的,请联系天道:1832339824@qq.com
东莞-天道 于 2015 年 6 月 13 日星期六晚 20 点
ABP 框架中国小组(ABPFrameWorkGroup) 版权所有 | 版本:1.0
ABP Framework 入门开发指南
目 录
1 ABP 总体介绍 .............................................................................................. 1
1.1 入门介绍 ............................................................................................................................. 1
1.1.1 ABP 采用了以下技术 ............................................................................................... 2
1.1.2 ABP 框架已实现了以下特性 .................................................................................... 2
1.1.3 ABP 适用的场景 ...................................................................................................... 4
1.2 多层架构体系 ...................................................................................................................... 4
1.2.1 前言 ........................................................................................................................ 4
1.2.2 ABP 的体系结构 ...................................................................................................... 5
1.2.3 领域层 ..................................................................................................................... 5
1.2.4 应用层 ..................................................................................................................... 6
1.2.5 基础设施层 .............................................................................................................. 6
1.2.6 WEB 与展现层 ......................................................................................................... 6
1.2.7 其它 ........................................................................................................................ 7
1.3 模块系统 ............................................................................................................................. 7
1.3.1 ABP 模块系统简介 ................................................................................................... 7
1.3.2 生命期事件 .............................................................................................................. 8
1.3.3 模块依赖 ................................................................................................................. 9
1.3.4 自定义的模块方法 ................................................................................................. 10
1.4 启动配置 ........................................................................................................................... 11
1.4.1 配置 ABP .............................................................................................................. 11
ABP 框架中国小组(ABPFrameWorkGroup) 版权所有 | 版本:1.0 i
ABP Framework 入门开发指南
1.4.2 配置模块 ............................................................................................................... 13
1.4.3 为一个模块创建配置 ............................................................................................. 13
2 ABP 公共结构 ............................................................................................ 16
2.1 ABP 依赖注入 .................................................................................................................... 16
2.1.1 传统方式的问题 .................................................................................................... 16
2.1.2 解决方案 ............................................................................................................... 18
2.1.3 依赖注入框架 ........................................................................................................ 20
2.1.4 ABP 依赖注入的基础结构 ...................................................................................... 21
2.1.5 附件 ...................................................................................................................... 26
2.2 ABP 会话管理 .................................................................................................................... 26
2.2.1 简介 ...................................................................................................................... 26
2.2.2 注入会话 ............................................................................................................... 27
2.2.3 使用会话属性 ........................................................................................................ 27
2.3 ABP 日志管理 .................................................................................................................... 28
2.3.1 服务器端 ............................................................................................................... 28
2.3.2 客户端 ................................................................................................................... 32
2.4 ABP 设置管理 .................................................................................................................... 32
2.4.1 介绍 ...................................................................................................................... 32
2.4.2 定义设置 ............................................................................................................... 33
2.4.3 设置范围 ............................................................................................................... 34
2.4.4 获取设置值 ............................................................................................................ 35
ABP 框架中国小组(ABPFrameWorkGroup) 版权所有 | 版本:1.0 ii
ABP Framework 入门开发指南
2.4.5 更改设置 ............................................................................................................... 36
2.4.6 关于缓存 ............................................................................................................... 36
3 ABP 领域层................................................................................................ 37
3.1 ABP 领域层—实体 ............................................................................................................ 37
3.1.1 实体类 ................................................................................................................... 37
3.1.2 接口约定 ............................................................................................................... 38
3.1.3 IEntity 接口 ............................................................................................................ 41
3.2 ABP 领域层—仓储 ............................................................................................................ 42
3.2.1 IRepository 接口 .................................................................................................... 42
3.2.2 仓储的实现 ............................................................................................................ 47
3.2.3 管理数据库连接 .................................................................................................... 48
3.2.4 仓储的生命周期 .................................................................................................... 48
3.2.5 仓储的最佳实践 .................................................................................................... 48
3.3 ABP 领域层—工作单元 ..................................................................................................... 49
3.3.1 通用连接和事务管理方法 ...................................................................................... 49
3.3.2 ABP 的连接和事务管理 .......................................................................................... 50
3.3.3 工作单元 ............................................................................................................... 53
3.3.4 选项 ...................................................................................................................... 56
3.3.5 方法 ...................................................................................................................... 57
3.3.6 事件 ...................................................................................................................... 57
3.4 ABP 领域层—数据过滤器 ................................................................................................. 58
ABP 框架中国小组(ABPFrameWorkGroup) 版权所有 | 版本:1.0 iii
ABP Framework 入门开发指南
3.4.1 介绍 ...................................................................................................................... 58
3.4.2 预定义过滤器 ........................................................................................................ 58
3.4.3 禁用过滤器 ............................................................................................................ 60
3.4.4 启用过滤器 ............................................................................................................ 61
3.4.5 设定过滤器参数 .................................................................................................... 62
3.4.6 自定义过滤器 ........................................................................................................ 62
3.4.7 其它对象关系映射工具.......................................................................................... 64
3.5 ABP 领域层—领域事件 ..................................................................................................... 64
3.5.1 事件总线 ............................................................................................................... 64
3.5.2 定义事件 ............................................................................................................... 65
3.5.3 触发事件 ............................................................................................................... 65
3.5.4 事件处理 ............................................................................................................... 66
3.5.5 注册处理器 ............................................................................................................ 68
3.5.6 取消注册事件 ........................................................................................................ 69
4 ABP 应用层................................................................................................ 71
4.1 ABP 应用层—应用服务 ..................................................................................................... 71
4.1.1 IApplicationService 接口 ........................................................................................ 71
4.1.2 应用服务类型 ........................................................................................................ 73
4.1.3 工作单元 ............................................................................................................... 74
4.1.4 应用服务的生命周期 ............................................................................................. 76
4.2 ABP 应用层—数据传输对象 .............................................................................................. 76
ABP 框架中国小组(ABPFrameWorkGroup) 版权所有 | 版本:1.0 iv
ABP Framework 入门开发指南
4.2.1 数据传输对象的作用 ............................................................................................. 76
4.2.2 DTO 约定 & 验证 ................................................................................................. 78
4.2.3 DTO 和实体间的自动映射 ..................................................................................... 80
4.2.4 辅助接口和类型 .................................................................................................... 82
4.3 ABP 应用层—DTO 有效性验证 ......................................................................................... 82
4.3.1 使用数据注解 ........................................................................................................ 83
4.3.2 自定义检验 ............................................................................................................ 84
4.3.3 设置缺省值 ............................................................................................................ 85
4.4 ABP 应用层—权限认证 ..................................................................................................... 86
4.4.1 定义权限 ............................................................................................................... 86
4.4.2 检查权限 ............................................................................................................... 87
4.5 ABP 应用层—审计日志 ..................................................................................................... 90
4.5.1 配置 ...................................................................................................................... 91
4.5.2 通过属性来启用和禁用审计日志 ........................................................................... 92
4.5.3 说明 ...................................................................................................................... 93
5 ABP 表现层................................................................................................ 94
5.1 ABP 展现层—动态 WebApi 层 .......................................................................................... 94
5.1.1 建立动态 web api 控制器 ..................................................................................... 94
5.1.2 使用动态 js 代理 .................................................................................................... 95
5.2 ABP 展现层—本地化 ......................................................................................................... 97
5.2.1 程序语言 ............................................................................................................... 97
ABP 框架中国小组(ABPFrameWorkGroup) 版权所有 | 版本:1.0 v