反应式Web应用开发

反应式Web应用开发
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [奥地利] (Manuel Bernhardt)
2018-11
版次: 1
ISBN: 9787115489548
定价: 69.00
装帧: 其他
开本: 16开
纸张: 胶版纸
2人买过
  • 本书以Play框架为例阐述了反应式编程的理念以及在实际的编码中实践这些理念的方法,以实现更加灵活和高性能的Web应用程序。
      本书共11章,分成三大部分。*部分(第1章到第4章)主要介绍了反应式编程的基础理念,并讲解了函数式编程和Play框架的基础知识。第二部分(第5章到第8章)介绍了反应式Web编程的核心概念,如Future和Actor,还讲解了将反应式的理念应用到用户界面层的方法。第三部分(第9章到第11章)介绍了反应式Web编程的主题,涵盖反应式流以及应用程序的部署和测试等内容。
      本书适合Java Web程序开发人员和架构师阅读,尤其适合希望借助反应式技术提升系统性能的开发人员参考,还可以作为Java编程人员学习函数式编程理念的进阶读物。 Manuel Bernhardt是一个很有热情的工程师、作者、演讲者和咨询师,对构建和运维网络应用方面的科学抱有强烈的兴趣。从2008年开始,他指导和训练企业团队将应用转移到分布式计算架构。最近几年,他关注的是反应式应用架构的生产型系统,在这个过程中,主要使用Scala、Play框架和Akka。

    Manuel喜欢旅行,经常会在国际会议上演讲。他住在维也纳,并且是维也纳Scala用户组的联合组织者。除了思考、谈论和摆弄计算机,他喜欢将时光用在陪伴家人上,和他们一起跑步、潜水和阅读。读者可以在http:  manuel.bernhardt.io了解到Manuel的动态。 第1章 你在谈论反应式编程吗 3

    1.1 反应式的背景 4

    1.1.1 反应式的起源 4

    1.1.2 反应式宣言 5

    1.1.3 反应式编程 6

    1.1.4 反应式技术的涌现 7

    1.2 重新思考计算资源的利用 8

    1.2.1 基于线程与基于事件的Web应用服务器 8

    1.2.2 开发适合多核架构的Web应用 11

    1.2.3 水平应用架构 14

    1.3 将故障处理作为第一考虑因素 16

    1.3.1 故障是无法避免的 17

    1.3.2 构建应用时,要充分考虑到故障 19

    1.3.3 处理负载 21

    1.4 小结 24

    第2章 第一个反应式Web应用 25

    2.1 创建并运行新工程 25

    2.2 连接Twitter的流式API 28

    2.2.1 获取到Twitter API的连接凭证 28

    2.2.2 解决OAuth认证的一个bug 28

    2.2.3 通过Twitter API获取流式数据 29

    2.2.4 异步转换Twitter流 33

    2.3 使用WebSocket将tweet以流的方式发送到客户端 36

    2.3.1 创建Actor 37

    2.3.2 搭建WebSocket连接并与之交互 38

    2.3.3 发送tweet到WebSocket 40

    2.4 让应用有弹性可扩展 42

    2.4.1 让客户端变得有弹性 42

    2.4.2 扩展 44

    2.5 小结 46

    第3章 函数式编程基础 47

    3.1 函数式编程概述 47

    3.2 不可变性 48

    3.2.1 可变状态的谬误 48

    3.2.2 将不可变值视为现实的快照 49

    3.2.3 面向表达式编程 50

    3.3 函数 52

    3.3.1 面向对象编程语言中的函数 52

    3.3.2 函数作为第一类的值 53

    3.3.3 传递行为 53

    3.3.4 组合函数 54

    3.3.5 函数的大小 55

    3.4 操作不可变集合 57

    3.4.1 使用转换来替换循环 57

    3.4.2 用来操作集合的高阶函数 58

    3.5 转换到声明式编程风格 64

    3.5.1 不要对Option使用get方法 64

    3.5.2 只使用不可变值和数据结构 65

    3.5.3 致力于编写小巧精炼的函数 65

    3.5.4 迭代式地改善函数式编程风格 65

    3.6 小结 66

    第4章 快速掌握Play框架 67

    4.1 Play应用的结构和配置 68

    4.1.1 简单词汇教师应用简介 68

    4.1.2 创建一个最小的Play应用脚手架 68

    4.1.3 构建项目 71

    4.2 请求处理 72

    4.2.1 请求的生命周期 73

    4.2.2 请求路由 76

    4.2.3 控制器、Action和结果 80

    4.2.4 WebSocket 86

    4.2.5 调整默认的请求处理管道 89

    4.3 小结 93

     

    第二部分 核心概念

     

    第5章 Future 97

    5.1 使用Future 97

    5.1.1 Future基础 98

    5.1.2 Play中的Future 104

    5.1.3 测试Future 111

    5.2 用Future来设计异步业务 113

    5.2.1 识别可并行的元素 114

    5.2.2 组合服务的Future 116

    5.2.3 错误的传播与处理 121

    5.3 小结 125

    第6章 Actor 127

    6.1 Actor的基本原理 128

    6.1.1 简单的Twitter分析服务 128

    6.1.2 搭建基础框架:Actor及其子Actor 129

    6.2 任其崩溃—监管与恢复 142

    6.2.1 可靠的存储 142

    6.2.2 任其崩溃 145

    6.2.3 观察Actor的消亡并将其复活 146

    6.3 系统对负载的反应,实现监控并预防服务过载 147

    6.3.1 流控制消息 148

    6.3.2 具有优先级的消息 151

    6.3.3 断路器 153

    6.4 小结 155

    第7章 处理状态 157

    7.1 在无状态的Play Web应用中使用状态 158

    7.1.1 数据库 159

    7.1.2 使用Play session保持客户端状态 170

    7.1.3 使用分布式缓存保持服务端状态 171

    7.2 命令查询职责分离与事件溯源 173

    7.2.1 Twitter SMS服务 173

    7.2.2 搭建SMS网关 177

    7.2.3 通过持久化Actor编写事件流 179

    7.2.4 配置Akka持久化,写入到MongoDB中 182

    7.2.5 处理传入的命令:订阅用户在Twitter被提及的通知 183

    7.2.6 将事件流转换为关系模型 185

    7.2.7 查询关系模型 188

    7.2.8 关于最终一致性 190

    7.3 小结 190

    第8章 反应式用户界面 191

    8.1 集成Scala.js和Play 192

    8.1.1 应用结构 192

    8.1.2 搭建构建流程 193

    8.1.3 创建简单的Scala.js应用 195

    8.2 集成Scala.js和AngularJS 196

    8.2.1 搭建AngularJS绑定 196

    8.2.2 创建AngularJS应用 197

    8.2.3 初始化AngularJS dashboard模块及其依赖 199

    8.2.4 初始化Dashboard控制器 199

    8.2.5 创建视图片段 200

    8.2.6 在HTML中加载AngularJS应用 200

    8.3 使用Scala.js集成已有的JavaScript库 201

    8.3.1 将已有的JavaScript库包装为AngularJS服务 201

    8.3.2 创建为图表获取数据的服务 203

    8.3.3 使用Chart.js展现指标数据 205

    8.4 处理客户端故障 207

    8.4.1 借助测试防止出现缺陷 207

    8.4.2 探测WebSocket连接故障 209

    8.4.3 通知用户 209

    8.4.4 监控客户端错误 211

    8.5 小结 211

     

    第三部分 高级话题

     

    第9章 反应式流 215

    9.1 为什么要有反应式流 215

    9.1.1 带有非阻塞回压功能的流 216

    9.1.2 操作异步流 217

    9.2 Akka Streams简介 218

    9.2.1 核心原理 218

    9.2.2 操作流式的tweet数据 219

    9.3 小结 230

    第10章 部署反应式Play应用 231

    10.1 为Play应用的生产环境部署做好准备 232

    10.1.1 创建用于部署的简单应用 232

    10.1.2 使用Selenium编写和运行测试 234

    10.1.3 为应用的生产部署做好准备 236

    10.2 搭建持续集成环境 239

    10.2.1 在Docker中运行Jenkins 239

    10.2.2 通过配置Jenkins来构建应用 241

    10.3 部署应用 243

    10.3.1 部署到Clever Cloud 243

    10.3.2 部署到自己的服务器上 245

    10.3.3 该选择哪种部署模式 248

    10.4 小结 248

    第11章 测试反应式Web应用 249

    11.1 测试反应式特质 249

    11.1.1 测试响应性 250

    11.1.2 测试弹性 250

    11.1.3 测试适应性 251

    11.1.4 在哪里进行测试? 251

    11.2 测试单个反应式组件 251

    11.2.1 测试单个组件的响应性 252

    11.2.2 测试单个组件的弹性 256

    11.3 测试整个反应式应用 259

    11.3.1 创建生成随机数的简单应用 259

    11.3.2 使用Gatling测试弹性 261

    11.3.3 使用Bees with Machine Guns测试扩展性 265

    11.4 小结 270

    附录A 安装Play框架 271

    附录B 推荐读物 275

    附录C 推荐资源 277
  • 内容简介:
    本书以Play框架为例阐述了反应式编程的理念以及在实际的编码中实践这些理念的方法,以实现更加灵活和高性能的Web应用程序。
      本书共11章,分成三大部分。*部分(第1章到第4章)主要介绍了反应式编程的基础理念,并讲解了函数式编程和Play框架的基础知识。第二部分(第5章到第8章)介绍了反应式Web编程的核心概念,如Future和Actor,还讲解了将反应式的理念应用到用户界面层的方法。第三部分(第9章到第11章)介绍了反应式Web编程的主题,涵盖反应式流以及应用程序的部署和测试等内容。
      本书适合Java Web程序开发人员和架构师阅读,尤其适合希望借助反应式技术提升系统性能的开发人员参考,还可以作为Java编程人员学习函数式编程理念的进阶读物。
  • 作者简介:
    Manuel Bernhardt是一个很有热情的工程师、作者、演讲者和咨询师,对构建和运维网络应用方面的科学抱有强烈的兴趣。从2008年开始,他指导和训练企业团队将应用转移到分布式计算架构。最近几年,他关注的是反应式应用架构的生产型系统,在这个过程中,主要使用Scala、Play框架和Akka。

    Manuel喜欢旅行,经常会在国际会议上演讲。他住在维也纳,并且是维也纳Scala用户组的联合组织者。除了思考、谈论和摆弄计算机,他喜欢将时光用在陪伴家人上,和他们一起跑步、潜水和阅读。读者可以在http:  manuel.bernhardt.io了解到Manuel的动态。
  • 目录:
    第1章 你在谈论反应式编程吗 3

    1.1 反应式的背景 4

    1.1.1 反应式的起源 4

    1.1.2 反应式宣言 5

    1.1.3 反应式编程 6

    1.1.4 反应式技术的涌现 7

    1.2 重新思考计算资源的利用 8

    1.2.1 基于线程与基于事件的Web应用服务器 8

    1.2.2 开发适合多核架构的Web应用 11

    1.2.3 水平应用架构 14

    1.3 将故障处理作为第一考虑因素 16

    1.3.1 故障是无法避免的 17

    1.3.2 构建应用时,要充分考虑到故障 19

    1.3.3 处理负载 21

    1.4 小结 24

    第2章 第一个反应式Web应用 25

    2.1 创建并运行新工程 25

    2.2 连接Twitter的流式API 28

    2.2.1 获取到Twitter API的连接凭证 28

    2.2.2 解决OAuth认证的一个bug 28

    2.2.3 通过Twitter API获取流式数据 29

    2.2.4 异步转换Twitter流 33

    2.3 使用WebSocket将tweet以流的方式发送到客户端 36

    2.3.1 创建Actor 37

    2.3.2 搭建WebSocket连接并与之交互 38

    2.3.3 发送tweet到WebSocket 40

    2.4 让应用有弹性可扩展 42

    2.4.1 让客户端变得有弹性 42

    2.4.2 扩展 44

    2.5 小结 46

    第3章 函数式编程基础 47

    3.1 函数式编程概述 47

    3.2 不可变性 48

    3.2.1 可变状态的谬误 48

    3.2.2 将不可变值视为现实的快照 49

    3.2.3 面向表达式编程 50

    3.3 函数 52

    3.3.1 面向对象编程语言中的函数 52

    3.3.2 函数作为第一类的值 53

    3.3.3 传递行为 53

    3.3.4 组合函数 54

    3.3.5 函数的大小 55

    3.4 操作不可变集合 57

    3.4.1 使用转换来替换循环 57

    3.4.2 用来操作集合的高阶函数 58

    3.5 转换到声明式编程风格 64

    3.5.1 不要对Option使用get方法 64

    3.5.2 只使用不可变值和数据结构 65

    3.5.3 致力于编写小巧精炼的函数 65

    3.5.4 迭代式地改善函数式编程风格 65

    3.6 小结 66

    第4章 快速掌握Play框架 67

    4.1 Play应用的结构和配置 68

    4.1.1 简单词汇教师应用简介 68

    4.1.2 创建一个最小的Play应用脚手架 68

    4.1.3 构建项目 71

    4.2 请求处理 72

    4.2.1 请求的生命周期 73

    4.2.2 请求路由 76

    4.2.3 控制器、Action和结果 80

    4.2.4 WebSocket 86

    4.2.5 调整默认的请求处理管道 89

    4.3 小结 93

     

    第二部分 核心概念

     

    第5章 Future 97

    5.1 使用Future 97

    5.1.1 Future基础 98

    5.1.2 Play中的Future 104

    5.1.3 测试Future 111

    5.2 用Future来设计异步业务 113

    5.2.1 识别可并行的元素 114

    5.2.2 组合服务的Future 116

    5.2.3 错误的传播与处理 121

    5.3 小结 125

    第6章 Actor 127

    6.1 Actor的基本原理 128

    6.1.1 简单的Twitter分析服务 128

    6.1.2 搭建基础框架:Actor及其子Actor 129

    6.2 任其崩溃—监管与恢复 142

    6.2.1 可靠的存储 142

    6.2.2 任其崩溃 145

    6.2.3 观察Actor的消亡并将其复活 146

    6.3 系统对负载的反应,实现监控并预防服务过载 147

    6.3.1 流控制消息 148

    6.3.2 具有优先级的消息 151

    6.3.3 断路器 153

    6.4 小结 155

    第7章 处理状态 157

    7.1 在无状态的Play Web应用中使用状态 158

    7.1.1 数据库 159

    7.1.2 使用Play session保持客户端状态 170

    7.1.3 使用分布式缓存保持服务端状态 171

    7.2 命令查询职责分离与事件溯源 173

    7.2.1 Twitter SMS服务 173

    7.2.2 搭建SMS网关 177

    7.2.3 通过持久化Actor编写事件流 179

    7.2.4 配置Akka持久化,写入到MongoDB中 182

    7.2.5 处理传入的命令:订阅用户在Twitter被提及的通知 183

    7.2.6 将事件流转换为关系模型 185

    7.2.7 查询关系模型 188

    7.2.8 关于最终一致性 190

    7.3 小结 190

    第8章 反应式用户界面 191

    8.1 集成Scala.js和Play 192

    8.1.1 应用结构 192

    8.1.2 搭建构建流程 193

    8.1.3 创建简单的Scala.js应用 195

    8.2 集成Scala.js和AngularJS 196

    8.2.1 搭建AngularJS绑定 196

    8.2.2 创建AngularJS应用 197

    8.2.3 初始化AngularJS dashboard模块及其依赖 199

    8.2.4 初始化Dashboard控制器 199

    8.2.5 创建视图片段 200

    8.2.6 在HTML中加载AngularJS应用 200

    8.3 使用Scala.js集成已有的JavaScript库 201

    8.3.1 将已有的JavaScript库包装为AngularJS服务 201

    8.3.2 创建为图表获取数据的服务 203

    8.3.3 使用Chart.js展现指标数据 205

    8.4 处理客户端故障 207

    8.4.1 借助测试防止出现缺陷 207

    8.4.2 探测WebSocket连接故障 209

    8.4.3 通知用户 209

    8.4.4 监控客户端错误 211

    8.5 小结 211

     

    第三部分 高级话题

     

    第9章 反应式流 215

    9.1 为什么要有反应式流 215

    9.1.1 带有非阻塞回压功能的流 216

    9.1.2 操作异步流 217

    9.2 Akka Streams简介 218

    9.2.1 核心原理 218

    9.2.2 操作流式的tweet数据 219

    9.3 小结 230

    第10章 部署反应式Play应用 231

    10.1 为Play应用的生产环境部署做好准备 232

    10.1.1 创建用于部署的简单应用 232

    10.1.2 使用Selenium编写和运行测试 234

    10.1.3 为应用的生产部署做好准备 236

    10.2 搭建持续集成环境 239

    10.2.1 在Docker中运行Jenkins 239

    10.2.2 通过配置Jenkins来构建应用 241

    10.3 部署应用 243

    10.3.1 部署到Clever Cloud 243

    10.3.2 部署到自己的服务器上 245

    10.3.3 该选择哪种部署模式 248

    10.4 小结 248

    第11章 测试反应式Web应用 249

    11.1 测试反应式特质 249

    11.1.1 测试响应性 250

    11.1.2 测试弹性 250

    11.1.3 测试适应性 251

    11.1.4 在哪里进行测试? 251

    11.2 测试单个反应式组件 251

    11.2.1 测试单个组件的响应性 252

    11.2.2 测试单个组件的弹性 256

    11.3 测试整个反应式应用 259

    11.3.1 创建生成随机数的简单应用 259

    11.3.2 使用Gatling测试弹性 261

    11.3.3 使用Bees with Machine Guns测试扩展性 265

    11.4 小结 270

    附录A 安装Play框架 271

    附录B 推荐读物 275

    附录C 推荐资源 277
