可以落地的DDD到底长什么样?】的更多相关文章

领域驱动设计的概念 ​ 大家都知道软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前通常需要进行大量的业务知识梳理,然后才能到软件设计的层面,最后才是开发.而在业务知识梳理的过程中,必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计(DDD,Domain-Driven Design)的基本概念 . 为什么需要 DDD ​ 在业务初期,功能大都非常简单,普通的 CRUD 就基本能满足要求,此时系统是清晰的.但随着产品的不断迭代和演…
摘要 前面两篇介绍了DDD的目标管理.DDD的工程结构调整.这篇讨论微服务的划分.微服务是目前后端比较流行的架构体系了,那么如何做好一个微服务的划分?一个微服务的粒度应该是多大呢?这篇主要介绍如何结合DDD进行领域划分. 工程结构代码 上篇介绍了可落地的DDD的(2)-为什么说MVC工程架构已经过时 很多朋友留言说,有没有sample code,要不然太湿了,不是很明白.这里写了个sample. 就以一个博客网站为例 page1:博客列表页: 展示所有用户发表的博客 page2: 个人介绍页:有…
知乎链接:https://zhuanlan.zhihu.com/p/51679405 来自 http://TurnOff.us 的漫画 “InSide The Linux Kernel” 本文转载自:漫画赏析:Linux 内核到底长啥样 这幅漫画是以一个房子的侧方刨面图来绘画的.使用这样的一个房子来代表 Linux 内核. 地基 作为一个房子,最重要的莫过于其地基,在这个图片里,我们也从最下面的地基开始看起: 地基 地基(底层)由一排排的文件柜组成,井然有序,文件柜里放置着“文件”——电脑中的文…
前言 一提到.net的类型,首当其冲的就是“引用类型”.“值类型”:我们在面试中,也会经常被问“来说说值类型和引用类型....”,这时候第一反应就是:“哎呀,这还不简单,值类型是传递的值的copy,值对象存储在栈中:引用类型传的是引用,对该引用对象的修改都会影响到原本的内容,引用对象存储在堆中”,额...往往第一时间想到此处,似乎就“词穷”了,不知道你有木有这样的感觉.哈哈哈哈!但是真理往往没那么简单 - -! 引用类型(Reference Type) 引用类型和值类型其实有一个很大的.并且很明…
摘要 在前面一篇介绍了如何通过DDD的思想,来调整单体服务内的工程结构,为微服务的拆分做准备.同时介绍了我们在进行微服务拆分的时候踩过的一些坑. 这篇介绍下我们最终的方案,不一定对,欢迎留言讨论. 微服务划分 问题分析 上篇介绍过我们一开始的服务划分标准 一个领域一个服务的规则去拆分, 同时为了保证领域的纯洁性,我们区分了领域服务,和前台服务.领域服务就是领域逻辑,不直接对前端暴露.前台服务组装各个领域服务,暴露给前端. 同时为了保持扩展,我们预留了一个微服务作为服务孵化器.对于领域不清晰的(比…
背景 几年前我总结过DDD战术设计的一些落地经验可落地的DDD(5)-战术设计,和一次关于聚合根的激烈讨论最近两年有些新的落地体验,回过头来发现,当初对这些概念的理解还是没有深入,这篇文章重新阐述下. 之前理解不到位的点有 战术设计的各个模块是的协作关系 哪些是问题空间问题,哪些是方案空间问题边界没有划分清楚. 实体和聚合根的区别理解不不深刻,实体和聚合根建模的方法不对. 以上问题将会在下文解释清楚. 战术设计拆解 DDD的战术设计即设计某个子域的领域模型以及代码落地.领域事件.领域对象.聚合根…
摘要 本篇是DDD的战术篇,也就是关于领域事件.领域对象.聚合根.实体.值对象的讨论.也是DDD系列的完结篇. 这一部分在我们团队争论最多的,也有很多月经贴,比如对资源库的操作应该放在领域服务还是领域对象中. 聚合根应不应该暴露给外部,还是要转成DTO.这些问题我们讨论了大半年,最后大家基本达成了共识,在当前的业务规模下, 这些问题没那么重要,可东可西.不会对代码的质量有啥大的影响.关于DDD的实践,与团队的水平.业务复杂度息息相关.我们的经验并不一定就适用你们团队.我将战术篇的这么多的内容放在…
上一篇mysql面试的文章之后收到不少朋友的意见,希望深入讲讲复制.日志的格式这些,今天,我们就来深挖一下mysql的复制机制到底有哪一些,以及binlog和relay-log的结构到底是什么样子的. binlog作用 binlog的主要作用是记录数据库中表的更改,它只记录改变数据的sql,不改变数据的sql不会写入,比如select语句一般不会被记录,因为他们不会对数据产生任何改动. 用一个实际的场景看下binlog产生的过程,准备sql: create table test(text var…
摘要 mvc是一种软件设计模式,最早由Trygve Reenskaug在1978年提出,他有效的解决了表示层,控制器层,逻辑层的代码混合在一起的问题,很好的做到了职责分离.但是在实际的编码实践过程中,你会发现这个模式随着业务的扩展,变的逻辑混乱,代码重合度很高.这里提出借鉴DDD思想的一种新的工程结构 mvc的问题 通常一个前后端分离的系统,后端工程系统结构图通常下面这样 1. 四层 controller/service/manager/mapper 2. 不可以同级调用 3. 上级可以知晓下级…
目录 前言 一.从六边形架构谈起 二.依赖倒置 三.DDD 代码分层 3.1 用户接口层 3.2 应用层 3.2 1 Response vs Exception 3.2.2 CQE vs DTO 3.2.3 Anti-Corruption Layer防腐层 3.3 领域层 3.4 基础设施层 参考资料 前言 网上那么多DDD的文章,但代码工程却没有一个比较好的例子,本文将手把手跟你一起写DDD代码,学习DDD思想与代码相结合带来的好处. 一.从六边形架构谈起 六边形架构也称端口与适配器.对于每种…
下面给大家分享一个[超全2020Linux学习教程],点击链接免费领取哦~ https://www.magedu.com/?p=84301&preview=true…
目录 一.简介 二.结构 地基 地面层 进程表 http进程 21进程 22进程 到文件系统 定时任务 管道 411进程 跃层 一.简介 今天,我来为大家解读一幅来自 TurnOff.us 的漫画 "InSide The Linux Kernel" . TurnOff.us 是一个极客漫画网站,作者Daniel Stori 画了一些非常有趣的关于编程语言.Web.云计算.Linux 相关的漫画.今天解读的便是其中的一篇. 在开始,我们先来看看这幅漫画的全貌!这幅漫画是以一个房子的侧方刨…
一个执着于技术的公众号 原文链接:http://985.so/hRL6 往期精彩 ◆  干货 | 给小白的Nginx10分钟入门指南 ◆  什么是集群?看完这篇你就知道啦! ◆  干货 | Linux平台搭建网关服务器 ◆  干货 | 理解正向代理与反向代理的区别 ◆  硬核科普服务器硬盘组成与基本原理 ◆  一文带你速懂虚拟化KVM和XEN ◆  实战 | Hadoo大数据集群搭建 如有收获,点个在看,诚挚感谢…
从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品.所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的. 再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备.但是最近由于各种原因,导致服务经常出故障.所以,我们希望通过各种措施提高服务的质量和稳定性.其中的一个措施就是希望能做一个灰度发布的平台,这个…
阅读目录: 1.开篇介绍 2.简单了解缘由(本文的前期事宜) 3.DomainModel扩展性(运用设计模式设计模型变化点) 3.1.模型扩展性 3.2.设计模式的使用(苦心专研的设计模式.设计思想可以随意使用了) 3.3.部分类的使用(封装内部对象) 3.4.高强度的OO设计(面向特定领域的高度抽象设计形成特定领域框架) 4.DomainModel业务逻辑规则配置(将扩展点分离后使用适当的配置将规则IOC进去) 5.DDD简单总结(DDD是什么?它是“战术”) 1]开篇介绍 这篇文章不会太长,…
原文地址:http://www.cnblogs.com/netfocus/p/5548025.html 从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品.所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的. 再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备.但是最近由于各种原因,导致服务经常出故…
DDD领域驱动设计的理解 从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品.所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的. 再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备.但是最近由于各种原因,导致服务经常出故障.所以,我们希望通过各种措施提高服务的质量和稳定性.其中的一个措施就是希望能…
阅读目录: 1.开篇介绍 2.简单了解缘由(本文的前期事宜) 3.DomainModel扩展性(运用设计模式设计模型变化点) 3.1.模型扩展性 3.2.设计模式的使用(苦心专研的设计模式.设计思想可以随意使用了) 3.3.部分类的使用(封装内部对象) 3.4.高强度的OO设计(面向特定领域的高度抽象设计形成特定领域框架) 4.DomainModel业务逻辑规则配置(将扩展点分离后使用适当的配置将规则IOC进去) 5.DDD简单总结(DDD是什么?它是“战术”) 1]开篇介绍 这篇文章不会太长,…
从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品.所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的. 再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备.但是最近由于各种原因,导致服务经常出故障.所以,我们希望通过各种措施提高服务的质量和稳定性.其中的一个措施就是希望能做一个灰度发布的平台,这个…
何为DDD DDD不是架构设计方法,不能把每个设计细节具象化,DDD是一套体系,决定了其开放性,体系中可以用任何一种方法来解决这些问题,但是如果一些关键问题没有具体方案落地,可能让团队无所适从. 有的小伙伴觉得DDD太虚了,具体在我们进行业务代码编写落地中DDD主要解决什么问题呢? 总结起来说主要目的有两点: 建立业务术语,统一PM/RD/QA需求沟通术语. 梳理业务边界,将业务领域逻辑内聚. 搞定DDD要解决的问题 如何进行领域建模 如何识别Bounded Context 如何在战术层面寻找对…
从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品.所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的. 再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备.但是最近由于各种原因,导致服务经常出故障.所以,我们希望通过各种措施提高服务的质量和稳定性.其中的一个措施就是希望能做一个灰度发布的平台,这个…
DDD不是架构设计方法 一文读懂DDD 2019-05-28 19:18 by 春哥大魔王, 413 阅读, 3 评论, 收藏, 编辑 何为DDD DDD不是架构设计方法,不能把每个设计细节具象化,DDD是一套体系,决定了其开放性,体系中可以用任何一种方法来解决这些问题,但是如果一些关键问题没有具体方案落地,可能让团队无所适从. 有的小伙伴觉得DDD太虚了,具体在我们进行业务代码编写落地中DDD主要解决什么问题呢? 总结起来说主要目的有两点: 建立业务术语,统一PM/RD/QA需求沟通术语. 梳…
摘要 在之前的文章DDD-CQRS能解什么问题中,阐述了什么是CQRS.但是并没有业务需求可以应用CQRS.最近需要处理一个文本增量更新的业务,经过需求分析后,尝试使用CQRS来解这个问题 问题分析 一个文本页面编辑,对象很大,之前是全量保存.涉及到的网络传输对象比较大,经常超时OOM,所以交互改成,只保存修改的部分,也就是增量更新. 之前业务中没法使用CQRS,在于使用CQRS后,数据的维护变得异常麻烦.比如我对一个表单进行了反复修改,生成了N份历史修改数据,获取最新数据时需要对这些历史数据进…
目录 学好了DDD,你能做什么? 领域驱动设计:微服务设计为什么要选择DDD? 领域.子域.核心域.通用域和支撑域:傻傻分不清? 限界上下文:定义领域边界的利器 实体和值对象:从领域模型的基础单元看系统设计 聚合和聚合根:怎样设计聚合? 领域事件:解耦微服务的关键 DDD分层架构:有效降低层与层之间的依赖 微服务架构模型:几种常见模型的对比和分析 中台:数字转型后到底应该共享什么? DDD.中台和微服务:它们是如何协作的? 学好了DDD,你能做什么? 我认为,要想应用 DDD,首要任务就是要吃透…
 如果我看得更远,那是因为我站在巨人的肩膀上.(If I have seen further it is by standing on ye shoulder of Giants.)                                                                                                                                                              …
