点这里进入ABP系列文章总目录html
基于DDD的现代ASP.NET开发框架--ABP系列之一、ABP整体介绍git
ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。github
ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板。ajax
ASP.NET Boilerplate 基于DDD的经典分层架构思想,实现了众多DDD的概念(但没有实现全部DDD的概念)。数据库
ABP的官方网站:http://www.aspnetboilerplate.comjson
ABP在Github上的开源项目:https://github.com/aspnetboilerplate服务器
ABP框架于2014年5月4日首次在Github开源,截止到2015年5月25日,总共进行了1271次代码提交,49次版本发布,如今的版本号是0.6.1.1。架构

ASP.NET Boilerplate采用了如下技术:
服务器端:
- ASP.NET MVC 五、Web API 二、C# 5.0
- DDD领域驱动设计 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)
- Castle windsor (依赖注入容器)
- Entity Framework 6 \ NHibernate,数据迁移
- Log4Net(日志记录)
- AutoMapper(实现Dto类与实体类的双向自动转换)
客户端:
- Bootstrap
- Less
- AngularJs
- jQuery
- Modernizr
- 其余JS库: jQuery.validate、jQuery.form、jQuery.blockUI、json2
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、消息框、通知组件、忙状态的遮罩层等等
除ABP框架项目之外,还开发了名叫“Zero”的模块,实现了如下功能:
- 身份验证与受权管理(经过ASP.NET Identity实现的)
- 用户&角色管理
- 系统设置存取管理(系统级、租户级、用户级,做用范围自动管理)
- 审计日志(自动记录每一次接口的调用者和参数)
我在其余项目中看到的不少优秀设计,在ABP项目中也已存在,并且可能实现得更好。ABP框架的代码,都经过xUnit进行了单元测试。做者一直在用ABP框架开发他们的实际项目,从Github和他官方论坛上的信息能够看到,有不少国外的开发者在将ABP用做生产项目的基础框架。若是须要直接使用ABP组件,能够经过Nuget安装(在VS的Nuget包管理界面搜索Abp)。并发
为了更好地将ABP适用于本身的项目,我对ABP的源码作了一些修改,而没有直接使用ABP组件。app
个人前篇文章中有介绍:新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序(续1)
我但愿更多国内的架构师能关注到ABP这个项目,也许这其中有能帮助到您的地方,也许有您的参与,这个项目能够发展得更好。
今天只是做了一个大概介绍,但愿有更多的朋友能去阅读源代码,而后参与讨论。
ABP适用的场景:中小规模WEB应用开发。(处理高并发并非ABP的强项。须要很是高并发的DDD框架,建议去研究netfocus的ENode。)
欢迎加QQ群:
ABP架构设计交流群:134710707
ABP架构设计交流2群: 579765441
点这里进入ABP系列文章总目录