领域驱动设计-1-概述

领域驱动设计

随着计算机的普及,软件的发展也从一开始的单一计算,变为大规模,多功能的集合.这也就对软件开发的效率,规模,可维护性提出了更多的要求,针对于软件不同的发展阶段,它的开发模式也是一个逐渐演变的过程:

瀑布开发模式 -> 敏捷开发模式 -> 领域驱动设计 -> 微服务 -> ...

**瀑布开发模式**:强调软件规范,使用工程管理思想来管理软件.通过严格的流程分工:需求分析->设计->开发->测试->运维.职能的明确可以提高节点内部的执行效率,针对小项目,这种方式从需求到运维,可以发挥很好的作用,部门之间协调周期也是可控的.但是对于复杂项目,由于软件并不像工程那样固定明确,设计无法面面俱到,很多设计到了开发阶段才能发现,返工现象变多,问题的反馈周期会变长,再加上市场等外部环境的变化,软件失败的风险也会更大.

**敏捷开发模式**:敏捷开发模式的出现就是为了解决设计固化的问题,它讲究以源代码为设计文档,通过声明性约束来保证代码的规范性,上来就是,什么都不说就是干.然后通过不断重构,获取一个整体设计.这种开发模式打破了设计和开发的界限,将开发视为软件的核心,它很适合需求变化快,迭代快的行业,比如互联网.

**领域驱动设计**:因为敏捷开发模式这种以点带面的特点,使得很难形成一个整体设计,因为大家都专注于自己的模块,整体性就很差.通过将领域专家和开发人员结合,共同协商出一个统一模型,然后再细化开发,然后通过约束和重构,不断深化模型,实现设计和开发的统一,就是领域驱动设计的内容,它的核心是领域模型,领域即你的问题域,也就是软件要解决问题的范围.模型就是你现实问题的抽象,就像你说地球感觉很陌生,但是说地球仪,就能从整体上把握地球的特点.当然任何事物都有两面性,领域驱动设计从提出到现在,并没有太多的实践示例,因为它的逼格有点高.首先领域专家就很难找,其次领域模型很难获取,不同行业模型不同,像电信等复杂的领域,模型获取更加困难.

**微服务**:小而自制的服务模型.它也是解决软件的复杂性问题方案.核心就是将软件根据领域进行拆分,一般复杂都是因为规模大,行业信息量大,规则交错,但是你将软件根据领域进行拆分为多个服务,将规模变小,它的信息量和规则的复杂度也会下降,通过不断的分化,拆解自己问题域,实现问题的简化.同时通过服务调用,组合的方式,实现原来的单体应用功能.任何设计都不是一蹴而成的,了解背后的发展阶段,可以更好的理解它的理念.

*领域驱动设计*:
    核心理论包括两方面:通用语言和领域模型管理.    
    其中领域模型管理又包括:模型驱动设计,上下文边界,核心领域


领域驱动设计

参考资料:

  超越DDD的创新思想:开发即设计思想 https://www.jianshu.com/p/c81ae702ee21
  领域驱动设计到底难在哪? https://www.jianshu.com/p/ab80cb9f307c?from=groupmessage

原文地址:https://www.cnblogs.com/chengmuyu/p/10925640.html

时间: 2024-11-13 09:30:23

领域驱动设计-1-概述的相关文章

领域驱动设计概述

从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品.所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的. 再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备.但是最近由于各种原因,导致服务经常出故障.所以,我们希望通过各种措施提高服务的质量和稳定性.其中的一个措施就是希望能做一个灰度发布的平台,这个

初探领域驱动设计

概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的,也是我本人之前有一些疑问的地方就是Repository.我之前觉得IRepository和三层里面的IDAL很像,为什么要整出这么个东西来:有人说用EF的话就不需要Repository了:IRepository是鸡肋等等. 我觉得这些问题都很好,我自己也觉得有问题,带着这些问题我们就来看一看Repo

领域驱动设计(Domain Driven Design)参考架构详解

转自:http://blog.csdn.net/bluishglc/article/details/6681253 领域驱动设计(Domain Driven Design)参考架构详解 摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrastructure.本文会对架构中一些重要组件和问题进行讨论,给出一些分析结论.本文原文连接:http://blog.

