新書推薦:
![Redis 高手心法](http://103.6.6.66/upload/mall/productImages/24/31/9787121483455.jpg)
《
Redis 高手心法
》
售價:HK$
115.0
![勇往值钱:做自己人生的CEO](http://103.6.6.66/upload/mall/productImages/24/30/9787523606681.jpg)
《
勇往值钱:做自己人生的CEO
》
售價:HK$
68.8
![里山资本主义:不做金钱的奴隶,做个安心的里山主人(献礼大地)](http://103.6.6.66/upload/mall/productImages/24/29/9787576048896.jpg)
《
里山资本主义:不做金钱的奴隶,做个安心的里山主人(献礼大地)
》
售價:HK$
67.9
![欧洲雇佣兵研究(1350-1800)](http://103.6.6.66/upload/mall/productImages/24/31/9787100234313.jpg)
《
欧洲雇佣兵研究(1350-1800)
》
售價:HK$
74.8
![费里尼的电影](http://103.6.6.66/upload/mall/productImages/24/30/9787308247566.jpg)
《
费里尼的电影
》
售價:HK$
102.4
![第一性原理:21堂科学通识课(《奇怪的知识增加了》作者马库斯·乔恩全新力作)](http://103.6.6.66/upload/mall/productImages/24/30/9787523605103.jpg)
《
第一性原理:21堂科学通识课(《奇怪的知识增加了》作者马库斯·乔恩全新力作)
》
售價:HK$
90.9
![过渡劳动:平台经济下的外卖骑手(薄荷实验)](http://103.6.6.66/upload/mall/productImages/24/29/9787576047110.jpg)
《
过渡劳动:平台经济下的外卖骑手(薄荷实验)
》
售價:HK$
112.7
![爱的重构:让自己成为家庭幸福掌舵人](http://103.6.6.66/upload/mall/productImages/24/30/9787522530901.jpg)
《
爱的重构:让自己成为家庭幸福掌舵人
》
售價:HK$
112.7
|
編輯推薦: |
基础阶段:从最简单的示例代码开始,创建一个非常简单Demo。
进阶阶段:编写代码的同时,轻松学习掌握核心点的实现。
原理阶段:抽丝剥茧,通过源码,让你了解不同模块内部的原理。
实践阶段:对章节的内容做更深入的理解和研究,创建自定义具有扩展的模块。
|
內容簡介: |
本书主要介绍.NET框架的核心部分,不仅阐述了框架的核心设计,还展示了实践代码和运行效果,同时根据不同的功能模块扩展出属于自己的小组件。通过阅读本书,读者可以深入了解.NET框架的核心设计,掌握.NET性能调优和ASP.NET Core的部署方式。本书包含18章。第1~3章主要介绍.NET框架、开发环境和运行模式。第4~12章主要介绍依赖注入、配置与选项、后台任务、中间件、缓存、本地化、健康检查、文件系统和日志等常用功能模块。第13~17章主要介绍线程、线程同步、内存管理、诊断和调试,以及编译技术等内容。第18章主要介绍应用程序的部署方式,包括宿主机的部署,以及Docker和Kubernetes的部署。
|
關於作者: |
冯辉,Microsoft MVP、Dapr Member、.NET Conf China 2020/2021讲师、开源技术的积极倡导者与贡献者。具有丰富的.NET开发经验,专注于.NET平台、云原生、服务化和DevOps等技术领域的研究。
|
目錄:
|
第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调试 421
16.3 小结 433
第17章 编译技术精讲 434
17.1 IL解析 434
17.2 JIT简介 439
17.3 JIT编译 441
17.4 AOT编译 450
17.5 小结 454
第18章 部署 455
18.1 发布与部署 455
18.2 Docker 464
18.3 编写Dockerfile文件 473
18.4 构建.NET应用镜像 476
18.5 Docker Compose 481
18.6 Docker Swarm 484
18.7 Kubernetes 489
18.8 小结 500
|
內容試閱:
|
推 荐 序
第一次和冯辉接触是几年前他邀请我参加济南.NET 俱乐部的活动,当时我因工作原因未能赴约,到现在仍深感遗憾。在年初的时候得知他正在撰写一本讲解.NET 框架的书,又有幸被邀请为该书写序,在忐忑之余,我也想借这个机会介绍一下自己在.NET 这条路的心路历程供读者参考。
在编程道路上,有两件事对我产生过很大的影响。第一件事可以追溯到 10 年前我第一次接触编程时,当时我使用.NET 中的 XNA 框架和 WP 框架开发了我的第一款手机 RPG 游戏并在 Lumia 820 上运行。这次成功开发游戏的经历极大地增强了我对从事编程的信心和对.NET 的兴趣。之后因为工作的需要,我对 WPF、WCF 和 ASP.NET 等不同方向的.NET 技术都有所涉猎。第二件事可以追溯到 Microsoft 宣布第一个开源的.NET 版本 ASP .NET VNext时,当时我就对 VNext 产生了极大的兴趣。在学习和推广 VNext 时,我结识了 Alex LEWIS、He Zhenxi、Xie Yang 等好友,之后我们一起创建了 NCC(.NET Core Community)社区。
最初,.NET Core 提供英文文档作为为数不多的使用参考,所以 NCC 社区刚刚成立时,我们做的第一件事是翻译ASP.NET Core 最初版本的英文文档。得益于Microsoft的开源策略,学习.NET Core 的另一个途径就是阅读 GitHub 官网上的源代码,我也由此养成了阅读开源项目代码的习惯,并且受益至今。受万物皆“Services”并且完全管道化的 ASP.NET Core 框架的启发,我设计了 AspectCore AOP 库,也在从事云原生开发之后在 Go 语言上继续参考ASP.NET Core 实现了以依赖注入作为内核的模块化开发框架。
即使对 .NET Core 已经相对熟悉,我在阅读本书样稿之后还是感觉眼前一亮。本书由浅入深地介绍了.NET Core 框架的核心部分,如依赖注入、配置与选项、中间件、缓存、日志、多线程等。我相信,不管是.NET Core 的初学者,还是想要继续进阶的中高级开发工程师,都能从这本书中获得很大的帮助。
近几年技术浪潮兴替,从大数据、移动互联网、云计算技术的兴起,再到如今人工智能、云原生技术的流行,.NET Core 完成了从运行时、BCL(Base Class Library,基础类库)到开发框架的一系列蜕变。得益于分层编译、重新实现的集合类、Span、网络/文件 I/O 等诸多细节的优化,.NET Core 不仅在最新几轮的 TechEmpower 性能评测中名列前茅,还可以搭配 C#,使.NET Core 成为事实上的云原生应用开发的最佳平台之一。谨以此序和同为.NET Core 的使用者及爱好者共勉之。
Apache SkyWalking PMC、NCC 社区创始人 刘浩杨
2022 年 8 月于杭州
前言
随着.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)、管生玄、黄新成(一线码农)和周杰等人对本书的审核和校对,同时感谢家人、朋友和同事在笔者编写本书期间给予的支持与鼓励。
感谢符隆美编辑对我的悉心指导,她对本书的审核和建议使我的写作水平有了很大的提高,在此表示感谢!
|
|