当DDD遇上DSL.pptx

上传人(卖家):无敌的果实 文档编号:2526954 上传时间:2022-04-29 格式:PPTX 页数:35 大小:13.76MB
下载 相关 举报
当DDD遇上DSL.pptx_第1页
第1页 / 共35页
当DDD遇上DSL.pptx_第2页
第2页 / 共35页
当DDD遇上DSL.pptx_第3页
第3页 / 共35页
当DDD遇上DSL.pptx_第4页
第4页 / 共35页
当DDD遇上DSL.pptx_第5页
第5页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、当 DD1. 简介 DSL与 DSL 融合2.3.DDD三个典型案例DSL 简介命令式 vs 声明式命令式How侧重点1. 程序员习惯描述 How ,喜欢控制事情的发展2. 计算机按照命令执 step-by-step ,并不对结果负责What 声明式1. 程序员声明想要的 What,计算机设计 step-by-step2. 归纳和提取完备的 What 并不是件轻松的作命令式编程声明式编程DSL 是什么(Domain-Specific Language):领域专语 或 领域特定语 DSL DSL 是针对某特定领域,具有受限表达性的种计算机程序设计语 DSL 并不会新鲜的技术:SQL,HTML,C

2、SS,正则表达式 DSL 是最常的声明式编程形式DSL 的价值1. 相命令/查询 API,DSL 更容易理解2. DSL 的受限表达性使得开发员难于犯错的错误很容易被发现和修改 提升开发员的产3. DSL1. 领域专家与开发员结对,参与构建 DSL2. 领域专家可以评审 DSL ,并指出问题所在3. 即使不实现 DSL,也可以把它当作沟通的平台 增进与领域专家的沟通DSL 的分类宿主语可选【宿主语编译器】解析内部 DSLDSL脚本语法树定义语成 外部 DSL标代码解析语义模型【实现解析器】DSL脚本DDD 与 DSL 的融合向领域DDD 和 DSL 字含义都是领域DSL 丰富了 UL语义模型通

3、常是领域模型的集ULDomain ModelSemantics ModelDomain DSLDDDDSL模型组装的式 内部 DSL 外部 DSL命令/查询 API1. 单元测试是内部 DSL 的产区1. 外部 DSL不受限于宿主语的语法,对户很友好,尤其是对于不懂宿主语语法的户1. 场景较简单2. 从 API 的度看,连贯接就是内部 DSL 的同义词2. 使 DSL 得不到任何好处的场景3. 使 DSL 获得的好处不以抵消2. 创造外部 DSL 所需的背景知识要内部 DSL 感觉像个整句,不它的成本的场景3.远远少于通语的是个关命令的序列特定领域 业务场景具有的特征1. 对象交互多在次业务中

4、消息交互较多的领域1. 电信领域的控制2. 业务流程2. 络领域的管理3. 事务操作分层架构关键点1. 通过 Transaction DSL 来表达Transaction 层2. 当应层收到消息时,根据关键字找到业务实例,然后投递消息给相应的事务来处理,本质上是事务调度的功能,我们将应层重命名为调度层3. 事务模型是横切模型的种实例化三个典型案例内部 DSL 案gomonkey 介绍gomonkey是作者研的款 Go 语的打桩框架,标是让户在单元测试中低成本的完成打桩,从将精聚焦于业务功能的开发gomonkey接友好,功能强,前已被很多项使,户遍及世界多个国家领域模型1:nReflectDou

5、bleOutputCellTargetRepoTarget1:nConstDouble VariableDoubleDoubleFactoryFuncTarget PtrTaEntryAddressJmpDirectiveBinarytype Params interfacetype OutputCell struct Values Params命令/查询 APITimes intfunc ApplyFunc(target, double interface) *Patchesfunc ApplyMethod(target reflect.Type, methodName string, do

6、uble interface) *Patchesfunc ApplyGlobalVar(target, double interface) *Patchesfunc ApplyFuncVar(target, double interface) *Patchesfunc ApplyFuncSeq(target interface, outputs OutputCell) *Patchesfunc ApplyMethodSeq(target reflect.Type, methodName string, outputs OutputCell) *Patchesfunc ApplyFuncVarS

7、eq(target interface, outputs OutputCell) *Patchesfunc NewPatches() *Patchesfunc (this *Patches) ApplyFunc(target, double interface) *Patchesfunc (this *Patches) Reset()ApplyFunc 使举例特点1. 参可校验2. 出参可修改3. 返回值固定ApplyFuncSeq 使举例 特点1. 参法校验2. 出参法修改3. 返回值可变化gomonkey 2.0:内部 DSL 关键字1. 核关键字:stubs/expects/with/w

8、ill/then/end2. 扩展关键字:once/eq/return/repeat/out 关键点1. 使表达式成器来隔离两种格的 API2. 声明 Target 和 Double3. 通过 Factory 创建 Matcher、Constraint 和 Behavior4. DSL 作为外壳显著增强了领域模型的能语义模型TargetEndExpectsWillThenFunc Method FuncVar GlobalVarMatcherExactlyEqAnyReturn Repeat外部 DSL流程契约 DSL描述业务流程,构建活档 容易上,BA 在 5分钟内就可以学会 复 plant

9、UML 语法,动成时序图 通过 group 关键字来实现阶语义 上下标记包括基本标记和扩展标记流程契约 DSL当户选择 SUT(System Under Test)为 S1, S2 时,模版动成实例语法树endumlstartumltitlesessiongroupcontext tagsproceduresession info note infosourcearrow target msg name语义模型1:n1:nExecUnitExecQueueSessionSessionQueueSessionInfo GroupInfo NoteInfoInGroup Action ParamS

10、endMsgReceiveMsg横切 DS个状态机问题1. 嵌套状态2. 临时状态从户视看事务模型In computer science, transaction processing isinformation processing thatis divided intoindividual, indivisible operations, calledtransactions. Each transaction must succeed orfail as a complete unit; it cannot remain in anintermediate state.语义模型NotAl

11、lOf/AnyOfLoop/ConcurrentRepeat/Retr y/Wait1:n1:n1Fragment1:21:nProcedureActionOptional分层架构 Idle1.Scheduler2.ReqFailed 1.trans-dslTransactionDomainUnstable2. Succ1.2.Active代码和序列图对应结字含义丰富DomainDomain专语语义模型统语领域模型集向领域分类内部外部组装演进领域模型分层架构DSLDDD特定领域横切模型扩展阅读年 DDD China 峰会上的演讲胶:DDD分层架构的三种模式 2017 2019 年 ArchSummit 峰会深圳站的演讲胶:当DDD遇上DCI Go 语打桩框架 gomonkey 链接:https:/ Go 语事务模型框架 trans-dsl 链接:https:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 常用办公文档
版权提示 | 免责声明

1,本文(当DDD遇上DSL.pptx)为本站会员(无敌的果实)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|