下载地址: 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

微软出品:.net 微服务:容器化.net架构指南相关推荐

  1. 微服务容器化最短路径,微服务 on Serverless 最佳实践

    简介:阿里云Serverless应用引擎(SAE)初衷是让客户不改任何代码,不改变应用部署方式,就可以享受到微服务+K8s+Serverless的完整体验,开箱即用免运维. 前言 微服务作为一种更灵活 ...

  2. 当微服务遇上 Serverless | 微服务容器化最短路径,微服务 on Serverless 最佳实践

    简介: 阿里云Serverless应用引擎(SAE)初衷是让客户不改任何代码,不改变应用部署方式,就可以享受到微服务+K8s+Serverless的完整体验,开箱即用免运维. 前言 微服务作为一种更灵 ...

  3. 公开课|百度天工物联网基础平台的微服务容器化落地实践

    本文整理自中信出版社<物联网时代> 在采用IoT的世界中,改变既是IoT引发的,也是你的生活中无法回避的事实. 弗洛伦斯·赫德森,是Internet2(Internet2,即I2,是指由美 ...

  4. 微服务容器化运维:微博容器运维平台DCP

    微服务容器化运维系列的前两期,我给你详细介绍了微服务容器化后如何运维的几个关键问题:镜像仓库.资源调度.容器调度.服务编排,这些问题的产生都是因为微服务部署的节点从一台台物理机或者虚拟机变成了一个个容 ...

  5. 有容云:微服务容器化的挑战和解决之道

    注: 本文根据6月是18日七牛云微服务课堂-微服务容器化的挑战和解决之道演讲内容整理而成,演讲者:有容云联合创始人兼首席架构师马洪喜,与大家一起探讨了如何通过容器技术将微服务和 DevOps 落地. ...

  6. 【云原生】docker+k8微服务容器化实战

    博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各 ...

  7. [Nacos][Rancher][微服务] 容器化Docker部署的Nacos拒接连接

    问题 2022-11-21 16:16:37.836 |-ERROR [main] com.alibaba.nacos.client.naming [552] -| request: /nacos/v ...

  8. 《docker+k8s微服务容器化实践》笔记2

    5-3 集群环境搭建_A  5-4 集群环境搭建_B  5-5 集群环境搭建_C 这次开始动手操作,首先是Mesos的安装,怎么来安装Mesos.源码:https://github.com/limin ...

  9. 实战 Docker+Kubernetes 微服务容器化(二)-微服务带来的问题及解决方案分析

    1 微服务架构带来的问题 2 微服务间如何通讯 2.1 从通讯模式角度考虑 2.2 从通讯协议角度考虑 REST API RPC MQ 最常用的就是 RPC 如何选择 RPC 框架 3 服务发现.部署 ...

最新文章

  1. 3 种场景 @Transactional 失效的解决方法
  2. 设计模式 装饰者模式 带你重回传奇世界
  3. python -pass的用法
  4. 没有bug队——加贝——Python 练习实例 19,20
  5. 虚拟化服务器内存容量与数量,虚拟化服务器内存容量与数量
  6. Head First设计模式读书笔记十 第十一章 代理模式
  7. java工程窗口程序_java工程开发之图形化界面之(第二课)
  8. PAT 乙级 1003. 我要通过!(20) Java版
  9. 6.4 SQL Server 加密
  10. Hive排名函数入门
  11. LiveNVR传统安防摄像机互联网直播-主要功能模块及相关技术特点与性能指标
  12. java多商户商城系统源码下载
  13. wap jsp 开发
  14. MySQL–ROW_NUMBER
  15. 不知道rar压缩包密码可以解密么,rar压缩包有密码怎么解开?
  16. HackingLab脚本关
  17. 笔记本计算机无法开机怎么办,笔记本开机没反应,详细教您笔记本电脑开不了机怎么处理...
  18. python三种运算符_Python 海象运算符 (:=) 的三种用法
  19. 【每日最爱一句】2013.07.10
  20. linux文件同步方法,inotify + rsync实现linux文件实时同步

热门文章

  1. 以考代评职称需要聘任嘛_如何以正确的方式聘用:工程师对技术招聘的看法
  2. 安装 Win10+GTX1050ti+cuda8.0+cuDNN5.1+Tensorflow-gpu1.2
  3. 括号配对检测python123_括的意思
  4. 地形湿度指数(TWI)获取教程
  5. 二.RIDE工具使用说明
  6. 云效平台性能测试功能:一个基于Jmeter的性能压测平台
  7. 阿里云设置密钥对登录服务器
  8. 【DeepMind】新算法MuZero在Atari基准上取得了新SOTA效果,成果问鼎Nature
  9. 基于nexus搭建golang代码下载代理缓存私服
  10. 安卓眼球追踪_iPhone 11 Pro 可配合 Eyeware Beam 眼球追踪玩 PC 大屏游戏