函数响应式领域建模

函数响应式领域建模

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

向你介绍响应式系统中建立领域模型所需要的通用且可重用的技巧。

内容简介

传统的分布式应用不会切入微服务、快速数据及传感器网络的响应式世界。为了捕获这些应用的动态联系及依赖,我们需要使用另外一种方式来进行领域建模。由纯函数构成的领域模型是以一种更加自然的方式来反映一个响应式系统内的处理流程,同时它也直接映射到了相应的技术和模式,比如Akka、CQRS 以及事件溯源。本书讲述了响应式系统中建立领域模型所需要的通用且可重用的技巧——首先介绍了函数式编程和响应式架构的相关概念,然后逐步地在领域建模中引入这些新的方法,同时本书提供了大量的案例,当在项目中应用这些概念时,可作为参考。

作者简介

作者Debasish Ghosh,Anshinsoft公司首席技术布道师,开发者推荐博客“Ruminations of a Programmer”的作者,ACM协会高级会员。他拥有跨国IT企业20余年工作经验,擅长为各种客户(无论是中小型公司还是财富500强企业)交付企业级解决方案,对自己将软件设计和编程最佳实践制度化而引以为傲,热爱Java、Ruby、Scala、OO及函数式编程,关注DSL和NoSQL数据库。

章节目录

版权信息

内容简介

推荐序

致谢

关于本书

关于作者

关于译者

1 函数式领域建模:介绍

1.1 什么是领域模型

1.2 领域驱动设计介绍

1.2.1 边界上下文

1.2.2 领域模型元素

1.2.3 领域对象的生命周期

1.2.4 通用语言

1.3 函数化思想

1.3.1 哈,纯粹的乐趣

1.3.2 纯函数组合

1.4 管理副作用

1.5 纯模型元素的优点

1.6 响应式领域模型

1.6.1 响应式模型的3+1视图

1.6.2 揭穿“我的模型不能失败”的神话

1.6.3 伸缩性与消息驱动

1.7 事件驱动编程

1.7.1 事件与命令

1.7.2 领域事件

1.8 函数式遇上响应式

1.9 总结

2 Scala与函数式领域模型

2.1 为什么是Scala

2.2 静态类型与富领域模型

2.3 领域行为的纯函数

2.3.1 回顾抽象的纯粹性

2.3.2 引用透明的其他好处

2.4 代数数据类型与不变性

2.4.1 基础:和类型与乘积类型

2.4.2 模型中的ADT结构数据

2.4.3 ADT与模式匹配

2.4.4 ADT鼓励不变性

2.5 局部用函数,全局用OO

2.5.1 Scala中的模块

2.6 用Scala使模型具备响应性

2.6.1 管理作用

2.6.2 管理失败

2.6.3 管理延迟

2.7 总结

3 设计函数式领域模型

3.1 API设计的代数

3.1.1 为什么是代数方法

3.2 为领域服务定义代数

3.2.1 赋值抽象

3.2.2 组合抽象

3.2.3 类型的最终代数

3.2.4 代数法则

3.2.5 代数解释程序

3.3 领域模型生命周期中的模式

3.3.1 工厂——对象从何处来

3.3.2 智能构造器

3.3.3 通过更有表现力的类型进一步提升智能

3.3.4 用代数数据类型聚合

3.3.5 用透镜更新聚合功能

3.3.6 仓储与解耦的永恒艺术

3.3.7 高效地使用生命周期模式——结论

3.4 总结

4 领域模型的函数式模式

4.1 模式——代数、函数、类型的聚合

4.1.1 领域模型中的挖掘模式

4.1.2 用函数式模式使领域模型参数化

4.2 强类型函数式编程中计算的基本模式

4.2.1 函子——建立模式

4.2.2 加强版函子模式

4.2.3 单子作用——applicative模式的变体

4.3 如何用模式对领域模型进行塑形

4.4 用代数、类型和模式演进API

4.4.1 代数——第一稿

4.4.2 改进代数

4.4.3 最终组合——采用类型

4.5 用模式和类型增强领域的不变性

4.5.1 贷款处理模型

4.5.2 使非法状态不可表示

4.6 总结

5 领域模型的模块化

5.1 将领域模型模块化

5.2 模块化的领域模型——案例学习

5.2.1 模块的解剖

5.2.2 模块的构成

5.2.3 模块的物理组织

5.2.4 模块鼓励组合

5.2.5 领域模型中的模块化——结论

5.3 类型类模式——模块化的多态行为

5.4 边界上下文的聚合模块

5.4.1 模块与边界上下文

5.4.2 边界上下文间的通信

5.5 模块化的另一个模式——free monad

5.5.1 账户存储

5.5.2 使它免费

5.5.3 账户存储——free monad

5.5.4 free monad解释程序

5.5.5 free monad——重点回顾

5.6 总结

6 响应式模型

6.1 响应式领域模型

6.2 使用future的非阻塞API设计

6.2.1 异步作为堆叠作用

6.2.2 基于monad转换器的实现

