大话领域驱动设计——简介

32ba0cf635e7964132ea9314bfb1f127.png

如果说当下最热门的技术概念或架构思想,那么领域驱动设计(DDD)一定占有一席之地。

f065f62d4b593b2542bd0733c883d790.gif

上个系列,我讲了ABP vNext框架在微服务架构下的落地思路,而ABP vNext是基于DDD思想的完整框架之一,同时DDD也是微服务架构服务拆分的主流依据。无论想学好ABP还是微服务架构,首先要理解DDD。这一系列,我就从各个概念,结合在ABP vNext中的用法详细讲解DDD。

37866714a7cc0f47b609a1f0c9618661.gif

DDD是Domain Driven Design的缩写,中文翻译为领域驱动设计。首先要明确一点,DDD是一套方法论,主要面向软件设计的方法论。学习它首先要把它从具体的实现抽离出来,也要从微服务架构的概念里抽离出来,它们是相互独立的概念。而ABP框架是DDD思想的基础落地方案之一。所以是先学思想,再学落地。

d0108bf2139df7024d7a67368340f966.gif

DDD的核心是领域。领域又称为问题域,是对系统业务的抽象,意在将我们的重点放在需要解决的问题本身,而不是如何实现。DDD希望为业务专家(领域专家)和研发人员(技术专家)提供一套完整高效的沟通方式,并在此基础上由他们共同建立可快速落地的系统模型(领域模型)。在此工程中,业务专家不需要去关注技术实现,技术人员应该优先把精力放在理解业务本身而不是实现的细节。

82a2a3fe7738cd8c2e67e42dbfe5a72f.gif

DDD的核心产出结果是领域模型,在过去无论是传统软件工程方法或是基于UML的面向对象建模,软件设计过程都会产出多个不同维度的设计图,例如类图、顺序图、流程图……。但是这样存在一个问题,因为需求不断变更,每次变化我们都要花大量时间修改多个设计图。尤其对于进度比较急项目,经常会出现代码不断修改但是设计图没有足够的时间去维护。慢慢会导致设计图和实际代码不一致甚至区别很大,那么设计图将失去意义。而在DDD的思想中,所有的领域设计,都会绘制在一个图也就是领域模型图中,相当于将过去的多个图合成一个。那么我们改代码的同时,就很容易同步去修正领域模型。

后面的章节,我将从以下几个方面来深入介绍领域驱动设计:

   1. 战略设计和战术设计

   2. 分层架构

   3. 各项概念(实体、聚合、服务、DTO等)

   4. 实现方法

1ca0c9f639e30d02f4572223a287a90c.png

END

6f515dc237610c6e0bf7e1e95cbadba6.png

关注我获得

更多精彩

797518654ed032fdc746921a6cb3478f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件项目组织管理(八)项目质量管理

