书签 分享 收藏 举报 版权申诉 / 102
上传文档赚钱

类型DDD领域驱动设计课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:2477270
  • 上传时间:2022-04-23
  • 格式:PPTX
  • 页数:102
  • 大小:2.27MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《DDD领域驱动设计课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    DDD 领域 驱动 设计 课件
    资源描述:

    1、DDD领域驱动设计演讲人2025-11-1101PART ONE通 用 语 言 U b i q u i t o u s L a n g u a g e通用语言Ubiquitous Language概念通过团队交流、达成共识的、能够准确传递业务规则的、简单:语言通用语言Ubiquitous Language特点通用,简洁、“无歧义”价值解决了交流障碍问题,使领域专家和开发人员协同合作同名的业务词汇与实际业务关系不清同名的业务词汇与不同的业务词汇关联同名的业务词汇之间的关系不清楚02PART ONE领域模型Domain Model领域模型Domain Model概念 把通用语言表达成软件模型特点

    2、综合了系统分析和设计语言、模型、代码三者紧密绑定可以通过UML类图来展示03PART ONE领 域 D o m a i n领域Domain领域与具体开发技术无关,就是你的软件系统要解决的实际问题相关的所有东西的集合本质1 问题空间:业务所面临的问题和挑战3解决方案空间:如何实现软件以解决这些业务挑战 204PART ONE子 域 S u b D o m a i n包含支撑子域 0201核心域Core Domain业务系统核心价值所在03通用子域 例子电商网站核心域:销售子域通用子域:日志子域支撑子域:除了销售子域之外的子域,如物流子域05PART ONE限 界 上 下 文 B o u n d

    3、e d C o n t e x t限界上下文Bounded Context例子梳理关系概念本质与技术组件保持一致(保持一致的模型认识)如何划分020304050601限界上下文Bounded Context概念上下文限界限界一个界限,某个具体的范围领域模型的边界概念上下文语境限界上下文Bounded Context本质保证模型概念的清晰和无歧义,避免具有多重含义和职责的模型本质保证模型概念的清晰和无歧义,避免具有多重含义和职责的模型例子u商品限界上下文Bounded Context例子商品在采购上下文中 - 补货商品01在售后上下文中 - 售后商品02限界上下文Bounded Context如

    4、何划分语言二义性变化一致性业务相关性概念相关性如何划分01语言二义性变化一致性02业务相关性03概念相关性04限界上下文Bounded Context与技术组件保持一致(保持一致的模型认识)一个团队01一个IDEA工程02一个部署单元03与技术组件保持一致(保持一致的模型认识)一个团队01一个IDEA工程02一个部署单元03限界上下文Bounded Context梳理关系01上下文映射图Context Map02上下文依赖梳理关系上下文映射图Context Map 描述不同Context下模型的联系点上下文依赖06PART ONE应 用 服 务 A p p l i c a t i o n S

    5、e r v i c e应用服务Application Service表述应用行为 eg.购物车结算=>应用行为隐藏领域层的复杂性及其内部实现07PART ONE领 域 服 务 D o m a i n S e r v i c e领域服务Domain Service表述领域行为eg.金额计算、支付、生成订单=>领域行为08PART ONE聚 合 A g g r e g a t e来源UML类图概念,整体与部分的关系eg.车和轮胎=>可以独立存在DDD中的概念领域对象的显示分组封装业务保证聚合内领域对象的数据一致性关键领域不变性 领域内需要关注的业务规则领域对象间的关联关系 基于业

    6、务用例而非现实生活建立必要关联减少不必要的关联将双向关联转换为单项关联难点一致性的维护聚合内实现事务一致性聚合外实现最终一致性设计一个持续性的活动无法一口吃个胖子持续改进聚合的设计09PART ONE实体Entity实体Entity概念特征实体Entity概念实体=唯一身份标识 + 可变性【状态(属性) + 行为(方法或领域事件或领域服务)】实体Entity特征可变性唯一标识唯一标识委派标识为了迎合ORM而创建,和领域实体标识无关系领域标识基于领域实体概念分析确定的唯一身份标识eg.支付宝交易流水号唯一标识生成时机即时生成01延迟生成02可变性实体的行为 eg.订单行为:支付、发货、关闭实体的

    7、状态 eg.订单状态:未支付、正常、已发货、关闭10PART ONE值对象Value-Object概念u值对象=值+对象 => 将一个值用对象的方式进行表述,表达一个具体的固定不变的概念值对象Value-Object值对象Value-Object值的特征表示一个具体的概念1通过值的属性对其识别2属性判等3固定不变4值对象Value-Object案例购物网站的客户收货地址信息作用符合通用语言,更简单明了的表达简单业务概念简化设计,减少不必要的数据库表设计 值对象不会孤立存在,可作为所属实体的数据列多个值对象序可以列化到单个列值对象Value-Object建模结合通用语言的表述检查其是否具有

    8、值得的含义和特征11PART ONE仓 库 R e p o s i t o r y一个聚合的集合u存储集合u删除集合特性仓库Repository要点通过聚合根来持久化和检索领域对象01隐藏聚合持久化和检索的底层技术实现02定义数据模型与领域模型的边界03映射ORM仓储使用ORM持久化领域对象的状态仓库Repository定义领域模型与持久化存储之间的明确契约实现泛型仓储 简化代码明确意图事务管理 UnitOfWork (UOW)12PART ONE领域事件Domain Event领域事件Domain Event基本概念01建模领域事件02最终一致性03领域事件Domain Event基本概念捕

    9、获领域中发生的具有业务价值的一些事情基本概念捕获领域中发生的具有业务价值的一些事情eg."订单支付成功"=>一个领域事件领域事件Domain Event建模领域事件核心要点实现建模领域事件核心封装不变,应对万变建模领域事件要点事件处理事件源实现发布-订阅模式事件总线 (EventBus)领域事件Domain Event最终一致性案例实现最终一致性案例订单系统发布"订单成功支付"事件01库存系统订阅并处理库存扣减逻辑02通知系统订阅并处理拣货通知03实现事件存储 事件发布可用于重新发布通过消息中间件去分发事件事件溯源事件源 用于恢复到某个状态13PA

    10、RT ONE工 厂 F a c t o r y工厂Factory目标实现好处工厂Factory目标01隐藏对象的复杂创建逻辑02表达对象实例化的意图工厂Factory实现简单工厂01工厂方法02抽象工厂03反射工厂04工厂Factory好处1将领域对象的使用和创建分离2隐藏创建复杂领域对象的业务逻辑3根据调用者的需要创建相应的领域对象4封装聚合的内部状态14PART ONE模 块 M o d u l e模块Module抽象对领域模型进行分解的产物,相对独立的功能单元01由一系列高内聚的领域对象组成02设计01 根 据 领 域 来 组 织 模块02模块命名规范基于通用语言03模块内高内聚模块间低

    11、耦合高内聚低耦合模块Module实现01通过命名空间进行分离02使用单独项目进行分离15PART ONE架构风格Achitecture架构风格Achitecture面向服务SOA事件驱动Event Driven分层架构Layered Architecture六边形架构(端口和适配器)Hexagonal Architecture命令查询职责分离CQRSRESTful020304050601架构风格Achitecture网格架构风格Achitecture分层架构Layered ArchitectureUI层01领域层03应用层02基础设施层04UI层为外部用户访问底层系统提供交互界面和数据表示 e

    12、.g 接受和校验用户输入、输出JSON/XML的数据Facade层 分离UI和应用层,将应用层数据mapping成UI层适用的数据分层架构Layered Architecture应用层定义系统业务功能,编排领域层中的领域对象实现功能领域层概念 描述正在解决的问题及对应的解决方案包含 领域模型映射的代码分层架构Layered Architecture基础设施层为领域层提供技术支撑 e.g 持久化、序列化、消息通知架构风格Achitecture六边形架构(端口和适配器)Hexagonal Architecture保证内部逻辑的独立,和外部依赖解耦3端口1适配器2六边形架构(端口和适配器)Hexag

    13、onal ArchitectureApplication和Domain层通过端口(一般是API)与外部通信端口针对不同的外部资源,可以对接不同的适配器适配器 保证内部逻辑的独立,和外部依赖解耦松耦合:由于服务自治,有一定封装边界,服务调用交互是通过发布接口。这意味着应用程序不感兴趣的服务如何被实现可在异构平台间复用。可以将遗留系统包装成服务。位置透明:服务的消费者不必关系服务位于什么地方。便于测试,能并行开发,较高可靠性和良好可伸缩性成功架构风格Achitecture面 向 服 务 S OA面向服务SOA松耦合:由于服务自治,有一定封装边界,服务调用交互是通过发布接口。这意味着应用程序不感兴趣

    14、的服务如何被实现位置透明:服务的消费者不必关系服务位于什么地方。可在异构平台间复用。可以将遗留系统包装成服务。便于测试,能并行开发,较高可靠性和良好可伸缩性架构风格AchitectureRESTful松耦合(同SOA)1HTTP的成熟设计2RESTful松耦合(同SOA)HTTP的成熟设计 HATEOAS架构风格Achitecture命令查询职责分离CQRSCommand - 改变对象状态Query - 返回对象数据解决领域模型显示的复杂性命令查询职责分离CQRSCommand - 改变对象状态Query - 返回对象数据解决领域模型显示的复杂性架构风格Achitecture事件驱动Event Driven管道和过滤器长时处理过程Saga事件源事件驱动Event Driven 管 道 和 过 滤 器TODO事 件 源010302TODO长 时 处 理 过 程 S a g a架构风格Achitecture网格TODO网格一TODO16PART ONE架 构 设 计 的 终 极 大 招 还 是 B y E x p e r i e n c e 靠 经 验 吃 饭架构设计的终极大招还是By Experience 靠经验吃饭17PART ONE疑问疑问领域、子域、限界上下文为什么要有子域 子域的划分感谢聆听

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:DDD领域驱动设计课件.pptx
    链接地址:https://www.163wenku.com/p-2477270.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库