函数响应式领域建模
作品简介
传统的分布式应用不会切入微服务、快速数据及传感器网络的响应式世界。为了捕获这些应用的动态联系及依赖,我们需要使用另外一种方式来进行领域建模。由纯函数构成的领域模型是以一种更加自然的方式来反映一个响应式系统内的处理流程,同时它也直接映射到了相应的技术和模式,比如Akka、CQRS以及事件溯源。本书讲述了响应式系统中建立领域模型所需要的通用且可重用的技巧——首先介绍了函数式编程和响应式架构的相关概念,然后逐步地在领域建模中引入这些新的方法,同时本书提供了大量的案例,当在项目中应用这些概念时,可作为参考。
(美)德巴斯什·戈施(Debasish Ghosh)在领域建模方面有10年的工作经验,在过去的5年里他主要专注在函数式建模领域。他有着丰富的函数式编程经验,特别在使用Scala语言以及Akka、Scalaz库方面,这也是本书的基础。
作品目录
推荐序
序
致谢
关于本书
关于作者
关于译者
1 函数式领域建模:介绍
1.1 什么是领域模型
1.2 领域驱动设计介绍
1.3 函数化思想
1.4 管理副作用
1.5 纯模型元素的优点
1.6 响应式领域模型
1.7 事件驱动编程
1.8 函数式遇上响应式
1.9 总结
2 Scala与函数式领域模型
2.1 为什么是Scala
2.2 静态类型与富领域模型
2.3 领域行为的纯函数
2.4 代数数据类型与不变性
2.5 局部用函数,全局用OO
2.6 用Scala使模型具备响应性
2.7 总结
3 设计函数式领域模型
3.1 API设计的代数
3.2 为领域服务定义代数
3.3 领域模型生命周期中的模式
3.4 总结
4 领域模型的函数式模式
4.1 模式——代数、函数、类型的聚合
4.2 强类型函数式编程中计算的基本模式
4.3 如何用模式对领域模型进行塑形
4.4 用代数、类型和模式演进API
4.5 用模式和类型增强领域的不变性
4.6 总结
5 领域模型的模块化
5.1 将领域模型模块化
5.2 模块化的领域模型——案例学习
5.3 类型类模式——模块化的多态行为
5.4 边界上下文的聚合模块
5.5 模块化的另一个模式——free monad
5.6 总结
6 响应式模型
6.1 响应式领域模型
6.2 使用future的非阻塞API设计
6.3 明确的异步消息传递
6.4 流模式
6.5 actor模型
6.6 总结
7 响应式流建模
7.1 响应式流模型
7.2 何时使用流模型
7.3 领域用例
7.4 基于流的领域交互
7.5 实现:前台
7.6 实现:后台
7.7 流模型的主要结论
7.8 使模型具有弹性
7.9 基于流的领域模型与响应式原则
7.10 总结
8 响应式持久化与事件溯源
8.1 领域模型的持久化
8.2 关注点分离
8.3 事件溯源
8.4 实现事件溯源的领域模型(函数式)
8.5 其他持久化模型
8.6 总结
9 测试领域模型
9.1 测试领域模型概述
9.2 设计可测试的领域模型
9.3 基于xUnit 的测试
9.4 回顾模型的代数
9.5 基于属性的测试
9.6 总结
10 核心思想与原则
10.1 回顾
10.2 函数式领域建模的核心原则
10.3 展望未来
载入中