[.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领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店
一.前言 在前面专题一中,我已经介绍了我写这系列文章的初衷了.由于dax.net中的DDD框架和Byteart Retail案例并没有对其形成过程做一步步分析,而是把整个DDD的实现案例展现给我们,这 ...
- [.NET领域驱动设计实战系列]专题十:DDD扩展内容:全面剖析CQRS模式实现
一.引言 前面介绍的所有专题都是基于经典的领域驱动实现的,然而,领域驱动除了经典的实现外,还可以基于CQRS模式来进行实现.本专题将全面剖析如何基于CQRS模式(Command Query Respo ...
- [.NET领域驱动设计实战系列]专题五:网上书店规约模式、工作单元模式的引入以及购物车的实现
一.前言 在前面2篇博文中,我分别介绍了规约模式和工作单元模式,有了前面2篇博文的铺垫之后,下面就具体看看如何把这两种模式引入到之前的网上书店案例里. 二.规约模式的引入 在第三专题我们已经详细介绍了 ...
- C#进阶系列——DDD领域驱动设计初探(六):领域服务
前言:之前一直在搭建项目架构的代码,有点偏离我们的主题(DDD)了,这篇我们继续来聊聊DDD里面另一个比较重要的知识点:领域服务.关于领域服务的使用,书中也介绍得比较晦涩,在此就根据博主自己的理解谈谈 ...
- DDD领域驱动设计初探(六):领域服务
前言:之前一直在搭建项目架构的代码,有点偏离我们的主题(DDD)了,这篇我们继续来聊聊DDD里面另一个比较重要的知识点:领域服务.关于领域服务的使用,书中也介绍得比较晦涩,在此就根据博主自己的理解谈谈 ...
- DDD理论学习系列(2)-- 领域
DDD理论学习系列目录 1. 引言 领域一词,主要有以下两个意思: 一国主权所达之地. 学术思想或社会活动的范围. 不管是指国家的主权范围也好还是学术活动范围,都是在讲一个范围,一个界限. 比如我们常 ...
- 单元测试系列之十一:Jmockit之mock特性详解
本文是Jmockit学习过程中,根据官网所列的工具特性进行解读. 1.调用次数约束(Invocation count constraints) 可以通过调用计数约束来指定预期和/或允许匹配给定期望的调 ...
- 单元测试系列之二:Mock工具Jmockit实战
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jm ...
- NewQuant的设计(一)——整体的领域设计
NewQuant的设计思路——整体的领域分析 “领域驱动设计(DDD)”是著名软件工程建模专家Eric Evans提出的一个重要概念,是“面向对象分析设计(OOAD)”的深化.当业务逻辑变得复杂,系统 ...
随机推荐
- 将三维空间的点按照座标排序(兼谈为std::sort写compare function的注意事项)
最近碰到这样一个问题:我们从文件里读入了一组三维空间的点,其中有些点的X,Y,Z座标只存在微小的差别,远小于我们后续数据处理的精度,可以认为它们是重复的.所以我们要把这些重复的点去掉.因为数据量不大, ...
- 记一次PHP7+opcache+zmq出现SIGSEGV 问题的查找(一次不成功的bug查找)
Title: 记一次PHP7+opcache+zmq出现SEGSEGV问题的查找(一次不成功的bug查找) bug来历自述:线上代码PHP环境是5.2,为了提升性能(逼格),于是升级为PHP7并使用 ...
- transition-delay
https://developer.mozilla.org/en-US/docs/Web/CSS/transition-delay
- AFN 无网络监控
直接把封装到请求里就好 -(void)afn{ //1.创建网络状态监测管理者 AFNetworkReachabilityManager *manger = [AFNetworkReachabilit ...
- Loadrunner监控Linux的17个指标
这17个指标根据需要设置吧,指标设置的越多,对服务器真实值影响越大,所以要秉承按需而设的原则. 1.Average load:Average number of processes simulta ...
- JS的函数
函数由四部分组成 function+function name+parameter+body 方法调用模式 Object.add(); 函数调用模式: add(3,4) 构造器调用模式:JS是基于原型 ...
- AngularJS四大特性
Google AnguarJS是一个JS框架,适用于以数据的CRUD操作为主的SPA应用. 四大特性: (1)MVC模型 Model:模型,即数据=>JS中的变量 View:视图,即数据的呈现= ...
- HTTP中的POST、GET区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...
- 解决Web部署 svg/woff/woff2字体 404错误
在IIS上部署web项目的时候,发现浏览器报找不到woff.woff2字体的错误,导致浏览器加载字体报404错误,由于服务器IIS不认SVG,WOFF/WOFF2 这几个文件类型,只要在IIS上添加M ...
- SQL Server 全文索引创建
在安装数据库管理系统SQL Server 后,默认情况下全文索引的服务是没有开启的 ,所以首先需要先开启服务,在sql server配置管理器中 (sql server configuration M ...