6.2.3 用并行存取降低延迟——一种响应式模式

6.2.4 使用scalaz.concurrent.Task作为响应式构造

6.3 明确的异步消息传递

6.4 流模式

6.4.1 一个案例

6.4.2 领域管道图

6.4.3 后端压力处理

6.5 actor模型

6.5.1 领域模型与actor

6.6 总结

7 响应式流建模

7.1 响应式流模型

7.2 何时使用流模型

7.3 领域用例

7.4 基于流的领域交互

7.5 实现:前台

7.6 实现:后台

7.7 流模型的主要结论

7.8 使模型具有弹性

7.8.1 使用Akka Streams监管

7.8.2 冗余集群

7.8.3 数据的持久化

7.9 基于流的领域模型与响应式原则

7.10 总结

8 响应式持久化与事件溯源

8.1 领域模型的持久化

8.2 关注点分离

8.2.1 持久化的读/写模型

8.2.2 命令查询责任分离

8.3 事件溯源

8.3.1 事件溯源领域模型中的命令和事件

8.3.2 实现CQRS和事件溯源

8.4 实现事件溯源的领域模型(函数式)

8.4.1 作为头等实体的事件

8.4.2 命令是事件上的free monad

8.4.3 解释程序——隐藏所有有趣的东西

8.4.4 投影——读取端模型

8.4.5 事件存储

8.4.6 分布式CQRS——一个短信

8.4.7 实现的总结

8.5 其他持久化模型

8.5.1 将聚合作为ADT映射到关系型表

8.5.2 操作数据(函数式)

8.5.3 到Akka Streams管道的响应式获取

8.6 总结

9 测试领域模型

9.1 测试领域模型概述

9.2 设计可测试的领域模型

9.2.1 解耦副作用

9.2.2 为领域函数提供自定义解释程序

9.2.3 实现参数化与测试

9.3 基于xUnit 的测试

9.4 回顾模型的代数

9.5 基于属性的测试

9.5.1 建模属性

9.5.2 验证领域模型中的属性

9.5.3 数据生成器

9.5.4 是否比基于xUnit的测试更好

9.6 总结

10 核心思想与原则

10.1 回顾

10.2 函数式领域建模的核心原则

10.2.1 表达式思想

10.2.2 早抽象,晚赋值

10.2.3 使用合适的抽象

10.2.4 发布要做什么,在组合器中隐藏如何做

10.2.5 从实现中解耦代数

10.2.6 隔离边界上下文

10.2.7 偏向future而不是actor

10.3 展望未来

函数响应式领域建模是2018年由电子工业出版社出版,作者[美]Debasish Ghosh。

得书感谢您对《函数响应式领域建模》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
响应式网页开发基础教程(jQuery+Bootstrap) 电子书
本书介绍了响应式网页开发所涉及的关键技术,包括响应式网页设计的概念、JavaScript基础、jQuery基础、Bootstrap基础、响应式布局、Bootstrap组件设计和网页效果设计实例等,并综合实例进行讲解。
Bootstrap响应式Web前端开发与实战(微课版) 电子书
本书由浅入深,详尽地介绍Bootstrap相关技术在Web开发领域的应用。本书以案例为主线,将理论与实践相结合,旨在提升读者的实践能力,从而达到举一反三的目的。本书共9章,内容包括响应式网页设计、Bootstrap简介、Bootstrap脚手架、Bootstrap页面内容、Bootstrap的工具类、Bootstrap的弹性布局、Bootstrap的CSS组件、Bootstrap的JS插件、综合案
响应式Web开发项目教程(HTML5+CSS3+Bootstrap) 电子书
内容提要Web前端开发在近年来迅速崛起,本书从Web开发实际应用的角度,以项目式的教学方式讲解HTML5、CSS3、响应式设计等新技术。本书共分为8个单元,把Web开发项目按文本、图文、表单、画布、音频视频、响应式进行分类教学。**后通过Bootstrap工具开发来整合HTML5、CSS3和响应式开发的知识,进行快捷开发。本书优选了18个项目,从【项目描述】→【前导知识】→【项目分析】→【代码实现
HTML5+CSS3+Bootstrap响应式Web前端设计(慕课版) 电子书
本书通过基础知识+知识点实例+项目驱动+动手实践的案例方式,采用不同层次的实例练习让学习者在轻松掌握前端开发的基础知识。对HTML5、CSS3、响应式布局及流行的开发框架等前沿技术也做出介绍。本书配有视频讲解。适合在高等院校做web开发课程的MOOC教学教材使用,也适合做为初学者的自学教程。
响应式Web开发项目教程(HTML5+CSS3+Bootstrap)(第2版) 电子书
本书共9章。第1-3章讲解HTML5和CSS3的基础内容;第4-6章讲解HTML5表单的应用、HTML5画布、HTML5视频和音频的内容;第7章讲解响应式Web设计的基础知识;第8-9章讲解Bootstrap,内容包括栅格系统、组件和样式等相关内容,以及如何利用Bootstrap相关技术开发PC端登录界面和后台管理系统。