基于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源码解读和谈实际使用中的经验。
欢迎加QQ群:
ABP架构设计交流群:134710707
ABP架构设计交流2群: 579765441
基于DDD的现代ASP.NET开发框架--ABP系列文章总目录的更多相关文章
- 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录(转)
出处:http://www.cnblogs.com/mienreal/p/4528470.html ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会 ABP交流会录像视 ...
- 基于DDD的现代ASP.NET开发框架--ABP系列之3、ABP分层架构
基于DDD的现代ASP.NET开发框架--ABP系列之3.ABP分层架构 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:ht ...
- 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程
基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...
- 基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- 点这里进入ABP系列文章总目录
基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...
- (转)基于DDD的现代ASP.NET开发框架--ABP分层架构
介绍DDD概念Eric Evans的“Domain-Driven Design领域驱动设计”简称 DDD,它是一套综合软件系统分析和设计的面向对象建模方法,或者可称为MDD模型驱动方法的一种,区别于M ...
- ABP系列文章总目录:
转自:http://www.cnblogs.com/mienreal/p/4528470.html 1.ABP总体介绍 2.ASP.NET Boilerplate入门 3.ABP分层架构 4.ABP模 ...
- Asp.NETCore轻松学系列阅读指引目录
前言 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进阶,适合没有 .NETCore 编程经验到小白同学,也适合从 .NET Framework 迁移 ...
- 解读ASP.NET 5 & MVC6 ---- 系列文章
本系列的大部分内容来自于微软源码的阅读和网络,大部分测试代码都是基于VS RC版本进行测试的. 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介 解读ASP.NET 5 ...
随机推荐
- 简谈百度坐标反转至WGS84的三种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图 ...
- 【调侃】IOC前世今生
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
- HTML5 语义元素(二)文本内容
上一篇介绍的是关于页面结构方面的语义元素,本篇介绍文本内容方面,包含:<bdi>.<details>.<summary>.<mark>.<outp ...
- 红黑树——算法导论(15)
1. 什么是红黑树 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极 ...
- 模拟AngularJS之依赖注入
一.概述 AngularJS有一经典之处就是依赖注入,对于什么是依赖注入,熟悉spring的同学应该都非常了解了,但,对于前端而言,还是比较新颖的. 依赖注入,简而言之,就是解除硬编码,达到解偶的目的 ...
- AJAX操作数据
本文使用AJAX访问数据库文件,并显示在网页中.另外还有AJAX对数据库的删除操作,网页不加载,只刷新数据. 随意使用数据库中的一张表: 使用AJAX显示表中内容,首先打入body代码: <h1 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- java web学习总结(五) -------------------servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- AlloyTouch实战--60行代码搞定QQ看点资料卡
原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/kandian 先验货 访问DEMO你也可以点击这里 源代码可以点击这里 如你体验所见,流程的滚动的 ...
- BPM SharePoint解决方案分享
一.需求分析 SharePoint作为微软推出的协同类平台产品,为客户提供了门户.内容.文档.流程.社区.搜索.BI等一系列的解决方案,然而其流程功能由于设计理念差异,不能完全满足客户的需求,主要原因 ...