一、ABP整体介绍
二、ASP.NET Boilerplate入门
三、ABP分层架构
四、ABP模块系统
五、ABP启动配置
六、ABP依赖注入
七、ABP Session管理
八、ABP日志管理
九、ABP设置管理
十、ABP领域层——实体(Entities)
十一、ABP领域层——仓储(Repositories)
十二、ABP领域层——工做单元(Unit Of work)
1三、ABP领域层——数据过滤器(Data filters)
1四、ABP领域层——领域事件(Domain events)
1五、ABP应用层——应用服务(Application services)
1六、ABP应用层——数据传输对象(DTOs)
1七、ABP应用层——参数有效性验证
1八、ABP应用层——权限验证
1九、ABP应用层——审计日志
20、ABP展示层——动态生成WebApi
2一、ABP展示层——Javascript函数库
2二、ABP展示层——导航栏设置
2三、ABP展示层——异常处理
2四、ABP基础设施层——集成Entity Framework
2五、ABP身份与权限管理模块html
我按照ABP官方文档的结构大概列出了我准备写的文章系列,之后文章中的内容将会是部分为翻译部分为本身的经验和感觉。这一系列文章也正好做为我团队新成员的培训教材。git
有几回在技术交流会和QQ群上我提到ABP项目,几乎没有人知道这个开源项目,张善友、蟋蟀等很多朋友问过我,怎么在中文社区都搜不到ABP这个项目的介绍文章呢? 是呀,这么好的东西,应该让更多人知道。我在博客园写第一篇文章的时候就想介绍它,但由于工做太忙,文字表达效率过低,就一拖再拖。今天在netfocus汤兄的ENode群里聊到ABP项目,有很多朋友还挺感兴趣,因此建了一个QQ群(134710707),供你们之后讨论ABP的架构设计、DDD话题。github
去年咱们公司在规划一个新的O2O项目时,我从新考虑了技术选型(具体状况我在第一、2篇博客文章里有介绍http://www.cnblogs.com/mienreal/p/4340864.html)。我大量的学习了新技术和开源项目,决定要开发一套适合本身的框架,准备使用的思想和技术包括DDD领域驱动设计、分布式架构、模块化开发、ASP.NET MVC 五、Web Api、C# 5.0、EF 六、AutoMapper、SqlServer或MySql、Redis、XUnit、SPA等。数据库
为了有一个好的参考对象,我研究了国内外10多个框架项目,最深刻研究的有dax.net的Apworks、微软的Orchard。后来在Github上按照关注度由高到低列出全部C#项目,我看了前1000个项目的介绍,在其中找到了这个让我很是惊喜的ABP项目,它几乎彻底知足我前面所列出的那些条件。它不只功能强大,项目结构和编码风格都很是优雅,颇有艺术感。设计模式
我在ABP源码的基础上,按照本身的需求作了一些修改,已用于实际开发项目数月,在这期间,个人技术也获得了很大提高。为了让更多朋友了解和使用ABP,我会写一系列的文章来介绍他的架构思想和运用方法,今天列个目录和整体介绍。英文比较好的朋友能够直接看他的官方网站,文档已经写得很是好了。架构
ABP的官方网站:http://www.aspnetboilerplate.comapp
ABP在Github上的开源项目:https://github.com/aspnetboilerplate框架
ABP框架于2014年5月4日首次在Github开源,截止到2015年5月25日,总共进行了1271次代码提交,49次版本发布,如今的版本号是0.6.1.1。分布式
我在其余项目中看到的不少优秀设计,在ABP项目中都已存在,并且可能实现得更好。ABP框架的代码,都经过xUnit进行了单元测试。做者一直在用ABP框架开发他们的实际项目,从Github和他官方论坛上的信息能够看到,有不少国外的开发者在将ABP用做生产项目的基础框架。若是须要直接使用ABP组件,能够经过Nuget安装(在VS的Nuget包管理界面搜索Abp)。模块化
为了更好地将ABP适用于本身的项目,我对ABP的源码作了一些修改,而没有直接使用ABP组件。
个人前篇文章中有介绍:新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序(续1)
我但愿更多国内的架构师能关注到ABP这个项目,也许这其中有能帮助到您的地方,也许有您的参与,这个项目能够发展得更好。
今天只是做了一个大概介绍,但愿有更多的朋友能去阅读源代码,而后参与讨论。
欢迎加QQ群:
ABP架构设计交流群:134710707 ABP架构设计交流2群: 579765441
2015-5-28 13:30 补充
首先很感谢那么多朋友对本系列文章的高度关注,QQ群刚建立3天(5月28日),就有400多人加入了。有些朋友是对新技术感兴趣,有些对架构设计感兴趣,有些对领域驱动设计(DDD)感兴趣,而ABP恰好结合了这些热门的话题。
有些DDD的忠实爱好者可能发现了ABP框架并无实现全部DDD的概念,并且在简单的示例中也彻底没有体现出DDD的设计思想。
在此我补充谈一下个人想法:
由于我是创业团队的技术合伙人,工做很是很忙,同时也由于能力有限,我能作的就是让更多的人了解到ABP框架在技术和设计模式上的精妙从而并产生研究它的兴趣,经过你们的共同努力才能对.NET技术社区产生积极的影响。
因为想在尽可能短的时间让更多人对ABP有个大体了解,我如今只是简单大概地翻译了原做者的文章和例子,并无按照DDD的规范来作。对于尚未太了解DDD的朋友,我没办法在这么短的文章讲清楚(网上已经有不少好的DDD文章,我在QQ群里也共享了一些DDD的学习资料)。我是想等你们对ABP框架和用法有一些了解之后,我们再开发一个完整的功能(好比团购)来实践DDD,先设计领域模型,再一步一步编码实现。
DDD推出来已经11年了,为何极少公司把它用于项目生产呢?个人感受:一是由于DDD自己确实有难度,又要颠覆之前惯用的数据库驱动思惟,对我的能力有挑战;二是由于彻底按照DDD来作,对不能熟悉运用的团队来讲,会影响开发效率,延长开发周期,对公司眼前利益有挑战。可是用DDD思想开发的项目,可维护性要高不少。怎么才能够又要好又要快的呢? 我以为一个高质量的基础架构就很是重要,有了好的框架,咱们就能够减小重复写代码的时间,能够把更多精力花在领域设计上,从而缩短开发周期。这样就能达到我在第一篇文章所说的“新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序”。尽管ABP没有彻底实现DDD,尽管它还有不完善的地方,正如做者所说“它是一个让咱们开发新的现代WEB应用程序的新起点”。咱们就在这个起点上,来不断完善吧。你们共同努力,让新思想、新技术、新架构流行起来!
但愿英文能力比较好的朋友能够参与翻译原做者的文档,这样我就能够腾出精力来准备ABP源码解读和谈实际使用中的经验。
欢迎加QQ群:
ABP架构设计交流3群: 291304962