新書推薦:
《
你的认知正在阻碍你
》
售價:HK$
65.0
《
我们身边的小鸟朋友:手绘观鸟笔记
》
售價:HK$
78.2
《
拯救免疫失衡
》
售價:HK$
55.8
《
收尸人
》
售價:HK$
72.8
《
大模型应用开发:RAG入门与实战
》
售價:HK$
89.4
《
不挨饿快速瘦的减脂餐
》
售價:HK$
67.0
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:HK$
110.7
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:HK$
132.2
|
關於作者: |
蒋金楠,网名Artech,高级软件顾问。微软6任MVP(Solutions Architecture、Connected System与Microsoft Integration)。中国 .NET 技术领域资深专家,著有《WCF全面解析》)、《ASP.NET MVC 5框架揭秘》等多部领域畅销著作。对.NET Framework、C#、ASP.NET、SQL Server、设计模式、软件架构,以及主流开源框架有着深入研究,同时对.NET Remoting、MSMQ通信技术有深入的理解。博客园头牌博主,51CTO十佳博客,知名技术公众号“大内老A”号主。
|
目錄:
|
第 1 篇 初识编程
第 1 章 编程体验
第 2 篇 基础框架
第 2 章 依赖注入(上)
第 3 章 依赖注入(下)
第 4 章 文件系统
第 5 章 配置选项(上)
第 6 章 配置选项(下)
第 7 章 诊断日志(上)
第 8 章 诊断日志(中)
第 9 章 诊断日志(下)
第 10 章 对象池
第 11 章 缓存
第 12 章 HTTP 调用
第 13 章 数据保护
第 3 篇 承载系统
第 14 章 服务承载
第 15 章 应用承载(上)
第 16 章 应用承载(中)
第 17 章 应用承载(下)
第 4 篇 服务器概述
第 18 章 服务器
第 5 篇 中间件
第 19 章 静态文件
第 20 章 路由、
第 21 章 异常处理
第 22 章 响应缓存
第 23 章 会话
第 24 章 HTTPS 策略
第 25 章 重定向
第 26 章 限流
第 27 章 认证
第 28 章 授权
第 29 章 跨域资源共享
第 30 章 健康检查
|
內容試閱:
|
写作源起
.NET Core 的发展印证了那句老话 “合久必分,分久必合”。 .NET 的诞生可以追溯到 1999 年,那年微软正式启动 .NET 项目。大约六七年前,当 .NET 似乎快要走到尽头时,.NET Core 作为一个分支被独立出来。经过了 3 个主要版本的迭代,.NET Core 俨然已经长成一棵参天大树。
随着 .NET 5 的推出,.NET Framework 和 .NET Core 又重新被整合到一起。与其说 .NET Core 重新回到了 .NET 的怀抱,还不如说 .NET Core “收编”了原来的“残余势力”,自己成为“正统”。
一统江湖的 .NET 5 的根基,在下一个版本( .NET 6)中得到了进一步巩固,今后的 .NET Core 将以每年更新一个版本的节奏稳步向前推进。
目前,还没有哪个技术平台像 .NET Core 这样提供了如此完备的技术栈,桌面、Web、云、移动、游戏、IoT 和 AI 相关开发都可以在这个平台上完成。在列出的这七大领域中,面向应用的Web 开发依然占据了市场的半壁江山,为其提供支撑的 ASP.NET Core 的重要性就毋庸置疑了。
Web 应用可以采用不同的开发模式,如 MVC、gRPC、Actor Model、GraphQL、Pub/Sub 等,它们都有对应的开发框架予以支持。虽然编程模式千差万别,开发框架也琳琅满目,但是底层都需要解决一个核心问题,那就是请求的接收、处理和响应,而这个基础功能就是在 ASP.NET Core 中实现的。从这个角度来讲,ASP.NET Core 是介于 .NET 基础框架和各种 Web 开发框架之间的中间框架。
在前 .NET 时代( .NET Core 诞生之前),计算机图书市场存在一系列介绍 ASP.NET Web Forms、ASP.NET MVC、ASP.NET Web API 的图书。但是找不到一本专门介绍 ASP.NET 自身框架的图书。作为一名拥有近 20 年工作经验的 .NET 开发者,我对此感到十分困惑。上述这些Web 开发框架都是建立在 ASP.NET 框架之上的,底层的 ASP.NET 框架才是根基所在。过去我接触过很多资深的 ASP.NET 开发人员,发现他们对 ASP.NET 框架都没有进行更深入的了解。
2014 年,出版《ASP.NET MVC 5 框架揭秘》之后,我原本打算撰写《ASP.NET 框架揭秘》。后I来.NET Core 横空出世,我的研究方向也随之转移,于是就有了在 2019 年出版的《ASP.NET Core 3 框架揭秘》。
在 .NET 5 发布之前,我准备将这本书进行相应的升级。按照微软公布的版本差异,我觉得升级到《ASP.NET 5 框架揭秘》应该不会花费太多时间和精力,但后来的事实证明我的想法太天真了。由于这本书主要介绍的是 ASP.NET 框架的内部设计和实现,版本之间涉及的很多变化并未“记录在案”,只能通过阅读源代码的方式去发掘。本着宁缺毋滥的原则,我放弃了撰写《ASP.NET 5 框架揭秘》。现在看来这是一个明智的决定,因为 ASP.NET Core 6 是稳定的长期支持版本。另外,我也有了相对充裕的时间逐个确认书中涉及的每个特性在新版本中是否发生了变化,并进行了相应的修改,删除陈旧的内容,添加新的特性。
对于升级后的《ASP.NET Core 6 框架揭秘》,一个全局的改动就是全面切换到基于 Minimal API 的编程模式上。升级后的版本添加了一系列新的章节,如“第 10 章 对象池”“第 12 章 HTTP 调用”“第 13 章 数据保护”“第 18 章 服务器”“第 24 章 HTTPS 策略”“第 25 章 重定向”“第 26 章 限流”等。由于篇幅的限制,不得不删除一些“不那么重要”的章节。
本书内容
《ASP.NET Core 6 框架揭秘》只关注 ASP.NET Core 框架最核心的部分,即由一个服务器和若干中间件构建的管道,除了“第 1 章 编程体验”,其他章节基本上都不会涉及上层的编程框架。本书共分为以下 5 篇内容。
初始编程
第 1 章提供了 20 个极简的 Hello World 应用程序,带领读者感受一下 ASP.NET Core 的编程体验。这些演示实例涉及基于命令行的应用创建和 Minimal API 的编程模式,还涉及多种中间件的定义及配置选项和诊断日志的应用。第 1 章还演示了如何利用路由、MVC 和 gRPC 开发 Web 应用和 API,4 种针对 Dapr 的应用开发模型也包含在这 20 个演示实例中。
基础框架
ASP.NET Core 建立在一系列基础框架之上,这些独立的框架在日常的应用开发中同样被广泛地使用。第 2 篇提供的若干章节对这些基础框架进行了系统而详细的介绍,其中包括“第 2~3 章 依赖注入”“第 4 章 文件系统”“第 5~6 章 配置选项”“第 7~9 章 诊断日志”“第 10 章 对象池”“第 11 章 缓存”“第 12 章 HTTP 调用”“第 13 章 数据保护”。
承载系统
ASP.NET Core 应用作为一个后台服务寄宿于服务承载系统中,“第 14 章 服务承载”主要对该承载系统进行了详细介绍。ASP.NET Core 应用的承载是本书最核心的部分,“第 15~17 章 应用承载(上、中、下)”不仅对 ASP.NET Core 请求处理管道的构建和应用承载的内部流程进行了详细介绍,还对 Minimal API 的编程模型和底层的实现原理进行了详细介绍。
服务器概述
本书所有内容都围绕着 ASP.NET Core 请求处理管道,该管道由一个服务器和若干中间件构建。第 18 章主要对服务器的系统进行了介绍,不仅会详细介绍 Kestrel 服务器的使用和实现原理,还会介绍基于 IIS 的两种部署模式和 HTTP.SYS 的使用,以及如何自定义服务器类型。
中间件
服务器接收的请求会分发给中间件管道进行处理。本篇对大部分中间件的使用和实现原理进行了介绍,其中包括“第 19 章 静态文件”“第 20 章 路由”“第 21 章 异常处理”“第 22 章 响应缓存”“第 23 章 会话”“第 24 章 HTTPS 策略”“第 25 章 重定向”“第 26 章 限流”“第 27 章 认证”“第 28 章 授权”“第 29 章 跨域资源共享”“第 30 章 健康检查”。
写作特点
《ASP.NET Core 6 框架揭秘》是揭秘系列的第 6 本书。在这之前,我得到了很多热心读者的反馈,这些反馈对书中的内容基本上都持正面评价,但对写作技巧和表达方式的评价则不尽相同。
每个作者都有属于自己的写作风格,而每个读者的学习思维方式也不尽相同,两者很难出现百分之百的契合,但我还是决定在《ASP.NET Core 3 框架揭秘》的基础上对后续作品进行修改。从收到的反馈意见来看,这一改变得到了读者的认可,所以《ASP.NET Core 6 框架揭秘》沿用了这样的写作方式。
本书的写作风格可以概括为“体验先行、设计贯通、应用扩展”12 个字。大部分章节开头都会提供一些简单的演示实例,旨在让读者对 ASP.NET Core 的基本功能特性和编程模式有一个大致的了解。在此之后,我会提供背后的故事,即编程模型的设计和原理。将开头实例和架构设计融会贯通之后,读者基本上能够将学到的知识正确地应用到事件中,对应章节对此会提供一些最佳实践。秉承“对扩展开放,对改变关闭”的“开闭原则”,每个功能模块都提供了相应的扩展点,能够精准地找到并运用适合的扩展来解决真实项目开发中的问题才是终极的目标,对应章节会介绍可用的扩展点,并提供一些解决方案和演示实例。
本书综合运用“文字”“图表”“编程”这 3 种不同的“语言”来介绍每个技术主题。一图胜千言,每章都精心设计了很多图表,这些具象的图表能够帮助读者理解技术模块的总体设计、执行流程和交互方式。除了利用编程语言描述应用编程接口(API),本书还提供了 200 多个实例,这些实例具有不同的作用,有的是为了演示某个实用的编程技巧或者最佳实践,有的是为了强调一些容易忽视但很重要的技术细节,有的是为了探测和证明所述的论点。
本书在很多地方展示了一些类型的代码,但是绝大部分代码和真正的源代码是有差异的,两者的差异有以下几个原因:第一,源代码在版本更替中一直在发生改变;第二,由于篇幅的限制,删除了一些细枝末节的代码,如针对参数的验证、诊断日志的输出和异常处理等;第三,很多源代码其实都具有优化的空间。本书提供的代码片段旨在揭示设计原理和实现逻辑,不是为了向读者展示源代码。
目标读者
虽然本书关注的是 ASP.NET Core 自身框架提供的请求处理管道,而不是具体某个应用编程框架,但是本书适合大多数 .NET 技术从业人员阅读。任何好的设计都应该是简单的,唯有简单的设计才能应对后续版本更替中出现的复杂问题。ASP.NET Core 框架就是好的设计,因为自正式推出的那一刻起,该框架的总体设计基本上没有发生改变。既然设计是简单的,对大部分从业人员来说,对框架的学习也就没有什么门槛。本书采用渐进式的写作方式,对于完全没有接触过 ASP.NET Core 的开发人员也可以通过学习本书内容深入、系统地掌握这门技术。由于本书提供的大部分内容都是独一无二的,即使是资深的 .NET 开发人员,也能在书中找到很多不甚了解的盲点。
|
|