ASP.NET Core微服务实战 在云环境中开发、测试和部署跨平台服务
作者:(美)凯文 霍夫曼(Kevin Hoffman) 著 陈计节 译
出版时间: 2019年版
内容简介
■ 领会测试驱动、API 优先的开发理念■ 通过创建和消费后端服务(如数据库和队列)与其他服务交互■ 构建依赖于外部数据源的微服务■ 学习事件溯源(以事件为中心的持久化方法)■ 使用 ASP.NET Core 开发适合部署在云环境的 Web 应用■ 开发一个消费其他服务或被其他服务消费的微服务■ 创建可接受外部配置的服务和应用■ 探索用于保护ASP.NET Core 微服务和应用的方法
目录
目 录
第1章 ASP.NET Core基础 1
1.1 核心概念 1
1.1.1 CoreCLR 1
1.1.2 CoreFX 2
1.1.3 .NET Platform Standard 3
1.1.4 ASP.NET Core 3
1.2 安装 .NET Core 4
1.3 开发控制台应用 5
1.4 开发个 ASP.NET Core 应用 8
1.4.1 向项目添加 ASP.NET 包 8
1.4.2 添加 Kestrel 服务器 9
1.4.3 添加启动类和中间件 10
1.4.4 运行应用 12
1.5 本章小结 12
第2章 持续交付 15
2.1 Docker 简介 15
2.1.1 安装 Docker 16
2.1.2 运行 Docker 镜像 16
2.2 使用 Wercker 持续集成 18
2.3 用 Wercker 构建服务 18
2.3.1 安装 Wercker 命令行工具 19
2.3.2 添加wercker.yml配置文件 20
2.3.3 运行 Wercker 构建 22
2.4 使用 CircleCI 持续集成 22
2.5 部署到 docker hub 24
2.6 本章小结 25
第3章 使用ASP.NET Core开发微服务 27
3.1 微服务的定义 27
3.2 团队服务简介 28
3.3 API优先的开发方式 29
3.3.1 为什么要用 API 优先 29
3.3.2 团队服务的 API 30
3.4 以测试优先的方式开发控制器 31
3.4.1 注入一个模拟的仓储 38
3.4.2 完成单元测试套件 40
3.5 创建持续集成流水线 42
3.6 集成测试 43
3.7 运行团队服务的 Docker 镜像 46
3.8 本章小结 47
第4章 后端服务 49
4.1 微服务生态系统 49
4.1.1 资源绑定 51
4.1.2 服务间模型共用的策略 51
4.2 开发位置服务 53
4.3 优化团队服务 56
4.3.1 使用环境变量配置服务的URL 56
4.3.2 消费RESTful服务 57
4.3.3 运行服务 59
4.4 本章小结 62
第5章 创建数据服务 63
5.1 选择一种数据存储 63
5.2 构建Postgres仓储 64
5.2.1 创建数据库上下文 65
5.2.2 实现位置记录仓储接口 66
5.2.3 用EF Core内存提供程序进行测试 68
5.3 数据库是一种后端服务 68
5.4 对真实仓储进行集成测试 71
5.5 试运行数据服务 73
5.6 本章小结 76
第6章 事件溯源与CQRS 77
6.1 事件溯源简介 77
6.1.1 事实由事件溯源而来 78
6.1.2 事件溯源的定义 78
6.1.3 拥抱终一致性 79
6.2 CQRS模式 80
6.3 事件溯源与CQRS实战——附近的团队成员 82
6.3.1 位置报送服务 83
6.3.2 事件处理器 92
6.3.3 事实服务 98
6.3.4 位置接近监控器 99
6.4 运行示例项目 99
6.4.1 启动服务 100
6.4.2 提交示例数据 101
6.5 本章小结 103
第7章 开发ASP.NET Core Web应用 105
7.1 ASP.NET Core基础 105
7.1.1 添加 ASP.NET MVC 中间件 108
7.1.2 添加控制器 109
7.1.3 添加模型 110
7.1.4 添加视图 110
7.1.5 从JavaScript中调用REST API 112
7.2 开发云原生 Web 应用 115
7.2.1 API 优先 116
7.2.2 配置 116
7.2.3 日志 116
7.2.4 会话状态 117
7.2.5 数据保护 117
7.2.6 后端服务 118
7.2.7 环境均等 118
7.2.8 端口绑定 119
7.2.9 遥测 119
7.2.10 身份验证和授权 119
7.3 本章小结 120
第8章 服务发现 121
8.1 回顾云原生特性 121
8.1.1 配置外置 121
8.1.2 后端服务 122
8.2 Netflix Eureka简介 123
8.3 发现和广播ASP.NET Core服务 125
8.3.1 服务注册 126
8.3.2 发现并消费服务 127
8.4 DNS以及由平台支持的服务发现 130
8.5 本章小结 131
第9章 微服务系统的配置 133
9.1 在 Docker中使用环境变量 134
9.2 使用Spring Cloud配置服务器 135
9.3 使用etcd 配置微服务 138
9.4 本章小结 144
第10章 应用和微服务安全 145
10.1 云环境中的安全 145
10.1.1 内网应用 145
10.1.2 Cookie和Forms身份验证 146
10.1.3 云环境中的应用内加密 146
10.1.4 Bearer令牌 147
10.2 ASP.NET Core Web应用安全 148
10.2.1 OpenID Connect基础 148
10.2.2 使用OIDC保障ASP.NET Core应用的安全 150
10.2.3 OIDC中间件和云原生 157
10.3 保障ASP.NET Core微服务的安全 158
10.3.1 使用完整OIDC安全流程保障服务的安全 159
10.3.2 使用客户端凭据保障服务的安全 160
10.3.3 使用Bearer令牌保障服务的安全 160
10.4 本章小结 164
第11章 开发实时应用和服务 165
11.1 实时应用的定义 165
11.2 云环境中的 WebSocket 166
11.2.1 WebSocket 协议 167
11.2.2 部署模式 167
11.3 使用云消息服务 168
11.4 开发位置接近监控服务 169
11.4.1 创建接近监控服务 169
11.4.2 为实时接近监控服务创建界面 178
11.5 本章小结 179
第12章 设计汇总 181
12.1 识别并解决反模式 181
12.2 继续辩论组合式微服务 184
12.2.1 使用断路器缓解风险 185
12.2.2 消除同步的组合模式 187
12.3 接下来,还要做什么? 188