文章目录软件质量的重要性对质量的认识传统的认识新的认识质量与等级什么是质量什么是质量管理什么是软件质量软件项目管理的目标质量管理的过程质量管理发展的四个阶段戴明改进循环(PDCA循环)项目质量计划编制方法——质量标杆法影响项目质量的因素(5M1…

Avalonia跨平台入门第十九篇之语音播放

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定、自定义Window样式、动画效果、Expander控件、ListBox折叠列表、聊天窗口、ListBox图片消息、窗口抖动、语音发送;今天趁着大周末的时间接着去…

软件项目组织管理(九)项目人力资源管理

文章目录什么是人力资源人力资源的特征什么是项目人力资源管理管理员工的关键所在马斯洛的需求层次理论赫兹伯格的双因素理论权力理论提高项目工作有效性的7种习惯人力资源管理过程人力资源管理的工具方法责任分配矩阵资源负荷资源平衡团队发展的5个阶段(塔克曼模型…

javax.jdo.option.ConnectionURL配置的问题

2019独角兽企业重金招聘Python工程师标准>>> Hive安装过程中出现 The reference to entity "createDatabaseIfNotExist" must end with the ; delimiter.问题,具体如下所示: [Fatal Error] hive-site.xml:132:95: The reference to…

设计模式21:State 状态模式(行为型模式)

State 状态模式(行为型模式) 动机(Motivation) 在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态的行为就可能完全…

在 k8s 以外的分布式环境中使用 Dapr

在Dapr 文档和实践案例中多是推荐采用k8s, 其实我目前也是在k8s 上操作的,有公有云TKE,AKS,还有私有云的Rancher ,它并没有传闻中的那么难,而且我认为它非常容易上手。不过,我还是有很多人不愿意使用k8s 。…

javascript原型链中 this 的指向

为了弄清楚Javascript原型链中的this指向问题,我写了个代码来测试: var d {d: 40};var a {x: 10,calculate: function (z) {return this.x this.y z this.d},__proto__:d};var b {y: 20,__proto__: a};var c {y: 30,__proto__: a};运行如下的代码…

Lucene5.5.4入门以及基于Lucene实现博客搜索功能

前言 一直以来个人博客的搜索功能很蹩脚,只是自己简单用数据库的like %keyword%来实现的,所以导致经常搜不到想要找的内容,而且高亮显示、摘要截取等也不好实现,所以决定采用Lucene改写博客的搜索功能。先来看一下最终效果&#x…

都是基于.NET平台,WPF能取代Winform吗?

学Winform还是WPF?很多winform的学者时常在我的技术群咨询要不要学习WPF?我一贯的观点是必须学啊!如果是搞工控做cs软件开发,WPF自然是首选。WPF优势在哪里?①前后端分离:WPF是数据驱动的而非Winform的事件…

正确对待生活

三文鱼,国人称为马哈鱼。是一类洄游性鱼类,为常被食用的鱼类之一。主要生活在大西洋及太平洋,在美洲大湖及其他湖可以找到。三文鱼在淡水环境下出生,之后移到海水生长,又会洄游到淡水繁殖。三文鱼会利用太阳和地球磁场…

WPF 实现验证码控件

WPF开发者QQ群此群已满340500857 &#xff0c;请加新群458041663由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 01—代码如下一、创建CheckCode.xaml代码如下。<ResourceDictionary xmlns"http://schemas.microsoft.c…

Mysql数据库性能优化

2019独角兽企业重金招聘Python工程师标准>>> Mysql数据库性能优化&#xff0c;可以从下面三点入手&#xff1a; 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式&#xff0c;适度 遵循三大范式就会带来查询时经常需要join&#xff0c;导致…

4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2

1. 前言上一篇文章我们了解了bombardier&#xff0c;并知道了bombardier.yml与开源项目bombardier的关系&#xff0c;接下来的文章我们了解一下wrk、wrk2&#xff0c;并对比一下它们与bombardier的关系2. 认识wrkwrk是一种现代 HTTP 基准测试工具&#xff0c;能够在单个多核 CP…

dispatchTouchEvent onInterceptTouchEvent onTouchEvent区分

1. dispatchTouchEvent 是处理触摸事件分发,执行super.dispatchTouchEvent(ev)&#xff0c;事件向下分发。 2. onInterceptTouchEvent是ViewGroup提供的方法&#xff0c;默认返回false&#xff0c;返回true表示拦截。 3. onTouchEvent是View中提供的方法&#xff0c;ViewGroup也…

Avalonia跨平台入门第二十篇之语音播放问题

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定、自定义Window样式、动画效果、Expander控件、ListBox折叠列表、聊天窗口、ListBox图片消息、窗口抖动、语音发送、语音播放;今晚加个班来解决…

递归算法浅谈

递归算法 程序调用自身的编程技巧称为递归&#xff08; recursion&#xff09;。   一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法&#xff0c;它通常把一个大型复杂的问题层层转化为一个与原问题类似的规模较小的问题来求解&#xff0c;递归策略仅仅需少量…

ThoughtWorks技术雷达专区

作为一家服务于全球不同类型的IT专业服务公司&#xff0c;ThoughtWorks从未停止过对卓越技术的追求&#xff0c;为此&#xff0c;ThoughtWorks的全球技术委员会(TAB)会定期讨论技术战略&#xff0c;并将其绘制成一份能够体现技术趋势的雷达图&#xff0c;它相当于当下技术领域的…

腾讯视频VIP周卡深圳地区免费领!附非深圳免费领腾讯视频会员攻略

深圳今天开始&#xff0c;暂停了所有公共交通&#xff0c;小区开始封闭管理&#xff0c;大家都居家办公&#xff0c;腾讯官方今天给深圳地区用户免费发放7天腾讯视频VIP会员&#xff0c;居家期间&#xff0c;可以追剧了&#xff01;这是腾讯官方给深圳地区的抗疫福利&#xff0…

SQL Server 权限的分类

SQL Server 的权限可以分三类 第一类 server 层面上的&#xff1a; select * from sys.fn_builtin_permissions(default) where class_desc like server; 第二类 database 层面&#xff1a; select * from sys.fn_builtin_permissions(default)    where class_desc like d…

Redis集群监控RedisClusterManager

Redis集群监控RedisClusterManagerRedisClusterManager监控Redis集群1234环境要求&#xff1a;Java8jdk配置这里略过RedisClusterManager 下载地址&#xff1a;https://git.oschina.net/yanfanVIP/RedisClusterManager/releases1234567891011121314151617181920212223242526272…