实现领域驱动设计

实现领域驱动设计
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (沃恩·弗农) ,
2014-03
版次: 1
ISBN: 9787121224485
定价: 99.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 584页
正文语种: 简体中文
402人买过
  •   领域驱动设计(DDD)是教我们如何做好软件的,同时也是教我们如何更好地使用面向对象技术的。它为我们提供了设计软件的全新视角,同时也给开发者留下了一大难题:如何将领域驱动设计付诸实践?VaughnVernon的这本《实现领域驱动设计》为我们给出了全面的解答。  《实现领域驱动设计》分别从战略和战术层面详尽地讨论了如何实现DDD,其中包含了大量的实践、设计准则和对一些问题的折中性讨论。《实现领域驱动设计》共分为14章,在DDD战略部分,《实现领域驱动设计》向我们讲解了领域、限界上下文、上下文映射图和架构等内容,战术部分包括实体、值对象、领域服务、领域事件、聚合和资源库等内容。一个虚构的案例研究贯穿全书,这对于实例讲解DDD实现来说非常有用。  《实现领域驱动设计》在DDD的思想和实现之间建立起了一座桥梁,架构师和程序员均可阅读,同时也可以作为一本DDD参考书。   VaughnVernon,一个经验丰富的软件工匠,在软件设计、开发和架构方面拥有超过25年的从业经验。他提倡通过创新来简化软件的设计和实现。从20世纪80年代开始,他便开始使用面向对象语言进行编程;在20世纪90年代早期,他便在领域建模中应用了领域驱动设计,那时他使用的是Smalltalk语言。他在很多业务领域都有从业经验,包括航空、环境、地理、保险、医学和电信等领域。同时,Vaughn在技术上也取得了很大的成功,包括开发可重用的框架和类库等。他在全球范围之内提供软件咨询和演讲,此外,他还在许多国家教授《实现领域驱动设计》的课程。 序
    前言
    致谢
    关于作者
    如何使用本书
    第1章DDD入门
    我能DDD吗?
    为什么我们需要DDD
    如何DDD
    使用DDD的业务价值
    1.你获得了一个非常有用的领域模型
    2.你的业务得到了更准确的定义和理解
    3.领域专家可以为软件设计做出贡献
    4.更好的用户体验
    5.清晰的模型边界
    6.更好的企业架构
    7.敏捷、迭代式和持续建模
    8.使用战略和战术新工具
    实施DDD所面临的挑战
    虚构的案例,真实的实践
    本章小结

    第2章领域、子域和限界上下文
    总览
    工作中的子域和限界上下文
    将关注点放在核心域上
    战略设计为什么重要
    现实世界中领域和子域
    理解限界上下文
    限界上下文不仅仅只包含模型
    限界上下文的大小
    与技术组件保持一致
    示例上下文
    协作上下文
    身份与访问上下文
    敏捷项目管理上下文
    本章小结

    第3章上下文映射图
    上下文映射图为什么重要
    绘制上下文映射图
    产品和组织关系
    映射3个示例限界上下文
    本章小结

    第4章架构
    采访一个成功的CIO
    分层
    依赖倒置原则
    六边形架构(端口与适配器)
    面向服务架构
    REST
    REST作为一种架构风格
    RESTfulHTTP服务器的关键方面
    RESTfulHTTP客户端的关键方面
    REST和DDD
    为什么是REST?
    命令和查询职责分离——CQRS
    CQRS的各个方面
    处理具有最终一致性的查询模型
    事件驱动架构
    管道和过滤器
    长时处理过程(也叫Saga)
    事件源
    数据网织和基于网格的分布式计算
    数据复制
    事件驱动网织和领域事件
    持续查询
    分布式处理
    本章小结

    第5章实体
    为什么使用实体
    唯一标识
    用户提供唯一标识
    应用程序生成唯一标识
    持久化机制生成唯一标识
    另一个限界上下文提供唯一标识
    标识生成时间
    委派标识
    标识稳定性
    发现实体及其本质特征
    揭开实体及其本质特征的神秘面纱
    挖掘实体的关键行为
    角色和职责
    创建实体
    验证
    跟踪变化
    本章小结

    第6章值对象
    值对象的特征
    度量或描述
    不变性
    概念整体
    可替换性
    值对象相等性
    无副作用行为
    最小化集成
    用值对象表示标准类型
    测试值对象
    实现
    持久化值对象
    拒绝由数据建模泄漏带来的不利影响
    ORM与单个值对象
    多个值对象序列化到单个列中
    使用数据库实体保存多个值对象
    使用联合表保存多个值对象
    ORM与枚举状态对象
    本章小结

    第7章领域服务
    什么是领域服务(首先,什么不是领域服务)
    请确定你是否需要一个领域服务
    建模领域服务
    独立接口有必要吗
    一个计算过程
    转换服务
    为领域服务创建一个迷你层
    测试领域服务
    本章小

    第8章领域事件
    何时/为什么使用领域事件
    建模领域事件
    创建具有聚合特征的领域事件
    身份标识
    从领域模型中发布领域事件
    发送方
    订阅方
    向远程限界上下文发布领域事件
    消息设施的一致性
    自治服务和系统
    容许时延
    事件存储
    转发存储事件的架构风格
    以REST资源的方式发布事件通知
    通过消息中间件发布事件通知
    实现
    发布NotificationLog
    发布基于消息的事件通知
    本章小结

    第9章模块
    通过模块完成设计
    模块的基本命名规范
    领域模型的命名规范
    敏捷项目管理上下文中的模块
    其他层中的模块
    先考虑模块,再是限界上下文
    本章小结

    第10章聚合
    在Scrum核心领域中使用聚合
    第一次尝试:臃肿的聚合
    第二次尝试:多个聚合
    原则:在一致性边界之内建模真正的不变条件
    原则:设计小聚合
    不要相信每一个用例
    原则:通过唯一标识引用其他聚合.
    通过标识引用使多个聚合协同工作
    建模对象导航性
    可伸缩性和分布式
    原则:在边界之外使用最终一致性.
    谁的任务?
    打破原则的理由
    理由之一:方便用户界面
    理由之二:缺乏技术机制
    理由之三:全局事务
    理由之四:查询性能
    遵循原则
    通过发现,深入理解
    重新思考设计
    估算聚合成本
    常见用例场景
    内存消耗
    探索另外的设计
    实现最终一致性
    这是Scrum团队成员的任务吗?
    决定的时候到了
    实现
    创建具有唯一标识的根实体
    优先使用值对象
    使用迪米特法则和“告诉而非询问”原则
    乐观并发
    避免依赖注入
    本章小结

    第11章工厂
    领域模型中的工厂
    聚合根中的工厂方法
    创建CalendarEntry实例
    创建Discussion实例
    领域服务中的工厂
    本章小结

    第12章资源库
    面向集合资源库
    Hibernate实现
    TopLink实现
    面向持久化资源库
    Coherence实现
    MongoDB实现
    额外的行为
    管理事务
    警告
    类型层级
    资源库vs数据访问对象(DAO)
    测试资源库
    以内存实现进行测试
    本章小结

    第13章集成限界上下文
    集成基础知识
    分布式系统之间存在根本性区别
    跨系统边界交换信息
    通过REST资源集成限界上下文
    实现REST资源
    使用防腐层实现REST客户端
    通过消息集成限界上下文
    从Scrum的产品负责人和团队成员处得到持续通知
    你能处理这样的职责吗?
    长时处理过程,以及避免职责
    长时处理过程的状态机和超时跟踪器
    设计一个更复杂的长时处理过程
    当消息机制或你的系统不可用时
    本章小结

    第14章应用程序
    用户界面
    渲染领域对象
    渲染数据传输对象
    使用调停者发布聚合的内部状态
    通过领域负载对象渲染聚合实例
    聚合实例的状态展现
    用例优化资源库查询
    处理不同类型的客户端
    渲染适配器以及处理用户编辑
    应用服务
    示例应用服务
    解耦服务输出
    组合多个限界上下文
    基础设施
    企业组件容器
    本章小结
    附录A聚合与事件源:A+ES
    应用服务内部
    命令处理器
    Lambda语法
    并发控制
    A+ES所带来的结构自由性
    性能
    实现事件存储
    关系型持久化
    BLOB持久化
    专注的聚合
    读模型投射
    与聚合设计一道使用
    增强事件
    工具和模式
    事件序列器
    事件不变性
    值对象
    协议生成
    单元测试和需求规范
    事件源和函数式语言
    参考文献
  • 内容简介:
      领域驱动设计(DDD)是教我们如何做好软件的,同时也是教我们如何更好地使用面向对象技术的。它为我们提供了设计软件的全新视角,同时也给开发者留下了一大难题:如何将领域驱动设计付诸实践?VaughnVernon的这本《实现领域驱动设计》为我们给出了全面的解答。  《实现领域驱动设计》分别从战略和战术层面详尽地讨论了如何实现DDD,其中包含了大量的实践、设计准则和对一些问题的折中性讨论。《实现领域驱动设计》共分为14章,在DDD战略部分,《实现领域驱动设计》向我们讲解了领域、限界上下文、上下文映射图和架构等内容,战术部分包括实体、值对象、领域服务、领域事件、聚合和资源库等内容。一个虚构的案例研究贯穿全书,这对于实例讲解DDD实现来说非常有用。  《实现领域驱动设计》在DDD的思想和实现之间建立起了一座桥梁,架构师和程序员均可阅读,同时也可以作为一本DDD参考书。
  • 作者简介:
      VaughnVernon,一个经验丰富的软件工匠,在软件设计、开发和架构方面拥有超过25年的从业经验。他提倡通过创新来简化软件的设计和实现。从20世纪80年代开始,他便开始使用面向对象语言进行编程;在20世纪90年代早期,他便在领域建模中应用了领域驱动设计,那时他使用的是Smalltalk语言。他在很多业务领域都有从业经验,包括航空、环境、地理、保险、医学和电信等领域。同时,Vaughn在技术上也取得了很大的成功,包括开发可重用的框架和类库等。他在全球范围之内提供软件咨询和演讲,此外,他还在许多国家教授《实现领域驱动设计》的课程。
  • 目录:

    前言
    致谢
    关于作者
    如何使用本书
    第1章DDD入门
    我能DDD吗?
    为什么我们需要DDD
    如何DDD
    使用DDD的业务价值
    1.你获得了一个非常有用的领域模型
    2.你的业务得到了更准确的定义和理解
    3.领域专家可以为软件设计做出贡献
    4.更好的用户体验
    5.清晰的模型边界
    6.更好的企业架构
    7.敏捷、迭代式和持续建模
    8.使用战略和战术新工具
    实施DDD所面临的挑战
    虚构的案例,真实的实践
    本章小结

    第2章领域、子域和限界上下文
    总览
    工作中的子域和限界上下文
    将关注点放在核心域上
    战略设计为什么重要
    现实世界中领域和子域
    理解限界上下文
    限界上下文不仅仅只包含模型
    限界上下文的大小
    与技术组件保持一致
    示例上下文
    协作上下文
    身份与访问上下文
    敏捷项目管理上下文
    本章小结

    第3章上下文映射图
    上下文映射图为什么重要
    绘制上下文映射图
    产品和组织关系
    映射3个示例限界上下文
    本章小结

    第4章架构
    采访一个成功的CIO
    分层
    依赖倒置原则
    六边形架构(端口与适配器)
    面向服务架构
    REST
    REST作为一种架构风格
    RESTfulHTTP服务器的关键方面
    RESTfulHTTP客户端的关键方面
    REST和DDD
    为什么是REST?
    命令和查询职责分离——CQRS
    CQRS的各个方面
    处理具有最终一致性的查询模型
    事件驱动架构
    管道和过滤器
    长时处理过程(也叫Saga)
    事件源
    数据网织和基于网格的分布式计算
    数据复制
    事件驱动网织和领域事件
    持续查询
    分布式处理
    本章小结

    第5章实体
    为什么使用实体
    唯一标识
    用户提供唯一标识
    应用程序生成唯一标识
    持久化机制生成唯一标识
    另一个限界上下文提供唯一标识
    标识生成时间
    委派标识
    标识稳定性
    发现实体及其本质特征
    揭开实体及其本质特征的神秘面纱
    挖掘实体的关键行为
    角色和职责
    创建实体
    验证
    跟踪变化
    本章小结

    第6章值对象
    值对象的特征
    度量或描述
    不变性
    概念整体
    可替换性
    值对象相等性
    无副作用行为
    最小化集成
    用值对象表示标准类型
    测试值对象
    实现
    持久化值对象
    拒绝由数据建模泄漏带来的不利影响
    ORM与单个值对象
    多个值对象序列化到单个列中
    使用数据库实体保存多个值对象
    使用联合表保存多个值对象
    ORM与枚举状态对象
    本章小结

    第7章领域服务
    什么是领域服务(首先,什么不是领域服务)
    请确定你是否需要一个领域服务
    建模领域服务
    独立接口有必要吗
    一个计算过程
    转换服务
    为领域服务创建一个迷你层
    测试领域服务
    本章小

    第8章领域事件
    何时/为什么使用领域事件
    建模领域事件
    创建具有聚合特征的领域事件
    身份标识
    从领域模型中发布领域事件
    发送方
    订阅方
    向远程限界上下文发布领域事件
    消息设施的一致性
    自治服务和系统
    容许时延
    事件存储
    转发存储事件的架构风格
    以REST资源的方式发布事件通知
    通过消息中间件发布事件通知
    实现
    发布NotificationLog
    发布基于消息的事件通知
    本章小结

    第9章模块
    通过模块完成设计
    模块的基本命名规范
    领域模型的命名规范
    敏捷项目管理上下文中的模块
    其他层中的模块
    先考虑模块,再是限界上下文
    本章小结

    第10章聚合
    在Scrum核心领域中使用聚合
    第一次尝试:臃肿的聚合
    第二次尝试:多个聚合
    原则:在一致性边界之内建模真正的不变条件
    原则:设计小聚合
    不要相信每一个用例
    原则:通过唯一标识引用其他聚合.
    通过标识引用使多个聚合协同工作
    建模对象导航性
    可伸缩性和分布式
    原则:在边界之外使用最终一致性.
    谁的任务?
    打破原则的理由
    理由之一:方便用户界面
    理由之二:缺乏技术机制
    理由之三:全局事务
    理由之四:查询性能
    遵循原则
    通过发现,深入理解
    重新思考设计
    估算聚合成本
    常见用例场景
    内存消耗
    探索另外的设计
    实现最终一致性
    这是Scrum团队成员的任务吗?
    决定的时候到了
    实现
    创建具有唯一标识的根实体
    优先使用值对象
    使用迪米特法则和“告诉而非询问”原则
    乐观并发
    避免依赖注入
    本章小结

    第11章工厂
    领域模型中的工厂
    聚合根中的工厂方法
    创建CalendarEntry实例
    创建Discussion实例
    领域服务中的工厂
    本章小结

    第12章资源库
    面向集合资源库
    Hibernate实现
    TopLink实现
    面向持久化资源库
    Coherence实现
    MongoDB实现
    额外的行为
    管理事务
    警告
    类型层级
    资源库vs数据访问对象(DAO)
    测试资源库
    以内存实现进行测试
    本章小结

    第13章集成限界上下文
    集成基础知识
    分布式系统之间存在根本性区别
    跨系统边界交换信息
    通过REST资源集成限界上下文
    实现REST资源
    使用防腐层实现REST客户端
    通过消息集成限界上下文
    从Scrum的产品负责人和团队成员处得到持续通知
    你能处理这样的职责吗?
    长时处理过程,以及避免职责
    长时处理过程的状态机和超时跟踪器
    设计一个更复杂的长时处理过程
    当消息机制或你的系统不可用时
    本章小结

    第14章应用程序
    用户界面
    渲染领域对象
    渲染数据传输对象
    使用调停者发布聚合的内部状态
    通过领域负载对象渲染聚合实例
    聚合实例的状态展现
    用例优化资源库查询
    处理不同类型的客户端
    渲染适配器以及处理用户编辑
    应用服务
    示例应用服务
    解耦服务输出
    组合多个限界上下文
    基础设施
    企业组件容器
    本章小结
    附录A聚合与事件源:A+ES
    应用服务内部
    命令处理器
    Lambda语法
    并发控制
    A+ES所带来的结构自由性
    性能
    实现事件存储
    关系型持久化
    BLOB持久化
    专注的聚合
    读模型投射
    与聚合设计一道使用
    增强事件
    工具和模式
    事件序列器
    事件不变性
    值对象
    协议生成
    单元测试和需求规范
    事件源和函数式语言
    参考文献
查看详情
您可能感兴趣 / 更多
实现领域驱动设计
无辜者的谎言(相信我!看到结局你一定会头皮发麻;全美读者推荐的悬疑神作,GOODREADS高分作品)
[美]A.R.托雷 著;梁颂宇 译;星文文化 出品
实现领域驱动设计
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
实现领域驱动设计
哲学、历史与僭政——重审施特劳斯与科耶夫之争
[美]弗罗斯特(Bryan-Paul Frost) 编;[美]伯恩斯(Timothy W. Burns)
实现领域驱动设计
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
实现领域驱动设计
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
实现领域驱动设计
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
实现领域驱动设计
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
实现领域驱动设计
最后一章
[美]厄尼·派尔
实现领域驱动设计
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
实现领域驱动设计
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
实现领域驱动设计
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
实现领域驱动设计
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译