基于DDD的现代ASP.NET开发框架--ABP系列文章总目录
ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会
ABP交流会录像视频:ABP架构设计交流群-7月18日上海线下交流会的内容分享(有高清录像视频的链接)
代码自动生成:分享一个与ABP配套使用的代码生成器源码
ABP系列文章总目录:
1、ABP总体介绍
2、ASP.NET Boilerplate入门
3、ABP分层架构
4、ABP模块系统
5、ABP启动配置
6、ABP依赖注入
7、ABP Session管理
8、ABP日志管理
9、ABP设置管理
10、ABP领域层——实体(Entities)
11、ABP领域层——仓储(Repositories)
12、ABP领域层——工作单元(Unit Of work)
13、ABP领域层——数据过滤器(Data filters)
14、ABP领域层——领域事件(Domain events)
15、ABP应用层——应用服务(Application services)
16、ABP应用层——数据传输对象(DTOs)
17、ABP应用层——参数有效性验证
18、ABP应用层——权限验证
19、ABP应用层——审计日志
20、ABP展现层——动态生成WebApi
21、ABP展现层——Javascript函数库
22、ABP展现层——导航栏设置
23、ABP展现层——异常处理
24、ABP基础设施层——集成Entity Framework
25、ABP身份与权限管理模块
我按照ABP官方文档的结构大概列出了我准备写的文章系列,以后文章中的内容将会是部分为翻译部分为自己的经验和感受。这一系列文章也正好作为我团队新成员的培训教材。
背景介绍:
有几次在技术交流会和QQ群上我提到ABP项目,几乎没有人知道这个开源项目,张善友、蟋蟀等不少朋友问过我,怎么在中文社区都搜不到ABP这个项目的介绍文章呢? 是呀,这么好的东西,应该让更多人知道。我在博客园写第一篇文章的时候就想介绍它,但因为工作太忙,文字表达效率太低,就一拖再拖。今天在netfocus汤兄的ENode群里聊到ABP项目,有不少朋友还挺感兴趣,所以建了一个QQ群(134710707),供大家以后讨论ABP的架构设计、DDD话题。
去年我们公司在规划一个新的O2O项目时,我重新考虑了技术选型(具体情况我在第1、2篇博客文章里有介绍http://www.cnblogs.com/mienreal/p/4340864.html)。我大量的学习了新技术和开源项目,决定要开发一套适合自己的框架,准备使用的思想和技术包括DDD领域驱动设计、分布式架构、模块化开发、ASP.NET MVC 5、Web Api、C# 5.0、EF 6、AutoMapper、SqlServer或MySql、Redis、XUnit、SPA等。
为了有一个好的参考对象,我研究了国内外10多个框架项目,最深入研究的有dax.net的Apworks、微软的Orchard。后来在Github上按照关注度由高到低列出所有C#项目,我看了前1000个项目的介绍,在其中找到了这个让我非常惊喜的ABP项目,它几乎完全满足我前面所列出的那些条件。它不仅功能强大,项目结构和编码风格都非常优雅,很有艺术感。
我在ABP源码的基础上,按照自己的需求做了一些修改,已用于实际开发项目数月,在这期间,我的技术也得到了很大提升。为了让更多朋友了解和使用ABP,我会写一系列的文章来介绍他的架构思想和运用方法,今天列个目录和总体介绍。英文比较好的朋友可以直接看他的官方网站,文档已经写得非常好了。
ABP的官方网站:http://www.aspnetboilerplate.com
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源码解读和谈实际使用中的经验。