写在转发之前: 几个月以前,在北大机房和燕园大厦直接拉了一根光钎.两端彼此为校园内公网IP.为了方便连接彼此机房,我做个一个VPN server在燕园的边界,北大机房使用client拨回.两个物理机房分别分配了两个不同的网段,利用三层路由将两端通过VPN隧道进行互联. 后来找SDN相关的工作,面试过程中被问到了VXLAN.最近在了解aliyun VPC产品.试着思考了一下内部实现原理. 跨地域三层VPC互联与北大燕园的模型,基本差不多.但是,跨地域二层互联呢? 应该怎么办. 于是带着这个疑问,了…
可落地的DDD(5)-战术设计   摘要 本篇是DDD的战术篇,也就是关于领域事件.领域对象.聚合根.实体.值对象的讨论.也是DDD系列的完结篇.这一部分在我们团队争论最多的,也有很多月经贴,比如对资源库的操作应该放在领域服务还是领域对象中.聚合根应不应该暴露给外部,还是要转成DTO.这些问题我们讨论了大半年,最后大家基本达成了共识,在当前的业务规模下,这些问题没那么重要,可东可西.不会对代码的质量有啥大的影响.关于DDD的实践,与团队的水平.业务复杂度息息相关.我们的经验并不一定就适用你们团队…
记得之前在规划和设计微服务架构的时候,张队长给了我一个至今依然记忆深刻的提示:『你的设计蓝图里为什么没有看到DDD的影子呢?』 随着对充血模型的领域认知的加深,我越加感觉到DDD的重要性.但是DDD内容繁多,是不是要深入去了解呢,我觉得不必入坑太深,个人浅见,它最核心的一点就是针对贫血模型的不足而设计,把原先传统的贫血模型里的业务逻辑层拎出来,融入到Domain层,这样面对复杂业务的规模化变更,我们只需要专注于Domain即可. 回到主题,我们要了解的是微服务和DDD到底有什么关系呢? 因为在互…
网易新闻App架构重构实践:DDD正走向流行 https://mp.weixin.qq.com/s/FdwrT_xn3CQqpWoRVBttvQ 小智 InfoQ 2020-05-14 作者 | 小智嘉宾 | 李云鹏当前,大多数移动开发团队选择以 MVP 作为业务层的核心架构模型,在此基础上实现了客户端的组件化.插件化.容器化等,但作为业务层核心的 MVP 架构模式至今仍有诸多弊端.网易新闻 App 在领域驱动设计(DDD)思想指导下,对其架构做了整体重构,得到了不错的重构质量与项目收益.移动端…
前言 对于单元测试一开始我是拒绝的.单元测试是一个什么东东,因为我喜欢做iOS开发是因为喜欢写APP的啊,一切和这一目标不相干的东西我没兴趣啊,所以从事iOS开发几年都没去深入学习过单元测试(主要是之前单位没这要求).看到我的优点木有:目标性很强,嗯,记住我的优点,请忽略我拒绝学习边缘知识的缺点.但是最近被总监要求负责单元测试的探索和落地,我义(勉)不(为)容(其)辞(难)地扛起了夺取桥头堡的重任.随着对这个姑娘的不断的了解和接触,我发现自己逐渐爱上了她,她有着独立知性的气质,有着完美丰满的身材…