深入浅出:.NET框架设计与实现
  • 推荐0
  • 收藏0
  • 浏览77

深入浅出:.NET框架设计与实现

冯辉 (作者)  孙学瑛 (责任编辑)

  • 书  号:9787121420191
  • 出版日期:2023-03-01
  • 页  数:414
  • 开  本:16(240*190)
  • 出版状态:上市销售
  • 维护人:符隆美
《深入浅出:.NET框架设计与实现》主要介绍.NET 框架的核心部分,不仅阐述了框架的核心设计,还展示了实践代码和运行效果,同时根据不同的功能模块扩展出属于自己的小组件。通过阅读本书,读者可以深入了解.NET框架的核心设计,掌握.NET 性能调优和 ASP.NET Core 的部署方式。本书包含 18 章。第 1~3 章主要介绍.NET 框架、开发环境和运行模式。第 4~12 章主要介绍依赖注入、配置与选项、后台任务、中间件、缓存、本地化、健康检查、文件系统和日志等常用功能模块。第 13~17 章主要介绍线程、线程同步、内存管理、诊断和调试,以及编译技术等内容。第 18 章主要介绍应用程序的部署方式,包括宿主机的部署,以及 Docker 和 Kubernetes 的部署。
《深入浅出:.NET框架设计与实现》可供.NET 开发人员和.NET 初学者阅读与参考,也适合具备其他编程语言基础且想要学习.NET 的开发人员阅读,还可为读者在工作及巩固基础时提供有力支持。
本书脱离特定版本号,使其销售不限于某个特定的版本。本书将一些核心内容篇章从深到浅进行一个概述,让读者更深入的了解其内部的实现机制,在章节后面多数篇章将以案例加DEMO的形式进行编写。涵盖GC、调试、线程、容器和云原生等内容
冯辉,Microsoft MVP、Dapr Member、.NET Conf China 2020/2021讲师、开源技术的积极倡导者与贡献者。具有丰富的.NET开发经验,专注于.NET平台、云原生、服务化和DevOps等技术领域的研究。
前言
随着.NET 技术的发展,涌现出众多的设计思想和核心概念。值得开发人员关注的技术点有很多,如 ASP.NET Core 模块的设计、跨平台调试与部署等。
.NET 已经成为一种热门的现代技术体系,从.NET 彻底迈向跨平台和开源开始,已经历经了约 10 个版本。新一代的.NET 平台以拥抱云原生为核心,拥有更小的体积、更少的资源占用和更快的启动速度,并且支持水平扩展。
笔者也算是一个亲历者,从.NET Core 1.0 到现在,是一个从重生到繁荣的成长阶段,.NET 生态更加开放,开源社区越来越活跃,不仅支持传统的 x86 架构体系,还支持ARM 架构,并且获得了龙芯 LoongArch 架构及诸多新兴架构体系的踊跃支持,同时在工业、IoT、车联网等领域获得了广泛运用。无论是从社区参与度,还是从 NuGet 的下载量,都不难看出.NET 的发展速度。
.NET 具备原生的跨平台部署能力,是一种用于构建多端应用的开放平台。使用.NET 可以构建桌面应用、云服务、嵌入式应用及机器学习应用等,读者可以从 GitHub 官网的 dotnet组织中获取它所有的源代码。
计算机科学家 Alan J. Perlis 曾说过:“不能影响你的编程思维方式的语言不值得学习和使用。”由此可知,“思维”非常重要,只有了解一门编程语言或框架的基础模型与核心设计,才能将其应用到日常的编程中。
框架的设计过程是非常复杂的,笔者偏向于将复杂问题简单化,先研究它的实现方式,再了解它的设计模式,通过这一层层的推导过程,慢慢地了解整体脉络。阅读源代码是一个枯燥但会带来收获的过程。在本书中,笔者将框架设计方法,以及它们的实现(可扩展性)方式毫无保留地写下来。
本书集成了笔者在工作中使用.NET 开发应用程序的编写经验和调试经验,同时结合了笔者关于 Linux 平台和容器云平台的使用经验。通过本书,笔者将介绍每个模块的核心设计与实现,因为要想在生产环境中大规模使用,就需要在这个复杂而庞大的项目中抓到主线,了解内部的实现和调试技术,以便快速定位问题和解决问题。
本书对 ASP.NET Core 的部分核心内容进行了深入解析,在这个基础上延伸内容,以及自定义扩展实例,初学者可以更深入地了解 ASP.NET Core 内部的运作方式。本书也涵盖了很多基础知识,如垃圾回收、调试、线程等,除此之外,添加了部署方面的内容,将应用程序部署到宿主机、Docker 和 Kubernetes 中。
笔者通过对.NET 技术的原理进行剖析及实例的演示,帮助读者快速熟悉框架的核心设计及实现原理。希望读者在阅读完本书后,能够将书中的内容学以致用,使用.NET 构建出高性能的应用程序,同时为开源社区添砖加瓦。
关于勘误
完成本书绝不是一件简单的事情。虽然笔者力争保证内容的准确性,并且花费了很长的时间和大量的精力核对书中的文字和内容,但个人水平有限,书中难免存在一些不足之处,望广大读者批评指正。欢迎发邮件至 hueifeng2020@outlook.com,期待您的反馈。
致谢
感谢邹溪源、严振范、锅美玲、李卫涵、胡心(Azul X)、管生玄、黄新成(一线码农)和周杰等人对本书的审核和校对,同时感谢家人、朋友和同事在笔者编写本书期间给予的支持与鼓励。
感谢符隆美编辑对我的悉心指导,她对本书的审核和建议使我的写作水平有了很大的提高,在此表示感谢!

