- 1、本文档共141页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
领域驱动设计1讲述
培训内容
领域驱动设计简介
领域通用语言
领域驱动设计的构造块
领域驱动设计编程实践
CQRS架构
模型驱动开发
领域驱动设计思想的发展
2002年Martin Fower在其出版《企业应用架构模式》中,归纳总结了40多种企业应用架构的设计模式。其中所提到的多种设计模式和概念,如事务脚本、活动记录和领域模型等,对业界产生了深远的影响。
2004年著名建模专家Eric Evans发表了他最具影响力的著名书籍:《Domain-Driven Design –Tackling Complexity in the Heart of Software》(中文译名:领域驱动设计—软件核心复杂性应对之道),书中提出了“领域驱动设计(简称DDD)”的概念。
2010年Greg Young在“CQRS, Task Based UIs, Event Sourcing agh!?”一文中对Betrand Meyer的CQS模式进行改造,提出CQRS模式。
此后Jimmy Nilsson的《Applying Domain-Driven Design and Patterns》、Abel Avram和Floyd Marinescu合作的《Domain-Driven Design Quickly》、Dan Haywood的《Domain-Driven Design Using Naked Objects》、以及Vaughn Vernon的《Implementing Domain-Driven Design》等书籍的出版,丰富了领域驱动设计的实践和指导。
领域驱动设计是什么
领域驱动设计事实上针对是OOAD的一个扩展和延伸,DDD基于面向对象分析与设计技术,对技术框架进行了分层规划,同时对每个类进行了策略和类型的划分。
It’s a set of proven modeling techniques especially targeted to complex applications.
It’s a set of principles and practices supporting the development process.
It’s a set of patterns that support a clean and coherent view of the domain model.
It’s a set of pragmatic strategies allowing applications to scale in size and complexity maintaining their integrity.
领域驱动设计的特性
领域驱动设计分层规划(一)
领域驱动设计分层规划
用户界面/展现层
负责向用户展现信息以及解释用户命令。展示层的组件实现用户与应用交互的功能。
一般建议用MVC,MVP或者MVVM模式来分隔这些组件为子层
应用层
很薄的一层,用来协调应用的活动,实现协调应用的“通道”,例如事务、执行单位操作、调用应用程序的任务。它不包含业务逻辑。它不保留业务对象的状态,但它保有应用任务的进度状态。
类似于Fa?ade模式,调用领域层和基础设施层来完成应用的用例。
领域层
本层包含关于领域的信息。这是业务软件的核心所在。在这里保留业务对象的状态,对业务对象和它们状态的持久化被委托给了基础设施层。
基础设施层
本层作为其他层的支撑库存在。它提供了层间的通信,实现对业务对象的持久化,包含对用户界面层的支撑库等作用。
领域驱动设计分层规划(二)
领域驱动设计是对传统N层架构模式的继承和发展
领域驱动设计分层规划(三)
领域驱动设计是对传统N层架构模式的继承和发展
《Core J2EE Patterns》
例:J2EE参考分层架构
传统J2EE或Spring+Hibernate等事务性编程模型只关心数据,这些数据对象除了简单sette/getter方法外,没有任何业务方法,被比喻成“失血模型”。
领域驱动设计分层规划(四)
分布式领域驱动设计
领域驱动设计分层规划(五)
分布式领域驱动设计与DotNET技术架构体系之间的关系映射
面向对象分析与设计技术
面向过程vs.面向对象
事务脚本模式把业务逻辑组织成单个过程,在过程中直接调用数据库,业务逻辑在服务(Service)层处理。
事务脚本模式的特点是简单容易理解,面向过程设计。对于少量逻辑的业务应用来说,事务脚本模式简单自然,性能良好,容易理解,而且一个事务的处理不会影响其他事务。
不过缺点也很明显,对于复杂的业务逻辑处理力不从心,难以保持良好的设计,事务之间的冗余代码不断增多,通过复制粘贴方式进行复用。可维护性和扩展性变差。
对类的策略和类
文档评论(0)