【DDD】领域驱动设计实践 —— 架构风格及架构实例

概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场景和需求来制定. 核心的指导思路归纳为: 关注点放在domain上,将业务领域限定在同一上下文中 降低上下文之间的依赖,通过‘开发主机服务’(REST服务是其中的一种).‘消息模式’.‘事件驱动’等架构风格实现 遵循分层架构模式 架构风格 针对DDD的架构设计,<实现领域驱动设计>提到了几种架构风

初探领域驱动设计(1)为复杂业务而生

概述 领域驱动设计也就是3D(Domain-Driven Design)已经有了10年的历史,我相信很多人或多或都都听说过这个名词,但是有多少人真正懂得如何去运用它,或者把它运用好呢?于是有人说,DDD和TDD这些玩意是一些形而上的东西,只是一茶余饭后的谈资,又或是放到简历上提升逼格而已.前面这句话我写完之后犹豫了,犹豫要不要把它删掉,因为它让我看起来像个喷子,我确实感到不解,为什么别人10年前创造总结出来的东西,我们在10年之后对它的理解还处于这么低的一个层次.开篇就说远了,我也是最近才开始认

[转载]领域驱动设计(Domain Driven Design)参考架构详解

摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrastructure.本文会对架构中一些重要组件和问题进行讨论,给出一些分析结论.本文原文连接:http://blog.csdn.net/bluishglc/article/details/6681253 转载请注明出处! 目录 1.      架构概述2.      架构详解        2.1.  

初探领域驱动设计(2)Repository在DDD中的应用

概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的,也是我本人之前有一些疑问的地方就是Repository.我之前觉得IRepository和三层里面的IDAL很像,为什么要整出这么个东西来:有人说用EF的话就不需要Repository了:IRepository是鸡肋等等. 我觉得这些问题都很好,我自己也觉得有问题,带着这些问题我们就来看一看Repo

领域驱动设计-分享

概述 领域驱动不是纯粹的技术问题,领域建模(建立数据表只是一部分)是领域专家(客户/产品团队)和开发人员沟通努力.抽象的的结果. 领域建模的目的是,经过有效的沟通.详细分析. 良好设计可以更好的适应未来的变化. 领域驱动设计的核心是建立正确的领域模型. 面向人员 后端开发人员.产品人员 一.背景 领域驱动设计是什么? 领域驱动设计的核心是建立正确的领域模型,正确的反应业务,并适应变化. 为什么建立一个领域模型是重要的 (1). 领域模型是具有边界的领域抽象,反映了领域业务需求的本质,边界指只领域

如何运用领域驱动设计 - 聚合

原文:如何运用领域驱动设计 - 聚合 目录 概述 何为聚合 演化案例 发现实体关系 开始划分边界吧 选取一个聚合根 通过聚合根保护你的内部对象 聚合的一些特性 通过ID引用 聚合真的是不变的吗 小的聚合 一致性 总结 概述 在前几篇的博文中,我们已经学习到了如何运用实体和值对象.随着我们所在领域的不断深入,领域模型变得逐渐清晰,我们已经建立了足够丰富的实体和值对象.但随着实体和值对象的数量逐渐增多,它们之间的关系也显得越来越复杂:实体A与实体B存在一对一的关系,实体B又与实体C存在一对多的关系.

如何运用领域驱动设计 - 值对象

原文:如何运用领域驱动设计 - 值对象 目录 概述 何为值对象 值对象是基于上下文的 当前上下文的值对象可能是另一个上下文的实体 怎么运用值对象 尽量避免使用基元类型 值对象是内聚并且可以具有行为 来看一个例子 值对象的持久化 总结 概述 作为领域驱动设计战术模式中最为核心的一个部分-值对象.一直是被大多数愿意尝试或者正在使用DDD的开发者提及最多的概念之一.但是在学习过程中,大家会因为受到传统开发模式的影响,往往很难去运用值对象这一概念,以及在对值对象进行持久化时感到非常的迷惑.本篇文章会从值