目录

第 1 章 .NET 概述和环境安装 ······························ 1
1.1 .NET 框架简介 ········································ 1
1.2 .NET 的开发环境 ····································· 6
1.3 小结 ········ 20
第 2 章 .NET 运行原理概述 ······························· 21
2.1 .NET CLI 概述 ······································ 21
2.2 小结 ········ 36
第 3 章 ASP.NET Core 应用程序的多种运行模式 ·· 37
3.1 自宿主 ····· 37
3.2 IIS 服务承载 ········································· 38
3.3 将 WebAPI 嵌入桌面应用程序中··············· 39
3.4 服务承载·· 41
3.5 延伸阅读:WindowsFormsLifetime ············ 53
3.6 小结 ········ 59
第 4 章 依赖注入 · 60
4.1 .NET 依赖注入 ······································ 61
4.2 实现批量服务注册 ································· 80
4.3 小结 ········ 84
第 5 章 配置与选项 ·········································· 85
5.1 配置模式·············································· 85
5.2 选项模式············································· 101
5.3 设计一个简单的配置中心 ······················· 121
5.4 小结 ······· 130
第 6 章 使用 IHostedService 和 BackgroundService 实现后台任务 ············· 131
6.1 IHostedService ······································ 131
6.2 BackgroundService ································ 134
6.3 任务调度············································· 137
6.4 小结 ······· 142
第 7 章 中间件 143
7.1 中间件的作用 ······································ 143
7.2 中间件的调用过程 ································ 144
7.3 编写自定义中间件 ································ 147
7.4 在过滤器中应用中间件 ·························· 151
7.5 制作简单的 API 统一响应格式与自动包装 156
7.6 延伸阅读:责任链模式 ·························· 159
7.7 延伸阅读:中间件常见的扩展方法 ·········· 162
7.8 小结 ······· 174
第 8 章 缓存 ···175
8.1 内存缓存············································· 175
8.2 分布式缓存 ········································· 180
8.3 HTTP 缓存 ·········································· 188
8.4 小结 ······· 193
第 9 章 本地化 194
9.1 内容本地化 ········································· 194
9.2 多样化的数据源 ··································· 203
9.3 小结 ······· 210
第 10 章 健康检查 ··········································· 211
10.1 检查当前应用的健康状态 ····················· 211
10.2 发布健康报告 ····································· 233
10.3 可视化健康检查界面 ··························· 238
10.4 小结 ····· 240
第 11 章 文件系统 ··········································· 241
11.1 ASP.NET Core 静态文件 ······················· 241
11.2 自定义一个简单的文件系统 ·················· 247
11.3 小结 ····· 253
第 12 章 日志 ·············································254
12.1 控制台日志 ········································ 254
12.2 调试日志 ··········································· 281
12.3 事件日志 ··········································· 285
12.4 EventSource 日志 ································ 292
12.5 TraceSource 日志 ································· 298
12.6 DiagnosticSource 日志 ·························· 303
12.7 小结 ····· 309
第 13 章 多线程与任务并行 ······························ 310
13.1 线程简介 ··········································· 310
13.2 基于任务的异步编程 ··························· 316
13.3 线程并行 ··········································· 328
13.4 小结 ····· 329
第 14 章 线程同步机制和锁 ······························ 330
14.1 原子操作 ··········································· 330
14.2 自旋锁 ·· 333
14.3 混合锁 ·· 337
14.4 互斥锁 ·· 340
14.5 信号量 ·· 341
14.6 读写锁 ·· 346
14.7 小结 ····· 348
第 15 章 内存管理 ··········································· 349
15.1 内存分配 ··········································· 349
15.2 垃圾回收器 ········································ 357
15.3 资源释放 ··········································· 362
15.4 垃圾回收器的设置 ······························ 368
15.5 小结 ····· 374
第 16 章 诊断和调试········································ 375
16.1 性能诊断工具 ····································· 375
16.2 Linux 调试 ········································· 416
16.3 小结 ····· 429
第 17 章 编译技术精讲 ···································· 430
17.1 IL 解析 ············································· 430
17.2 JIT 简介 ············································435
17.3 JIT 编译 ············································437
17.4 AOT 编译 ·········································· 446
17.5 小结 ····· 450
第 18 章 部署 ·············································451
18.1 发布与部署 ········································ 451
18.2 Docker ·· 460
18.3 编写 Dockerfile 文件 ···························· 469
18.4 构建.NET 应用镜像 ····························· 472
18.5 Docker Compose ·································· 477
18.6 Docker Swarm ····································· 480
18.7 Kubernetes ········································· 485
18.8 小结 ····· 496

读者评论