查看详情
相关图书 / 更多
反应式Web应用开发
反应-反常扩散过程与连续时间随机游走
李国华、张红 著
反应式Web应用开发
反应式应用开发
蒲成 译;[美]邓肯·德沃尔(Duncan DeVore);[美]肖恩·沃尔什(Sean Walsh);[美]布赖恩·哈纳菲(Brian Hanafee)
反应式Web应用开发
反应型含磷阻燃固化剂合成工艺及阻燃环氧树脂材料研发
张宏坤 著
反应式Web应用开发
反应工程(张贻亮)
张贻亮 主编
反应式Web应用开发
反应堆结构材料辐照效应高性能计算
胡长军;杨文;贺新福
反应式Web应用开发
反应器操作与控制(左丹)(第二版)
左丹 主编;何秀娟 副主编
反应式Web应用开发
反应器操作与控制(左丹)
左丹 著
反应式Web应用开发
反应性气体等离子体理论及应用研究
刘相梅 著
反应式Web应用开发
反应堆物理中的共振自屏计算
张乾、吴宏春、曹良志 著
反应式Web应用开发
反应流:理论与应用
[美]罗伯特·J. 基(Robert J. Kee)
反应式Web应用开发
反应式编程实战 使用RxJava 2.x开发Android应用
[芬兰]蒂莫·图奥米宁(Timo Tuominen)著 韩义波 译
反应式Web应用开发
反应式设计模式
[美]罗兰·库恩(Roland Kuhn)布赖恩·哈纳菲
您可能感兴趣 / 更多
反应式Web应用开发
沉落者(伯恩哈德经典小说中文版首次翻译出版,厄普代克、卡尔维诺、桑塔格、帕慕克、耶利内克推崇的文学大师)
[奥地利]托马斯·伯恩哈德 著;马文韬 译
反应式Web应用开发
大家小书 青春版 生命是什么
[奥地利]薛定谔 著;傅渥成 王雨晨 译
反应式Web应用开发
薛定谔:生命、意识与物质 世界科普名著经典译丛
[奥地利]埃尔温·薛定谔
反应式Web应用开发
犯罪心理学(一部逻辑缜密的专业之作,带你认识人性的幽微之处。被欧美诸多执法机构奉为犯罪侦查学教材)
[奥地利]汉斯·格罗斯
反应式Web应用开发
国家空间立法 : 对比与评估分析
[奥地利]安妮特·弗罗里希(Annette Froehlich);[奥地利]文森特·塞芬加(Vincent Seffinga)
反应式Web应用开发
弗洛伊德:日常生活中的精神病理学
[奥地利]西格蒙得·弗洛伊德
反应式Web应用开发
生态语言学手册:语言.生态与环境(当代国外语言学与应用语言学文库(升级版))
[奥地利]Alwin Fill;[德]Peter Mühlh.usler
反应式Web应用开发
人坐在世界的边缘,笑(套装共5册)
[奥地利]菲利普·韦斯(Philipp;Weiss
反应式Web应用开发
大自然是个发明家(走进奇妙的仿生学世界)
[奥地利]梅兰妮·莱布尔
反应式Web应用开发
小老鼠碰上三只猫
[奥地利]琳达·沃夫格鲁贝
反应式Web应用开发
公猫雷奥
[奥地利]琳达·沃夫格鲁贝
反应式Web应用开发
我画了一个神奇动物
[奥地利]萨拉·诺伊曼