Azure、DevOps和微服务软件架构实战(第2版)

Azure、DevOps和微服务软件架构实战(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
2023-01
版次: 1
ISBN: 9787302618508
定价: 128.00
装帧: 其他
开本: 16开
纸张: 胶版纸
3人买过
  • 软件架构是指可以简化软件开发过程并提高应用程序质量的实现架构和系统。本书在第1版的基础上进行了全面修订和扩展,面向.NET 5和C# 9,介绍了一些能够助你成为一名卓越的软件架构师所需的关键技能、知识和**实践。   第2版增加了对软件架构原则的额外讲述、Azure服务结构、Kubernetes和Blazor等新章节。另外,还增加了关于安全性、微服务和DevOps的讨论,以及软件开发周期的GitHub部署。   首先,介绍如何将用户需求转换为软件架构需求,并探讨功能性需求和非功能性需求之间的差异。然后,探讨如何为基础设施选择云解决方案,以及如何在基于云的环境中管理应用程序。最后,讲解软件设计模式和各种软件方法,从而帮助你解决开发过程中遇到的常见问题。   学习完本书,你将能够构建并交付可满足组织业务需求的高度可扩展的企业应用程序。 主要内容 ● 使用多种技术克服现实工作中的架构挑战,并从设计层面解决问题 ● 应用分层架构、面向服务架构和微服务架构 ● 利用容器、Docker、Kubernetes和Blazor等工具高效管理微服务 ● 快速使用Azure工具和功能提供全局解决方案 ● 使用C# 9及其新功能编程和维护Azure功能 ● 了解什么情况下最适合使用测试驱动开发方法 ● 编写自动化功能测试用例 ● 充分利用DevOps原则实现CI/CD环境 Gabriel Baptista是一名软件架构师,他领导技术团队跨项目使用Microsoft平台完成了多个与零售和工业相关的项目。他是Azure解决方案方面的专家,也是一位讲授软件工程、开发和架构等课程的教授,并出版了一些与计算机相关的书籍。他在知名.NET技术社区网站Microsoft Channel 9上演讲,还与他人一起创办了SMIT公司,主要开展开发解决方案方面的业务,他将DevOps理念视为满足用户需求的关键。

    “致我亲爱的家人Murilo、Heitor和Denise,他们经常鼓励我。感谢我的父母Elisabeth和Virgílio,以及我的祖母、外祖母Maria和Lygia,他们一直鼓励我。特别感谢Packt团队,全体成员的辛勤劳动保证了这本书的优秀质量。”

    Francesco Abbruzzese是MVC Controls Toolkit和Blazor Controls Toolkit程序库的作者。他从 ASP.NET MVC第一个版本就开始为Microsoft Web技术栈的传播和推广做贡献。他的公司Mvcct Team提供一些与Web技术相关的Web应用程序、工具和服务。他曾从事人工智能系统相关的工作(例如为金融机构实施了首批决策支持系统),后来转型去做电视游戏(如当时排名前10位的Puma Street Soccer)。

    “感谢亲爱的父母,我的一切都来自他们。特别感谢Packt全体员工以及为改进本书整体代码质量做出贡献的审稿人员。”  

    第1章  软件架构的重要性 1

    1.1  什么是软件架构 1

    1.2  软件开发过程模型 4

    1.2.1  传统的软件开发过程模型 4

    1.2.2  敏捷软件开发过程模型 6

    1.3  收集正确信息以设计高质量软件 10

    1.3.1  了解需求收集过程 10

    1.3.2  收集准确的用户需求 10

    1.3.3  分析需求 11

    1.3.4  将需求整理成规范的文档 11

    1.3.5  复核用户需求文档 13

    1.4  设计技术 13

    1.4.1  设计思维 13

    1.4.2  设计冲刺 14

    1.5  收集需求阶段就要考虑的常见问题 14

    1.5.1  问题1:网站太慢,无法打开网页 14

    1.5.2  问题2:用户的需求未得到正确实现 16

    1.5.3  问题3:系统会在什么环境使用 17

    1.6  World Wild Travel Club案例简介 17

    1.7  本章小结 19

    1.8   练习题 19

    第2章  非功能性需求 21

    2.1  技术性要求 21

    2.2  使用Azure和.NET 5实现可扩展性、可用性和可恢复性 21

    2.2.1  在Azure中创建可扩展的Web应用程序 22

    2.2.2  使用.NET 5创建可扩展的Web应用程序 26

    2.3  C#编程时需要考虑的性能问题 29

    2.3.1  字符串串联 29

    2.3.2  异常 30

    2.3.3  多线程 31

    2.4  易用性——插入数据为什么会耗费太长时间 32

    2.4.1  如何设计快速选择 33

    2.4.2  从大量的条目中进行选择 34

    2.5  .NET Core的互操作性 35

    2.6  在设计层面实现安全性 37

    2.7  用例——了解.NET Core项目的主要类型 38

    2.8  本章小结 40

    2.9  练习题 40

    第3章  使用Azure DevOps记录需求 41

    3.1  技术性要求 41

    3.2  Azure DevOps介绍 41

    3.3  使用Azure DevOps 组织工作 45

    3.3.1  Azure DevOps存储库 45

    3.3.2  包源 47

    3.3.3  测试计划 49

    3.3.4  管道 50

    3.4  使用Azure DevOps管理系统需求 50

    3.4.1  Epic工作项 50

    3.4.2  Feature工作项 51

    3.4.3  Product Backlog工作项/ User Story工作项 51

    3.5  用例——在Azure DevOps中展现WWTravelClub 51

    3.6  本章小结 55

    3.7  练习题 55

    第4章 确定基于云的最佳解决方案 56

    4.1  技术性要求 56

    4.2  不同的软件部署模型 56

    4.2.1  IaaS和Azure服务 57

    4.2.2  PaaS—— 开发者的世界 59

    4.2.3  SaaS——只需要登录即可开始 63

    4.2.4  无服务器解决方案 64

    4.3  为什么混合应用程序在许多情况下如此有用 64

    4.4  用例——哪一种才是最好的

    云解决方案 65

    4.5  本章小结 66

    4.6  练习题 66

    第5章 在企业应用中应用微服务架构 67

    5.1  技术性要求 67

    5.2  什么是微服务 67

    5.2.1  微服务与模块概念的演变 68

    5.2.2  微服务设计原则 69

    5.2.3  容器和Docker 71

    5.3  微服务什么时候有帮助 72

    5.3.1  分层架构和微服务 72

    5.3.2  什么时候值得考虑微服务架构 74

    5.4  .NET如何处理微服务 75

    5.4.1  .NET通信工具 75

    5.4.2  可恢复性任务执行 76

    5.4.3  使用通用宿主 77

    5.4.4  Visual Studio对Docker的支持 80

    5.4.5  Azure和Visual Studio对微服务编排的支持 84

    5.5  管理微服务需要哪些工具 84

    5.6  本章小结 86

    5.7  练习题 86

    第6章 Azure Service Fabric 87

    6.1  技术性要求 87

    6.2  定义和配置Azure Service Fabric群集 90

    6.2.1  步骤1:基本信息 90

    6.2.2  步骤2:群集配置 91

    6.2.3  步骤3:安全配置 93

    6.3  用例——购买记录微服务 95

    6.3.1  确保消息幂等性 97

    6.3.2  交互程序库 99

    6.3.3  实现通信的接收端 100

    6.3.4  实现服务逻辑 102

    6.3.5  定义微服务的宿主 106

    6.3.6  与服务进行通信 107

    6.3.7  测试应用程序 108

    6.4  本章小结 109

    6.5  练习题 109

    第7章 Azure Kubernetes服务 110

    7.1  技术性要求 110

    7.2  Kubernetes 基础 110

    7.2.1  .yaml 文件 111

    7.2.2  ReplicaSet和Deployment 112

    7.2.3  StatefulSet 114

    7.2.4  Service 114

    7.2.5  Ingress 118

    7.3  与Azure Kubernetes群集交互 119

    7.3.1  使用 Kubectl 121

    7.3.2  部署留言板示例应用程序 122

    7.4  Kubernetes高级概念 124

    7.4.1  需要永久存储 125

    7.4.2  Kubernetes Secret 126

    7.4.3  存活性和就绪性检查 127

    7.4.4  自动缩放 128

    7.4.5  Helm:安装入口控制器 129

    7.5  本章小结 131

    7.6  练习题 132

    第8章 在C#中与数据进行交互——Entity Framework Core 133

    8.1  技术性要求 133

    8.2  ORM基础 134

    8.3  配置Entity Framework Core 136

    8.3.1  定义数据库实体 137

    8.3.2  定义映射集合 139

    8.3.3  完成映射配置 139

    8.4  Entity Framework Core迁移 141

    8.5  使用Entity Framework Core查询和更新数据 144

    8.5.1  将数据返回给表示层 147

    8.5.2  直接发出SQL命令 148

    8.5.3  处理事务 149

    8.6  数据层的部署 149

    8.7  Entity Framework Core的高级功能 150

    8.8  本章小结 151

    8.9  练习题 151

    第9章 在云上选择数据存储 152

    9.1  技术性要求 152

    9.2  不同用途的不同存储库 153

    9.2.1  关系数据库 153

    9.2.2  NoSQL数据库 155

    9.2.3  Redis 156

    9.2.4  Azure存储账户 156

    9.3  在结构化存储和NoSQL存储之间进行选择 157

    9.4  Azure Cosmos DB—— 一种管理跨区域数据库的选择 158

    9.4.1  创建一个Azure Cosmos DB账户 158

    9.4.2  创建Azure Cosmos集合 159

    9.4.3  访问Azure Cosmos 数据 160

    9.4.4  定义数据库一致性 160

    9.4.5  Cosmos DB客户端 162

    9.4.6  Cosmos DB的Entity Framework Core提供程序 163

    9.5  用例——存储数据 164

    9.6  本章小结 167

    9.7  练习题 167

    第10章  Azure函数应用 168

    10.1  技术性要求 168

    10.2  Azure函数应用程序 168

    10.2.1  消耗计划 169

    10.2.2  函数高级计划 169

    10.2.3  应用服务计划 170

    10.3  使用C#运行Azure函数应用 170

    10.4  维护Azure函数应用 174

    10.5  用例——通过Azure函数应用发送电子邮件 176

    10.5.1  第一步:创建Azure队列存储 176

    10.5.2  第二步:创建发送电子邮件的函数 178

    10.5.3  第三步:创建Queue Trigger函数 180

    10.6  本章小结 181

    10.7  练习题 181

    第11章  设计模式与.NET 5实现 182

    11.1  技术性要求 182

    11.2  设计模式及其目的 182

    11.2.1  建造者模式 183

    11.2.2  工厂模式 185

    11.2.3  单例模式 186

    11.2.4  代理模式 188

    11.2.5  命令模式 189

    11.2.6  发布者-订阅者模式 190

    11.2.7  依赖注入模式 191

    11.3  .NET 5中可用的设计模式 192

    11.4  本章小结 193

    11.5  练习题 193

    第12章  不同领域的软件解决方案 194

    12.1  技术性要求 195

    12.2  什么是软件领域 195

    12.3  理解领域驱动设计 196

    12.4  实体和值对象 198

    12.5  使用SOLID原则映射领域 201

    12.6  聚合 203

    12.7  存储库和工作单元模式 204

    12.8  DDD实体和Entity Framework Core 205

    12.9  命令查询职责分离模式 206

    12.10  命令处理程序和领域事件 208

    12.11  事件溯源 210

    12.12  用例——WWTravelClub的领域 210

    12.13  本章小结 212

    12.14  练习题 212

    第13章  在C# 9中实现代码复用 214

    13.1  技术性要求 214

    13.2  代码复用的原则 214

    13.2.1  什么不是代码复用 215

    13.2.2  什么是代码复用 215

    13.3  开发生命周期中的可复用性 216

    13.4  使用.NET 5或.NET Standard进行代码复用 217

    13.5  在C#中处理代码复用 218

    13.5.1  面向对象分析 218

    13.5.2  泛型 220

    13.6  如果代码不可复用怎么办 220

    13.7  如何推广可复用的程序库 221

    13.7.1  使用DocFX文档化.NET程序库 221

    13.7.2  使用Swagger文档化Web API 222

    13.8  用例——复用代码以快速交付优质、安全的软件 223

    13.9  本章小结 223

    13.10  练习题 224

    第14章  使用.NET Core实现面向服务的架构 225

    14.1  技术性要求 225

    14.2  SOA方法的原则 226

    14.3  SOAP Web服务 228

    14.4  REST Web服务 229

    14.4.1  服务类型兼容性规则 229

    14.4.2  REST与原生HTTP功能 230

    14.4.3  REST语言中的方法示例 232

    14.4.4  OpenAPI标准 232

    14.4.5  REST服务的身份验证和鉴权 233

    14.5  如何在.NET 5中处理SOA 235

    14.5.1  对SOAP客户端的支持 235

    14.5.2  对gRPC的支持 236

    14.5.3  ASP.NET Core简介 236

    14.5.4  使用ASP.NET Core实现REST服务 239

    14.6  用例——公开WWTravelClub的旅行方案 248

    14.7  本章小结 252

    14.8  练习题 253

    第15章  ASP.NET Core MVC 254

    15.1  技术性要求 254

    15.2  Web应用程序的表示层 254

    15.3  ASP.NET Core MVC架构 255

    15.3.1  ASP.NET Core管道工作原理 255

    15.3.2  加载配置数据并与options框架一起使用 258

    15.3.3  定义ASP.NET Core MVC管道 261

    15.3.4  定义控制器和ViewModel 265

    15.3.5  Razor视图 267

    15.3.6  复用视图代码 273

    15.4  ASP.NET Core最新版本的新增功能 275

    15.5  ASP.NET Core MVC和设计原则的关系 276

    15.5.1  ASP.NET Core管道的优点 277

    15.5.2  服务器端和客户端验证 277

    15.5.3  ASP.NET Core多语言支持 278

    15.5.4  MVC模式 280

    15.6  用例 —— 使用ASP.NET Core MVC实现Web应用程序 281

    15.6.1  定义应用程序规范 281

    15.6.2  定义应用程序架构 282

    15.6.3  控制器和视图 293

    15.7  本章小结 298

    15.8  练习题 298

    第16章  Blazor WebAssembly 299

    16.1  技术性要求 299

    16.2  Blazor WebAssembly架构 300

    16.2.1  什么是单页应用程序 300

    16.2.2  加载并启动应用程序 301

    16.2.3  路由 303

    16.3  Blazor页面和组件 304

    16.3.1  组件结构 304

    16.3.2  模板和级联参数 307

    16.3.3  事件 309

    16.3.4  绑定 311

    16.3.5  Blazor如何更新HTML 312

    16.3.6  组件生命周期 313

    16.4  Blazor表单和验证 314

    16.5  Blazor高级功能 316

    16.5.1  对组件和HTML元素的引用 316

    16.5.2  JavaScript互操作性 316

    16.5.3  全球化与本地化 318

    16.5.4  身份验证和授权 318

    16.5.5  与服务器的通信 320

    16.6  Blazor WebAssembly第三方工具 321

    16.7  用例——使用Blazor WebAssembly实现一个简单的应用程序 322

    16.7.1  准备解决方案 322

    16.7.2  实现所需的ASP.NET Core REST API 323

    16.7.3  在服务中实现业务逻辑 325

    16.7.4  实现用户界面 325

    16.8  本章小结 328

    16.9  练习题 328

    第17章  C# 9编码最佳实践 329

    17.1  技术性要求 329

    17.2  越糟糕的程序员,编码越复杂 329

    17.2.1  可维护性指数 330

    17.2.2  圈复杂度 330

    17.2.3  继承深度 333

    17.2.4  类耦合度 334

    17.2.5  源代码行 336

    17.3  使用版本控制系统 336

    17.4  用C#编写安全代码 336

    17.4.1  try-catch 336

    17.4.2  try-finally和using 337

    17.4.3  IDisposable接口 338

    17.5  编写.NET 5代码的提示与技巧 339

    17.6  编写代码时的注意事项 340

    17.7  本章小结 341

    17.8  练习题 341

    第18章  单元测试用例和TDD 342

    18.1  技术性要求 342

    18.2  单元测试和集成测试 342

    18.2.1  对单元测试和集成测试进行自动化 343

    18.2.2  编写自动化单元测试与集成测试 344

    18.2.3  编写验收测试和性能测试 345

    18.3  测试驱动开发 346

    18.4  定义C#测试项目 347

    18.4.1  使用xUnit测试框架 348

    18.4.2  高级测试准备和清理场景 350

    18.4.3  使用Moq模拟接口 351

    18.5  用例 —— 在Azure DevOps中对单元测试进行自动化 352

    18.6  本章小结 359

    18.7  练习题 359

    第19章  使用工具编写更好的代码 360

    19.1  技术性要求 360

    19.2  识别编写良好的代码 360

    19.3  使用C#代码评估工具 361

    19.4  使用扩展工具分析代码 365

    19.4.1  使用Microsoft Code Analysis 2019 365

    19.4.2  使用SonarLint for Visual Studio 2019 365

    19.5  检查分析之后的最终代码 366

    19.6  用例——在应用程序发布之前评估C#代码 367

    19.7  本章小结 368

    19.8  练习题 369

    第20章  DevOps 370

    20.1  技术性要求 370

    20.2  DevOps的描述 371

    20.3  DevOps原则 371

    20.4  Azure DevOps的持续交付 372

    20.4.1  使用Azure管道部署程序包管理应用程序 372

    20.4.2  多阶段环境 379

    20.5  定义持续反馈和相关的DevOps工具 381

    20.5.1  使用Azure Monitor Application Insights监控软件 381

    20.5.2  使用测试和反馈工具实现反馈 384

    20.6  SaaS 388

    20.6.1  使组织适应服务场景 388

    20.6.2  服务场景中的软件开发过程 388

    20.6.3  服务场景在技术层面的可能影响 388

    20.6.4  决定何时采用SaaS解决方案 389

    20.6.5  为服务场景准备解决方案 389

    20.7  用例——WWTravelClub 项目方案 391

    20.8  本章小结 391

    20.9  练习题 392

    第21章  持续集成所带来的挑战 393

    21.1  技术性要求 393

    21.2  持续集成 393

    21.3  持续集成和GitHub 394

    21.4  使用持续集成的风险和挑战 396

    21.4.1  禁用生产环境的持续部署 397

    21.4.2  不完整的功能 398

    21.4.3  不稳定的测试解决方案 400

    21.5  WWTravelClub 项目方案 403

    21.6  本章小结 403

    21.7  练习题 403

    第22章  功能测试自动化 404

    22.1  技术性要求 404

    22.2  功能测试的目的 404

    22.3  在C#中使用单元测试工具来自动化功能测试 406

    22.3.1  测试模拟环境中的应用程序 407

    22.3.2  测试受控应用程序 408

    22.4  用例——自动化功能测试 410

    22.5  本章小结 412

    22.6  练习题 413

     

     
  • 内容简介:
    软件架构是指可以简化软件开发过程并提高应用程序质量的实现架构和系统。本书在第1版的基础上进行了全面修订和扩展,面向.NET 5和C# 9,介绍了一些能够助你成为一名卓越的软件架构师所需的关键技能、知识和**实践。   第2版增加了对软件架构原则的额外讲述、Azure服务结构、Kubernetes和Blazor等新章节。另外,还增加了关于安全性、微服务和DevOps的讨论,以及软件开发周期的GitHub部署。   首先,介绍如何将用户需求转换为软件架构需求,并探讨功能性需求和非功能性需求之间的差异。然后,探讨如何为基础设施选择云解决方案,以及如何在基于云的环境中管理应用程序。最后,讲解软件设计模式和各种软件方法,从而帮助你解决开发过程中遇到的常见问题。   学习完本书,你将能够构建并交付可满足组织业务需求的高度可扩展的企业应用程序。 主要内容 ● 使用多种技术克服现实工作中的架构挑战,并从设计层面解决问题 ● 应用分层架构、面向服务架构和微服务架构 ● 利用容器、Docker、Kubernetes和Blazor等工具高效管理微服务 ● 快速使用Azure工具和功能提供全局解决方案 ● 使用C# 9及其新功能编程和维护Azure功能 ● 了解什么情况下最适合使用测试驱动开发方法 ● 编写自动化功能测试用例 ● 充分利用DevOps原则实现CI/CD环境
  • 作者简介:
    Gabriel Baptista是一名软件架构师,他领导技术团队跨项目使用Microsoft平台完成了多个与零售和工业相关的项目。他是Azure解决方案方面的专家,也是一位讲授软件工程、开发和架构等课程的教授,并出版了一些与计算机相关的书籍。他在知名.NET技术社区网站Microsoft Channel 9上演讲,还与他人一起创办了SMIT公司,主要开展开发解决方案方面的业务,他将DevOps理念视为满足用户需求的关键。

    “致我亲爱的家人Murilo、Heitor和Denise,他们经常鼓励我。感谢我的父母Elisabeth和Virgílio,以及我的祖母、外祖母Maria和Lygia,他们一直鼓励我。特别感谢Packt团队,全体成员的辛勤劳动保证了这本书的优秀质量。”

    Francesco Abbruzzese是MVC Controls Toolkit和Blazor Controls Toolkit程序库的作者。他从 ASP.NET MVC第一个版本就开始为Microsoft Web技术栈的传播和推广做贡献。他的公司Mvcct Team提供一些与Web技术相关的Web应用程序、工具和服务。他曾从事人工智能系统相关的工作(例如为金融机构实施了首批决策支持系统),后来转型去做电视游戏(如当时排名前10位的Puma Street Soccer)。

    “感谢亲爱的父母,我的一切都来自他们。特别感谢Packt全体员工以及为改进本书整体代码质量做出贡献的审稿人员。”
  • 目录:
     

    第1章  软件架构的重要性 1

    1.1  什么是软件架构 1

    1.2  软件开发过程模型 4

    1.2.1  传统的软件开发过程模型 4

    1.2.2  敏捷软件开发过程模型 6

    1.3  收集正确信息以设计高质量软件 10

    1.3.1  了解需求收集过程 10

    1.3.2  收集准确的用户需求 10

    1.3.3  分析需求 11

    1.3.4  将需求整理成规范的文档 11

    1.3.5  复核用户需求文档 13

    1.4  设计技术 13

    1.4.1  设计思维 13

    1.4.2  设计冲刺 14

    1.5  收集需求阶段就要考虑的常见问题 14

    1.5.1  问题1:网站太慢,无法打开网页 14

    1.5.2  问题2:用户的需求未得到正确实现 16

    1.5.3  问题3:系统会在什么环境使用 17

    1.6  World Wild Travel Club案例简介 17

    1.7  本章小结 19

    1.8   练习题 19

    第2章  非功能性需求 21

    2.1  技术性要求 21

    2.2  使用Azure和.NET 5实现可扩展性、可用性和可恢复性 21

    2.2.1  在Azure中创建可扩展的Web应用程序 22

    2.2.2  使用.NET 5创建可扩展的Web应用程序 26

    2.3  C#编程时需要考虑的性能问题 29

    2.3.1  字符串串联 29

    2.3.2  异常 30

    2.3.3  多线程 31

    2.4  易用性——插入数据为什么会耗费太长时间 32

    2.4.1  如何设计快速选择 33

    2.4.2  从大量的条目中进行选择 34

    2.5  .NET Core的互操作性 35

    2.6  在设计层面实现安全性 37

    2.7  用例——了解.NET Core项目的主要类型 38

    2.8  本章小结 40

    2.9  练习题 40

    第3章  使用Azure DevOps记录需求 41

    3.1  技术性要求 41

    3.2  Azure DevOps介绍 41

    3.3  使用Azure DevOps 组织工作 45

    3.3.1  Azure DevOps存储库 45

    3.3.2  包源 47

    3.3.3  测试计划 49

    3.3.4  管道 50

    3.4  使用Azure DevOps管理系统需求 50

    3.4.1  Epic工作项 50

    3.4.2  Feature工作项 51

    3.4.3  Product Backlog工作项/ User Story工作项 51

    3.5  用例——在Azure DevOps中展现WWTravelClub 51

    3.6  本章小结 55

    3.7  练习题 55

    第4章 确定基于云的最佳解决方案 56

    4.1  技术性要求 56

    4.2  不同的软件部署模型 56

    4.2.1  IaaS和Azure服务 57

    4.2.2  PaaS—— 开发者的世界 59

    4.2.3  SaaS——只需要登录即可开始 63

    4.2.4  无服务器解决方案 64

    4.3  为什么混合应用程序在许多情况下如此有用 64

    4.4  用例——哪一种才是最好的

    云解决方案 65

    4.5  本章小结 66

    4.6  练习题 66

    第5章 在企业应用中应用微服务架构 67

    5.1  技术性要求 67

    5.2  什么是微服务 67

    5.2.1  微服务与模块概念的演变 68

    5.2.2  微服务设计原则 69

    5.2.3  容器和Docker 71

    5.3  微服务什么时候有帮助 72

    5.3.1  分层架构和微服务 72

    5.3.2  什么时候值得考虑微服务架构 74

    5.4  .NET如何处理微服务 75

    5.4.1  .NET通信工具 75

    5.4.2  可恢复性任务执行 76

    5.4.3  使用通用宿主 77

    5.4.4  Visual Studio对Docker的支持 80

    5.4.5  Azure和Visual Studio对微服务编排的支持 84

    5.5  管理微服务需要哪些工具 84

    5.6  本章小结 86

    5.7  练习题 86

    第6章 Azure Service Fabric 87

    6.1  技术性要求 87

    6.2  定义和配置Azure Service Fabric群集 90

    6.2.1  步骤1:基本信息 90

    6.2.2  步骤2:群集配置 91

    6.2.3  步骤3:安全配置 93

    6.3  用例——购买记录微服务 95

    6.3.1  确保消息幂等性 97

    6.3.2  交互程序库 99

    6.3.3  实现通信的接收端 100

    6.3.4  实现服务逻辑 102

    6.3.5  定义微服务的宿主 106

    6.3.6  与服务进行通信 107

    6.3.7  测试应用程序 108

    6.4  本章小结 109

    6.5  练习题 109

    第7章 Azure Kubernetes服务 110

    7.1  技术性要求 110

    7.2  Kubernetes 基础 110

    7.2.1  .yaml 文件 111

    7.2.2  ReplicaSet和Deployment 112

    7.2.3  StatefulSet 114

    7.2.4  Service 114

    7.2.5  Ingress 118

    7.3  与Azure Kubernetes群集交互 119

    7.3.1  使用 Kubectl 121

    7.3.2  部署留言板示例应用程序 122

    7.4  Kubernetes高级概念 124

    7.4.1  需要永久存储 125

    7.4.2  Kubernetes Secret 126

    7.4.3  存活性和就绪性检查 127

    7.4.4  自动缩放 128

    7.4.5  Helm:安装入口控制器 129

    7.5  本章小结 131

    7.6  练习题 132

    第8章 在C#中与数据进行交互——Entity Framework Core 133

    8.1  技术性要求 133

    8.2  ORM基础 134

    8.3  配置Entity Framework Core 136

    8.3.1  定义数据库实体 137

    8.3.2  定义映射集合 139

    8.3.3  完成映射配置 139

    8.4  Entity Framework Core迁移 141

    8.5  使用Entity Framework Core查询和更新数据 144

    8.5.1  将数据返回给表示层 147

    8.5.2  直接发出SQL命令 148

    8.5.3  处理事务 149

    8.6  数据层的部署 149

    8.7  Entity Framework Core的高级功能 150

    8.8  本章小结 151

    8.9  练习题 151

    第9章 在云上选择数据存储 152

    9.1  技术性要求 152

    9.2  不同用途的不同存储库 153

    9.2.1  关系数据库 153

    9.2.2  NoSQL数据库 155

    9.2.3  Redis 156

    9.2.4  Azure存储账户 156

    9.3  在结构化存储和NoSQL存储之间进行选择 157

    9.4  Azure Cosmos DB—— 一种管理跨区域数据库的选择 158

    9.4.1  创建一个Azure Cosmos DB账户 158

    9.4.2  创建Azure Cosmos集合 159

    9.4.3  访问Azure Cosmos 数据 160

    9.4.4  定义数据库一致性 160

    9.4.5  Cosmos DB客户端 162

    9.4.6  Cosmos DB的Entity Framework Core提供程序 163

    9.5  用例——存储数据 164

    9.6  本章小结 167

    9.7  练习题 167

    第10章  Azure函数应用 168

    10.1  技术性要求 168

    10.2  Azure函数应用程序 168

    10.2.1  消耗计划 169

    10.2.2  函数高级计划 169

    10.2.3  应用服务计划 170

    10.3  使用C#运行Azure函数应用 170

    10.4  维护Azure函数应用 174

    10.5  用例——通过Azure函数应用发送电子邮件 176

    10.5.1  第一步:创建Azure队列存储 176

    10.5.2  第二步:创建发送电子邮件的函数 178

    10.5.3  第三步:创建Queue Trigger函数 180

    10.6  本章小结 181

    10.7  练习题 181

    第11章  设计模式与.NET 5实现 182

    11.1  技术性要求 182

    11.2  设计模式及其目的 182

    11.2.1  建造者模式 183

    11.2.2  工厂模式 185

    11.2.3  单例模式 186

    11.2.4  代理模式 188

    11.2.5  命令模式 189

    11.2.6  发布者-订阅者模式 190

    11.2.7  依赖注入模式 191

    11.3  .NET 5中可用的设计模式 192

    11.4  本章小结 193

    11.5  练习题 193

    第12章  不同领域的软件解决方案 194

    12.1  技术性要求 195

    12.2  什么是软件领域 195

    12.3  理解领域驱动设计 196

    12.4  实体和值对象 198

    12.5  使用SOLID原则映射领域 201

    12.6  聚合 203

    12.7  存储库和工作单元模式 204

    12.8  DDD实体和Entity Framework Core 205

    12.9  命令查询职责分离模式 206

    12.10  命令处理程序和领域事件 208

    12.11  事件溯源 210

    12.12  用例——WWTravelClub的领域 210

    12.13  本章小结 212

    12.14  练习题 212

    第13章  在C# 9中实现代码复用 214

    13.1  技术性要求 214

    13.2  代码复用的原则 214

    13.2.1  什么不是代码复用 215

    13.2.2  什么是代码复用 215

    13.3  开发生命周期中的可复用性 216

    13.4  使用.NET 5或.NET Standard进行代码复用 217

    13.5  在C#中处理代码复用 218

    13.5.1  面向对象分析 218

    13.5.2  泛型 220

    13.6  如果代码不可复用怎么办 220

    13.7  如何推广可复用的程序库 221

    13.7.1  使用DocFX文档化.NET程序库 221

    13.7.2  使用Swagger文档化Web API 222

    13.8  用例——复用代码以快速交付优质、安全的软件 223

    13.9  本章小结 223

    13.10  练习题 224

    第14章  使用.NET Core实现面向服务的架构 225

    14.1  技术性要求 225

    14.2  SOA方法的原则 226

    14.3  SOAP Web服务 228

    14.4  REST Web服务 229

    14.4.1  服务类型兼容性规则 229

    14.4.2  REST与原生HTTP功能 230

    14.4.3  REST语言中的方法示例 232

    14.4.4  OpenAPI标准 232

    14.4.5  REST服务的身份验证和鉴权 233

    14.5  如何在.NET 5中处理SOA 235

    14.5.1  对SOAP客户端的支持 235

    14.5.2  对gRPC的支持 236

    14.5.3  ASP.NET Core简介 236

    14.5.4  使用ASP.NET Core实现REST服务 239

    14.6  用例——公开WWTravelClub的旅行方案 248

    14.7  本章小结 252

    14.8  练习题 253

    第15章  ASP.NET Core MVC 254

    15.1  技术性要求 254

    15.2  Web应用程序的表示层 254

    15.3  ASP.NET Core MVC架构 255

    15.3.1  ASP.NET Core管道工作原理 255

    15.3.2  加载配置数据并与options框架一起使用 258

    15.3.3  定义ASP.NET Core MVC管道 261

    15.3.4  定义控制器和ViewModel 265

    15.3.5  Razor视图 267

    15.3.6  复用视图代码 273

    15.4  ASP.NET Core最新版本的新增功能 275

    15.5  ASP.NET Core MVC和设计原则的关系 276

    15.5.1  ASP.NET Core管道的优点 277

    15.5.2  服务器端和客户端验证 277

    15.5.3  ASP.NET Core多语言支持 278

    15.5.4  MVC模式 280

    15.6  用例 —— 使用ASP.NET Core MVC实现Web应用程序 281

    15.6.1  定义应用程序规范 281

    15.6.2  定义应用程序架构 282

    15.6.3  控制器和视图 293

    15.7  本章小结 298

    15.8  练习题 298

    第16章  Blazor WebAssembly 299

    16.1  技术性要求 299

    16.2  Blazor WebAssembly架构 300

    16.2.1  什么是单页应用程序 300

    16.2.2  加载并启动应用程序 301

    16.2.3  路由 303

    16.3  Blazor页面和组件 304

    16.3.1  组件结构 304

    16.3.2  模板和级联参数 307

    16.3.3  事件 309

    16.3.4  绑定 311

    16.3.5  Blazor如何更新HTML 312

    16.3.6  组件生命周期 313

    16.4  Blazor表单和验证 314

    16.5  Blazor高级功能 316

    16.5.1  对组件和HTML元素的引用 316

    16.5.2  JavaScript互操作性 316

    16.5.3  全球化与本地化 318

    16.5.4  身份验证和授权 318

    16.5.5  与服务器的通信 320

    16.6  Blazor WebAssembly第三方工具 321

    16.7  用例——使用Blazor WebAssembly实现一个简单的应用程序 322

    16.7.1  准备解决方案 322

    16.7.2  实现所需的ASP.NET Core REST API 323

    16.7.3  在服务中实现业务逻辑 325

    16.7.4  实现用户界面 325

    16.8  本章小结 328

    16.9  练习题 328

    第17章  C# 9编码最佳实践 329

    17.1  技术性要求 329

    17.2  越糟糕的程序员,编码越复杂 329

    17.2.1  可维护性指数 330

    17.2.2  圈复杂度 330

    17.2.3  继承深度 333

    17.2.4  类耦合度 334

    17.2.5  源代码行 336

    17.3  使用版本控制系统 336

    17.4  用C#编写安全代码 336

    17.4.1  try-catch 336

    17.4.2  try-finally和using 337

    17.4.3  IDisposable接口 338

    17.5  编写.NET 5代码的提示与技巧 339

    17.6  编写代码时的注意事项 340

    17.7  本章小结 341

    17.8  练习题 341

    第18章  单元测试用例和TDD 342

    18.1  技术性要求 342

    18.2  单元测试和集成测试 342

    18.2.1  对单元测试和集成测试进行自动化 343

    18.2.2  编写自动化单元测试与集成测试 344

    18.2.3  编写验收测试和性能测试 345

    18.3  测试驱动开发 346

    18.4  定义C#测试项目 347

    18.4.1  使用xUnit测试框架 348

    18.4.2  高级测试准备和清理场景 350

    18.4.3  使用Moq模拟接口 351

    18.5  用例 —— 在Azure DevOps中对单元测试进行自动化 352

    18.6  本章小结 359

    18.7  练习题 359

    第19章  使用工具编写更好的代码 360

    19.1  技术性要求 360

    19.2  识别编写良好的代码 360

    19.3  使用C#代码评估工具 361

    19.4  使用扩展工具分析代码 365

    19.4.1  使用Microsoft Code Analysis 2019 365

    19.4.2  使用SonarLint for Visual Studio 2019 365

    19.5  检查分析之后的最终代码 366

    19.6  用例——在应用程序发布之前评估C#代码 367

    19.7  本章小结 368

    19.8  练习题 369

    第20章  DevOps 370

    20.1  技术性要求 370

    20.2  DevOps的描述 371

    20.3  DevOps原则 371

    20.4  Azure DevOps的持续交付 372

    20.4.1  使用Azure管道部署程序包管理应用程序 372

    20.4.2  多阶段环境 379

    20.5  定义持续反馈和相关的DevOps工具 381

    20.5.1  使用Azure Monitor Application Insights监控软件 381

    20.5.2  使用测试和反馈工具实现反馈 384

    20.6  SaaS 388

    20.6.1  使组织适应服务场景 388

    20.6.2  服务场景中的软件开发过程 388

    20.6.3  服务场景在技术层面的可能影响 388

    20.6.4  决定何时采用SaaS解决方案 389

    20.6.5  为服务场景准备解决方案 389

    20.7  用例——WWTravelClub 项目方案 391

    20.8  本章小结 391

    20.9  练习题 392

    第21章  持续集成所带来的挑战 393

    21.1  技术性要求 393

    21.2  持续集成 393

    21.3  持续集成和GitHub 394

    21.4  使用持续集成的风险和挑战 396

    21.4.1  禁用生产环境的持续部署 397

    21.4.2  不完整的功能 398

    21.4.3  不稳定的测试解决方案 400

    21.5  WWTravelClub 项目方案 403

    21.6  本章小结 403

    21.7  练习题 403

    第22章  功能测试自动化 404

    22.1  技术性要求 404

    22.2  功能测试的目的 404

    22.3  在C#中使用单元测试工具来自动化功能测试 406

    22.3.1  测试模拟环境中的应用程序 407

    22.3.2  测试受控应用程序 408

    22.4  用例——自动化功能测试 410

    22.5  本章小结 412

    22.6  练习题 413

     

     
查看详情
相关图书 / 更多
Azure、DevOps和微服务软件架构实战(第2版)
Aztec Thought and Culture: A Study of the Ancient Nahuatl Mind
Miguel Leon-Portilla 著
Azure、DevOps和微服务软件架构实战(第2版)
Azincourt
Bernard Cornwell 著
Azure、DevOps和微服务软件架构实战(第2版)
Aztec
Dorling Kindersley(DK出版社) 著
Azure、DevOps和微服务软件架构实战(第2版)
Azincourt
Bernard Cornwell 著
Azure、DevOps和微服务软件架构实战(第2版)
Azure 机器学习
Jeff Barnes
Azure、DevOps和微服务软件架构实战(第2版)
Aztecs:AnInterpretation(Canto)
Inga Clendinnen 著
Azure、DevOps和微服务软件架构实战(第2版)
Aztecs
Catriona Clarke(卡特里奥娜·克拉克) 著;Adam Larkum(亚当·拉科姆) 绘
Azure、DevOps和微服务软件架构实战(第2版)
Azure WebSites权威指南:微软云计算Web平台开发实战详解
赵伟 著
Azure、DevOps和微服务软件架构实战(第2版)
Azincourt
Bernard Cornwell
您可能感兴趣 / 更多
Azure、DevOps和微服务软件架构实战(第2版)
这样思考真酷!/国际大奖作者给孩子的哲思绘本 套装共8册
[葡萄牙]理查德·齐姆勒 著;[葡萄牙]伊莎贝尔·米尼奥斯·马丁斯;[意]达维德·卡利;[意]朱塞佩·卡里切蒂;[意]达妮埃拉·卡鲁奇
Azure、DevOps和微服务软件架构实战(第2版)
发呆、乱抽屉与四处走走: 改变世界的想象力(从科学与艺术的角度探索想象力的奥秘,用想象力创造更美好的世界。)
[葡萄牙]伊莎贝尔·米尼奥斯·马丁斯 文;[葡萄牙]马达莱娜 ·马托索 绘
Azure、DevOps和微服务软件架构实战(第2版)
葡萄牙科学史
[葡萄牙]卡尔洛斯·菲奥利艾斯
Azure、DevOps和微服务软件架构实战(第2版)
踝关节外侧不稳定:踝关节不稳定协作组制订的国际诊疗方案
[葡萄牙]赫尔德·佩雷拉 主编;赵嘉国 主译
Azure、DevOps和微服务软件架构实战(第2版)
商法教程(第二卷):公司法
[葡萄牙]乔治·曼努埃尔·高迪纽·德·阿布莱乌
Azure、DevOps和微服务软件架构实战(第2版)
小怪物库奇多 全3册 趣味怪物绘本 帮助孩子克服恐惧 赠贴纸音频
[葡萄牙]克拉拉·库尼亚 著;张晓非 译;[葡萄牙]保罗·加林德罗 绘
Azure、DevOps和微服务软件架构实战(第2版)
毛发疾病的诊断与治疗技术
[葡萄牙]Rubina Alves;[西]Ramon Grimalt
Azure、DevOps和微服务软件架构实战(第2版)
不安之书
[葡萄牙]费尔南多.佩索阿
Azure、DevOps和微服务软件架构实战(第2版)
宪法与宪法理论
[葡萄牙]若泽·若阿金·高美士·卡诺迪略(José Joaquim Gomes Canotilho)
Azure、DevOps和微服务软件架构实战(第2版)
追鸟的男孩 葡萄牙金牌插画师&知名作家联手之作 带孩子一起感受自然的魔法能量,获得心灵的成长
[葡萄牙]伊莎贝尔·米尼奥斯·马丁斯
Azure、DevOps和微服务软件架构实战(第2版)
抛物型狄拉克算子和薛定谔方程:不定常薛定谔方程的抛物型狄拉克算子及其应用(英文)
[葡萄牙]纳尔逊.维埃拉
Azure、DevOps和微服务软件架构实战(第2版)
战斗中的舞者
[葡萄牙]赫莉娅·科雷亚 著;周宁 译