在这里插入图片描述

下载地址: https://aka.ms/microservicesebook
中文下载地址:https://dotnet.microsoft.com/download/thank-you/microservices-architecture-ebook-zh-cn
目录


引言 … 1
关于本书 … 1
版本 … 1
本书不包含的内容 … 2
本书的目标读者 … 2
如何使用本书 … 2
微服务和容器示例应用:ESHOPONCONTAINERS … 2
请向我们发送您的反馈 … 3
容器和DOCKER简介 … 4
什么是DOCKER? … 5
Docker容器和虚拟机之间的对比 … 6
DOCKER术语 … 7
DOCKER容器、镜像和注册表… 8
为DOCKER容器选择.NET CORE或.NET FRAMEWORK … 10
一般建议 … 10
什么情况下选择.NET CORE开发基于DOCKER容器的应用程序 … 11
跨平台开发和部署 … 11
基于容器从头开发一个新项目 … 12
在容器上创建和部署微服务 … 12
在可扩展的系统中进行高密度部署 … 12
什么情况下选择.NET FRAMEWORK开发容器化的应用程序 … 13
将现有应用程序直接迁移到Windows容器中 … 13
需要使用.NET Core不支持的第三方库和NuGet包 … 13
需要使用.NET Core不支持的.NET技术 … 13
需要使用不支持.NET Core的平台或API … 14
决策表:什么情况下,在DOCKER中使用怎样的.NET框架 … 14
.NET容器应该选择哪种操作系统 … 15
官方.NET DOCKER镜像 … 16
.NET Core和Docker镜像为开发与生产提供的优化措施 … 17
基于容器和微服务的应用架构 … 19
v
愿景 … 19
容器设计原则 … 19
容器化单体应用 … 20
用容器部署单体应用 … 22
发布单容器应用到Azure应用服务 … 22
DOCKER应用的状态和数据 … 23
面向服务的架构 … 25
微服务架构 … 25
微服务的数据自治 … 27
微服务和限界上下文模式的关系 … 29
逻辑架构和物理架构 … 29
分布式数据管理的挑战和解决方案 … 30
识别微服务的领域模型边界 … 34
客户端微服务直连和API网关模式 … 37
微服务间的通信 … 42
创建、改进和控制微服务API的版本和契约 … 50
微服务的可发现性和服务注册 … 51
创建基于多个微服务组合界面,其中包括由微服务生成的可视化UI外观和布局 … 52
微服务的适应性和高可用性 … 54
微服务的运行状况管理和诊断 … 54
编排高扩展和高可用的多容器微服务 … 56
在Microsoft Azure中使用容器编排引擎 … 58
使用Azure容器服务 … 59
使用Azure Service Fabric … 61
无状态和有状态的微服务 … 64
基于DOCKER的应用程序开发流程 … 65
愿景 … 65
DOCKER应用程序的开发环境… 65
开发工具的选择:IDE还是编辑器? … 65
支持Docker容器的.NET语言和框架 … 66
DOCKER应用程序的开发流程… 66
基于Docker容器的应用程序开发流程… 66
使用Visual Studio开发容器的简化流程 … 78
在Dockerfile中用PowerShell命令创建Windows容器 … 79
在LINUX或WINDOWS NANO SERVER上部署单容器.NET CORE WEB应用程序 … 81
愿景 … 81
vi
应用程序概览 … 82
DOCKER支持 … 82
疑难解答 … 84
停止Docker容器 … 85
给项目添加Docker支持 … 85
将传统的单体.NET FRAMEWORK应用程序迁移到WINDOWS容器中 … 86
愿景 … 86
容器化单体应用程序的好处 … 87
可能的迁移路径 … 88
应用程序概览 … 88
平移 … 90
从现有.NET CORE目录微服务获取数据 … 92
开发环境和生产环境 … 92
设计开发多容器和基于微服务的.NET应用程序 … 93
愿景 … 93
设计面向微服务的应用程序 … 93
应用规范 … 93
开发团队环境 … 94
选择架构 … 94
基于微服务的解决方案的优点 … 96
微服务解决方案的缺点 … 97
外部与内部架构和设计模式 … 98
新世界:多种架构模式和多语言微服务 … 99
创建简单的数据驱动的CRUD微服务 … 101
设计简单的CRUD微服务 … 101
使用ASP.NET Core实现简单的CRUD微服务 … 102
从ASP.NET Core Web API生成Swagger描述元数据 … 109
使用DOCKER-COMPOSE.YML定义多容器应用程序 … 113
一个简单的Web Service API容器 … 115
使用docker-compose文件面向多种目标环境 … 116
使用多个docker-compose文件处理多个环境 … 117
构建优化的ASP.NET Core Docker镜像 … 123
从构建(持续集成)容器构建应用程序 … 123
使用容器运行数据库服务 … 127
将SQL Server作为具有微服务相关数据库的容器运行 … 127
在Web应用程序启动时填充种子测试数据 … 128
vii
EF Core InMemory数据库与作为容器运行的SQL Server… 129
使用在容器中运行的Redis缓存服务… 130
在微服务(集成事件)之间实现基于事件的通信 … 131
在生产环境中使用消息代理和服务总线 … 132
集成事件 … 132
事件总线 … 133
删除重复的集成事件消息 … 146
测试ASP.NET CORE服务和WEB应用 … 148
实现ASP.NET Core Web API的单元测试 … 148
为每个微服务实施集成和功能测试 … 149
在多容器应用程序上实现服务测试 … 150
使用IHOSTEDSERVICE和BACKGROUNDSERVICE类在微服务中实现后台任务… 151
在WebHost或Host中注册托管服务 … 152
IHostedService接口 … 153
使用从BackgroundService基类派生的自定义托管服务类来实现IHostedService … 153
在微服务中通过DDD和CQRS应对业务复杂性 … 158
愿景 … 158
在微服务中运用简化的CQRS和DDD模式 … 159
将CQRS和CQS方式应用到ESHOPONCONTAINERS的DDD微服务中 … 161
CQRS和DDD模式不是顶级架构 … 162
在CQRS微服务中实现读取/查询 … 162
使用独立于领域模型约束且专为客户端应用创建的ViewModel … 164
使用Dapper作为微型ORM实现查询 … 164
动态与静态的ViewModel … 164
设计面向DDD的微服务 … 168
保持相对较小的微服务上下文边界 … 169
DDD微服务中的分层 … 169
设计微服务领域模型 … 173
领域实体模式 … 173
值对象模式 … 175
聚合模式 … 176
聚合根或根实体模式 … 176
使用.NET CORE实现微服务领域模型 … 178
自定义.NET标准库中的领域模型结构 … 178
在自定义.NET标准库中组织聚合 … 179
以POCO类实现领域实体 … 179
在领域实体中封装数据 … 181
viii
Seedwork(可重复用于领域模型的基类和接口) … 183
领域模型层的仓储契约(接口) … 186
实现值对象 … 187
使用枚举类代替C#语言的enum类型 … 193
在领域模型层设计验证 … 196
在领域模型层实现验证 … 196
客户端验证(表示层验证) … 198
领域事件的设计和实现 … 200
什么是领域事件? … 200
领域事件和集成事件 … 201
实现领域事件 … 203
引发领域事件 … 204
跨聚合的单个事务与跨聚合最终一致性 … 206
领域事件分派程序:从事件到事件处理程序的映射 … 207
如何订阅领域事件 … 209
如何处理领域事件 … 209
领域事件的结论 … 210
设计持久层基础架构 … 211
仓储模式 … 211
规格模式 … 215
使用ENTITY FRAMEWORK CORE实现持久层基础架构 … 216
Entity Frameowrk简介 … 216
从DDD视角看Entity Framework Core的基础架构 … 216
使用Entity Framework Core实现自定义仓储 … 218
IoC容器中的EF DbContext和IUnitOfWork实例生命周期 … 220
IoC容器中仓储实例的生命周期 … 221
表映射 … 222
实现规格模式 … 224
使用NOSQL数据库作为持久基础架构 … 226
Azure Cosmos DB和原生Cosmos DB API简介 … 227
针对MongoDB和Azure Cosmos DB实现.NET代码 … 229
设计微服务应用层和WEB API … 235
使用SOLID原则和依赖注入 … 235
使用WEB API实现微服务应用层 … 236
使用依赖注入将基础架构对象注入到应用层 … 236
实现命令和命令处理器模式 … 240
命令处理管道:如何触发命令处理器 … 246
ix
使用中介者模式(MediatR)实现命令处理管道 … 248
在使用MeadiatR中的行为处理命令时应用横切关注点 … 253
实现弹性应用 … 257
愿景 … 257
处理局部故障 … 257
处理局部故障的策略 … 259
使用指数补偿实现重试 … 260
实现断路器模式 … 267
从eShopOnContainers使用ResilientHttpClient工具类 … 269
在eShopOnContainers中测试重试 … 270
在eShopOnContainers中测试断路器 … 271
在重试策略中添加抖动策略 … 272
运行状况监测 … 273
在ASP.NET Core服务中实现运行状况检查 … 273
使用Watchdog … 277
使用编排引擎时的运行状况检查 … 278
高级监视:可视化、分析和警报 … 278
保护.NET微服务和WEB应用程序 … 279
在.NET微服务和WEB应用程序中实现验证 … 279
使用ASP.NET Core Identity验证 … 280
使用外部提供器验证 … 280
使用Bearer token验证 … 282
.NET微服务和WEB应用程序的授权 … 285
实现基于角色的授权 … 286
实现基于策略的授权 … 287
在开发中安全存储应用程序密钥 … 288
在环境变量中存储密钥 … 288
使用ASP.NET Core密钥管理器存储密钥 … 289
在产品中使用AZURE密钥保管库保护密钥 … 289
关键结论 … 292

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