NET 领域驱动设计实战系列总结
NET 领域驱动设计实战系列总结
一、引用
其实在去年本人已经看过很多关于领域驱动设计的书籍了,包括Microsoft .NET企业级应用框架设计、领域驱动设计C# 2008实现、领域驱动设计:软件核心复杂性应对之道、实现领域驱动设计和Asp.net 设计模式等书,但是去年的学习仅仅限制于看书,当时看下来感觉,领域驱动设计并没有那么难,并且感觉有些领域驱动设计的内容并没有好的,反而觉得有点华而不实的感觉,所以去年也就放弃了领域驱动设计系列的分享了,但是到今年,在博客园看到还是有很多人写领域驱动的文章,以及介绍了领域驱动设计相关的好处,这时候我就想,领域驱动设计真有这么好吗?但是我并不觉得好了,这时候就想是不是我没有实战没有深刻的感受呢?因此我在今年3月份的时候又重拾领域驱动设计,打算分享一系列关于领域驱动设计实现的文章,所以也就有了这个系列。
二、本系列所有专题目录
在刚开始打算写的时候,本以为对领域驱动设计相关理论知识掌握的不错,但当真正打算写的时候,发现之前的知识储备差不多忘的差不多了,无奈下只有重新再拿起书本来温习一遍,不过这次温习很快,因为之前都已经看过一篇。这里分享出来就是想告诉大家,没有真正实践过的东西是很容易忘记的,这时更加坚定了我要写这一系列的文章了。这个初衷也是我一直坚持写这个系列的动力。现在这个系列也告一段落了,从中我确实体会了领域驱动设计的美妙之处,以及现在软件设计的发展和改变。下面是本系列中所有专题的一个目录,为了帮助更好地收藏和自己进行索引,关于实践下来的体会将在下一部分分享给大家。
[.NET领域驱动设计实战系列]专题一:前期准备之EF CodeFirst
[.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店
[.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)
[.NET领域驱动设计实战系列]专题四:前期准备之工作单元模式(Unit Of Work)
[.NET领域驱动设计实战系列]专题五:网上书店规约模式、工作单元模式的引入以及购物车的实现
[.NET领域驱动设计实战系列]专题六:DDD实践案例:网上书店订单功能的实现
[.NET领域驱动设计实战系列]专题七:DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能
[.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现
[.NET领域驱动设计实战系列]专题九:DDD案例:网上书店AOP和站点地图的实现
[.NET领域驱动设计实战系列]专题十:DDD扩展内容:全面剖析CQRS模式实现
三、总结
通过对领域驱动设计的实践,本人对领域驱动设计的有点和缺点都有了一个清晰的认识。并不是所有软件都适合应用领域驱动来实现的,例如在一些公司还是用三层框架来进行软件的开发,这样并没有什么不好,针对一些业务逻辑简单和后期需求变更不大的软件,完全可以使用三层框架来进行开发,因为三层框架尽管各层之间的依赖关系比较大,不利于扩展。但其好处就是简单,快捷。对于一些小型项目用三层框架是极好的。但对于一些大型项目来说,三层框架可能就不怎么适合了,尤其是大型网站项目。这时候就可以考虑使用领域驱动设计,领域驱动设计推崇的富领域模型,即将相关实体的业务逻辑放在领域实体里面。领域驱动设计思想分层结构更细,使得各层之间的依赖降低,通过引入依赖注入框架拉进入达到低耦合,高内聚原则。并且通过仓储模式,可以使得针对其他数据库的存储也可以很方便的进行扩展。采用领域驱动设计也可以更多实施测试驱动开发,早在以前的项目,哪里会有单元测试这个东西啊。
通过这个系列最深刻的感受,除了对领域驱动设计有了更进一步的认识外,还有一点更深刻的感受就是做软件的一定要把自己学到的内容实践起来,并且通过博文或其他方式进行总结,这样才能更好的积累。尽管通过博文的方式不经常用一样会忘记,但是很多东西你总结了就是和没总结的不一样,总结了可以对知识有一个系统的梳理,这样可以让你深刻理解知识点,尽管忘记了,它也是被记录在大脑的某个角度,当重新遇到问题时,你完全可以通过自己写的博文重新找回来,并且找回来的认识并不会比之前的理解少,可能更加多,但是不总结的话,那种忘记可能就是真的忘记了,等于没看一样。所以,对于做软件来说,真需要多实践。所以,还是奉劝大家可以多总结,多实践,抛下浮躁的心态,想做好技术,需要的静下心来专研和实践。最近,刚接触的一个项目用到了一个一些非关系数据的内容。所以接下来,我将会新开一个非关系数据库的系列来进行总结自己这段时间里的经历。其中包括Mongodb、Redis等非关系数据库的相关内容。
最后附上,所有专题的完整DDD实践案例下载地址:
DDD实践案例下载地址:DDD实践案例:网上书店
NET 领域驱动设计实战系列总结的更多相关文章
- [.NET领域驱动设计实战系列]专题十一:.NET 领域驱动设计实战系列总结
一.引用 其实在去年本人已经看过很多关于领域驱动设计的书籍了,包括Microsoft .NET企业级应用框架设计.领域驱动设计C# 2008实现.领域驱动设计:软件核心复杂性应对之道.实现领域驱动设计 ...
- [.NET领域驱动设计实战系列]专题一:前期准备之EF CodeFirst
一.前言 从去年已经接触领域驱动设计(Domain-Driven Design)了,当时就想自己搭建一个DDD框架,所以当时看了很多DDD方面的书,例如领域驱动模式与实战,领域驱动设计:软件核心复杂性 ...
- [.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店
一.前言 在前面专题一中,我已经介绍了我写这系列文章的初衷了.由于dax.net中的DDD框架和Byteart Retail案例并没有对其形成过程做一步步分析,而是把整个DDD的实现案例展现给我们,这 ...
- [.NET领域驱动设计实战系列]专题十:DDD扩展内容:全面剖析CQRS模式实现
一.引言 前面介绍的所有专题都是基于经典的领域驱动实现的,然而,领域驱动除了经典的实现外,还可以基于CQRS模式来进行实现.本专题将全面剖析如何基于CQRS模式(Command Query Respo ...
- [.NET领域驱动设计实战系列]专题七:DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能
一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己的订单状态看到店家已经发货.从上面的业务逻辑可以看出,当用户 ...
- [.NET领域驱动设计实战系列]专题五:网上书店规约模式、工作单元模式的引入以及购物车的实现
一.前言 在前面2篇博文中,我分别介绍了规约模式和工作单元模式,有了前面2篇博文的铺垫之后,下面就具体看看如何把这两种模式引入到之前的网上书店案例里. 二.规约模式的引入 在第三专题我们已经详细介绍了 ...
- [.NET领域驱动设计实战系列]专题六:DDD实践案例:网上书店订单功能的实现
一.引言 上一专题已经为网上书店实现了购物车的功能了,在这一专题中,将继续对网上书店案例进行完善,本专题将对网上书店订单功能的实现进行介绍,现在废话不多说了,让我们来一起看看订单功能是如何实现的吧. ...
- [.NET领域驱动设计实战系列]专题四:前期准备之工作单元模式(Unit Of Work)
一.前言 在前一专题中介绍了规约模式的实现,然后在仓储实现中,经常会涉及工作单元模式的实现.然而,在我的网上书店案例中也将引入工作单元模式,所以本专题将详细介绍下该模式,为后面案例的实现做一个铺垫. ...
- [.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)
一.前言 在专题二中已经应用DDD和SOA的思想简单构建了一个网上书店的网站,接下来的专题中将会对该网站补充更多的DDD的内容.本专题作为一个准备专题,因为在后面一个专题中将会网上书店中的仓储实现引入 ...
随机推荐
- cocos2d-x-3.1在eclipse中的环境搭建
cocos2d-x-3.0出来后,到如今3.1. 自己在eclipse配置上走了不少弯路,记下来给大家方便,给自己方便. 前提条件: * Android NDK * Android SDK **OR* ...
- SQL 修改排序规则的问题 sql_latin1_general_cp1_ci_as
在一个项目中遇到:用原来的数据库生成的脚本,然后部署到新的服务器上,数据库的SQL_Latin1_General_CP1_CI_AS 怎么查询出来汉字都是乱码了. 遂查解决方法. 需要执行这个 ALT ...
- Android多点触控(图片的缩放Demo)
本文主要介绍Android的多点触控,使用了一个图片缩放的实例,来更好的说明其原理.须要实现OnTouchListener接口,重写当中的onTouch方法. 实现效果图: 源码: 布局文 ...
- poj 3311Hie with the Pie
题意:一个送披萨的,每次送外卖不超过10个地方,给你这些地方之间的时间,求送完外卖回到店里的总时间最小. 解法一: 这个n不大,即使是NP问题也才1E6多一些所以可以dfs():具体的回溯方法结合da ...
- [渣译文] SignalR 2.0 系列: SignalR简介
原文:[渣译文] SignalR 2.0 系列: SignalR简介 英文渣水平,大伙凑合着看吧,并不是逐字翻译的…… 这是微软官方SignalR 2.0教程Getting Started with ...
- java提高篇(十一)-----代码块
在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起, ...
- javascript的位操作、整数、二进制
位与(x&y):对操作数进行二进制与的操作,如果两个操作数的某一位两个都为1,将对应的结果位设为1. 0x0007 & 0x0003 = 0x0003 \ 一个小型年老棕色的狗:64 ...
- 开源Math.NET基础数学类库使用(12)C#随机数扩展方法
原文:[原创]开源Math.NET基础数学类库使用(12)C#随机数扩展方法 本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...
- Windows 驱动发展基金会(九)内核函数
Windows 驱动发展基金会系列,转载请注明出处:http://blog.csdn.net/ikerpeng/article/details/38849861 这里主要介绍3类Windows的内核函 ...
- 无尽的循环ViewPager
现在的情况 不改变的源代码,什么时候ViewPager滑动到最后item的时候,他就无法再往右滑动:当ViewPager滑动到第一个item的时候,他也无法再往前滑动. (以上全是废话) 设想 我们能 ...