书籍作者:蒋金楠 | ISBN:9787121384622 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:8894 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《ASP.NET Core 3 框架揭秘(上下册)》主要阐述 ASP.NET Core *核心的部分——请求处理管道。通过阅读本书,读者可以深刻系统地了解 ASP.NET Core 应用在启动过程中管道的构建方式,以及请求在管道中的处理流程。《ASP.NET Core 3 框架揭秘(上下册)》还详细讲述了 .NET Core 跨平台的本质,以及多个常用的基础框架(如依赖注入、文件信息、配置选项和诊断日志等)。《ASP.NET Core 3 框架揭秘(上下册)》还对大部分原生的中间件提供了系统性介绍,采用“编程体验”、“总体设计”、“具体实现”和“灵活运用”的流程,使读者可以循序渐进地学习 ASP.NET Core 的每个功能模块。《ASP.NET Core 3 框架揭秘(上下册)》可供所有 .NET 从业人员阅读与参考。
作为核心的Web开发平台,ASP.NET Core可利用其极具扩展能力的请求处理管道,来支撑目前常用的开发模型,如MVC、GRPC、SingalR和Orlean等。不论从事哪种类型的Web开发,针对底层管道的了解都是必需的。如对底层框架具有足够的了解,甚至可以在ASP.NET Core平台上构建自己的Web编程模型。《ASP.NET Core 3框架揭秘》不拘泥于某种Web编程模型,而是直接从HTTP请求处理流程的视角对ASP.NET Core底层框架进行剖析,让你真正了解*本质和核心的原理。
√ 体验 .NET Core跨平台应用开发,了解 .NET Core跨平台的奥秘。
√ 剖析常用基础框架(依赖注入、文件系统、配置选项和诊断日志等)。
√ 系统介绍以IHost/IHostBuilder为核心的服务承载系统。
√ 深刻理解ASP.NET Core管道的构建方式,以及管道针对请求的处理流程。
√ 深入讲述每个常用中间件针对请求的处理逻辑。
写作源起
计算机图书市场存在一系列介绍ASP.NET Web Forms、ASP.NET MVC、ASP.NET Web API的图书,但是找不到一本专门介绍ASP.NET自身框架的图书,作为一名拥有17年工作经验的 .NET开发者,笔者对此感到十分困惑。上述这些Web开发框架都是建立在ASP.NET底层框架之上的,底层ASP.NET框架才是根基所在。过去笔者接触过很多资深的ASP.NET开发人员,发现他们对ASP.NET框架大都没有进行深入了解。
2014年,出版《ASP.NET MVC 5框架揭秘》之后,笔者原本打算写“ASP.NET框架揭秘”。但在新书准备过程中,微软推出了ASP.NET Core(当时被称为ASP.NET 5,还没有 .NET Core的概念)。所以,笔者将研究重点转移到ASP.NET Core。
本书耗时5年左右,笔者投入了大量心血。2015年年初,笔者开始了本书的写作,微软在2016年6月正式发布 .NET Core 1.0时,本书的绝大部分内容就已经完成。随后,微软不断推出新的版本,本书的内容也在不断快速“迭代”中。本书正文部分共计800多页,但笔者在写作过程中删除的部分不少于这个数字。
有人认为自己每天只是做一些简单的编程工作,根本没有必要去了解底层原理和设计方面的内容。其实,不论我们从事何种层次的工作,最根本的目的只有一个——解决问题。解决方案分两种:一种是“扬汤止沸”,另一种是“釜底抽薪”。看到锅里不断沸腾的水,大多数人会选择不断地往锅里浇冷水,笔者希望这本书能够使读者看到锅底熊熊燃烧的薪火。
本书内容
ASP.NET Core是一个全新的Web开发平台,为我们构建了一个可复用和可定制的请求处理管道,微软在它上面构建了MVC、SignalR、GRPC、Orleans这样广泛使用的Web框架,我们也可以利用它构建自己的Web框架(笔者曾经通过ASP.NET Core构建了一款GraphQL框架)。本书只关注最本质的东西,即ASP.NET Core请求处理管道,并不会涉及上述这些Web框架。本书的内容主要划分为如下4个部分。
跨平台的开发体验和实现原理
.NET Core与传统 .NET Framework最大的区别是跨平台,作为开篇入门材料,第1章通过几个简单的Hello World程序,让读者可以体验如何在Windows、macOS、Linux平台上开发 .NET Core应用,以及通过Docker容器部署ASP.NET Core应用的乐趣。第2章将告诉读者 .NET Core的跨平台究竟是如何实现的。
基础框架
ASP.NET Core框架依赖于一些基础框架,其中最重要的是注入框架。由于依赖注入框架不但是构建ASP.NET Core请求处理管道的基石,而且依赖注入也是ASP.NET Core应用的基本编程模式,所以本书的第3章和第4章对依赖注入原理及依赖注入框架的设计与编程方式进行了详细介绍。
ASP.NET Core应用具有很多读取文件内容的场景,所以它构建了一个抽象的文件系统,第5章会对这个文件系统的设计模型和两种实现方式(物理文件系统和程序集内嵌文件系统)进行详细介绍。
.NET Core针对“配置”的支持是传统 .NET 开发人员所不能想象的,所以采用两章的篇幅对这一主题进行讲解:第6章旨在介绍支持多种数据源的配置系统;不论是开发ASP.NET Core应用还是组件,都可以采用Options模式来读取配置选项,第7章会着重讲述这种强类型的配置选项编程方式。
.NET Core在错误诊断方面为我们提供了多种选择,第8章介绍了5种常用的记录诊断日志的方式。 .NET Core还提供了一个支持多种输出渠道的日志系统,该日志系统在第9章进行了详细的介绍。
管道详解
.NET Core的服务承载系统用来承载那些需要长时间运行的服务,ASP.NET Core作为最重要的服务类型被承载于该系统中,第10章会对该服务承载系统进行系统介绍。由于请求处理管道是本书的核心所在,所以采用3章的篇幅进行介绍:第11章主要从编程模型的角度来认识管道;第12章提供了一个极简版的模拟框架来展示ASP.NET Core框架的总体设计;第13章以这个模拟框架为基础,采用渐进的方式补充一些遗漏的细节,进而将ASP.NET Core框架真实的管道展现在读者眼前。
中间件
ASP.NET Core框架的请求处理管道由服务器和中间件组成,管道利用服务器来监听和接收请求,并完成最终对请求的响应,应用针对请求的处理则体现在有序排列的中间件上。微软为我们提供了一系列原生的中间件,对这些中间件的介绍全部在下册。
这部分涉及用来处理文件请求(第14章)、路由(第15章)、异常(第16章)的中间件,也包括用来响应缓存(第17章)和会话(第18章)的中间件,还包括用来实现认证(第19章)、授权(第20章)、跨域资源共享(第21章)等与安全相关的中间件。
这部分还介绍了针对本地化(第22章)和健康检查(第23章)的中间件。除此之外,这部分还介绍了用来实现主机名过滤、HTTP重写、设置基础路径等功能的中间件,这些零散的中间件全部在第24章进行介绍。
写作特点
本书是揭秘系列的第6本书。在过去的十来年里,笔者得到了很多热心读者的反馈,这些反馈对书中的内容基本上都持正面评价,但对写作技巧和表达方式的评价则不尽相同。每个作者都有属于自己的写作风格,每个读者的学习思维方式也不尽相同,两者很难出现百分之百的契合,但笔者还是决定在本书上做出改变。
本书内容采用了不一样的组织方式,笔者认为这样的方式更符合系统地学习一门全新技术的“流程”。对于每个模块,笔者采用“体验先行”的原则,提供一些简单的实例演示,使读者对当前模块的基本功能特性和编程模式具有大致的了解。同时,在编程体验中抽取一些核心对象,并利用它们构建当前模块的抽象模型,使读者只要读懂了这个模型也就了解了当前模块的总体设计。接下来我们从抽象转向具体,进一步深入介绍抽象模型的实现原理。为了使读者能够在真实项目中灵活自如地运用当前模块,笔者介绍了一些面向应用的扩展和最佳实践。总体来说,本书采用“编程体验”、“总体设计”、“具体实现”和“灵活运用”的流程,使读者能循序渐进地学习ASP.NET Core的每个功能模块。
本书综合运用3种不同的“语言”(文字语言、图表语言和编程语言)来讲述每个技术主题。一图胜千言,笔者在每章都精心设计了很多图表,这些具象的图表能够帮助读者理解技术模块的总体设计、执行流程和交互方式。除了利用编程语言描述应用编程接口(API),本书还提供了近200个实例,这些实例具有不同的作用,有的是为了演示某个实用的编程技巧或者最佳实践,有的是为了强调一些容易忽视但很重要的技术细节,有的是为了探测和证明所述的论点。
本书在很多地方会展示一些类型的代码,但是这些代码和真正的源代码是有差异的,两者的差异缘于以下几个原因:第一,源代码在版本更替中一直在发生改变;第二,由于篇幅的限制,笔者刻意删除了一些细枝末节的代码,如针对参数的验证、诊断日志的输出和异常处理等;第三,很多源代码其实都具有优化的空间。综上所述,本书提供的代码片段旨在揭示设计原理和实现逻辑,不是为了向读者展示源代码。
目标读者
虽然本书关注的是ASP.NET Core自身框架提供的请求处理管道,而不是具体某个应用编程框架(如MVC、SignalR、GRPC等),但是本书适合所有 .NET技术从业人员阅读。
笔者认为任何好的设计都应该是简单的,唯有简单的设计才能应对后续版本更替中出现的复杂问题。从这个意义上讲,ASP.NET框架就是好的设计。因为自正式推出的那一刻起,ASP.NET框架的总体设计基本上没有发生改变。ASP.NET Core的设计同样是好的设计,其简单的管道式设计在未来的版本更替中也不会发生太大的改变,既然是好的设计,它就应该是简单的。
正如上面所说,本书采用渐进式的写作方式,那些完全没有接触过ASP.NET Core的开发人员也可以通过本书深入、系统地掌握这门技术。由于本书提供的大部分内容都是独一无二的,即使是资深的 .NET开发设计人员,也能在书中找到很多不甚了解的盲点。
关于作者
蒋金楠,同程艺龙技术专家。知名IT博主(多年来一直排名博客园第一位),拥有个人微信公众号“大内老A”;2007—2018年连续12次被评为微软MVP(最有价值专家),也是少数跨多领域(Solutions Architect、Connected System、Microsoft Integration和ASP.NET/IIS等)的MVP之一;畅销IT图书作者,先后出版了《WCF全面解析》、《ASP.NET MVC 4框架揭秘》、《ASP.NET MVC 5框架揭秘》和《ASP.NET Web API 2框架揭秘》等著作。
致谢
本书得以顺利出版离不开博文视点张春雨团队的辛勤努力,他们的专业水准和责任心为本书提供了质量保证。此外,徐妍妍在本书写作过程中做了大量的校对工作,在此表示衷心感谢。
本书支持
由于本书是随着ASP.NET Core一起成长起来的,并且随着ASP.NET Core的版本更替进行了多次“迭代”,所以书中某些内容最初是根据旧版本编写的,新版本对应的内容发生改变后相应内容可能没有及时更新。对于ASP.NET Core的每次版本升级,笔者基本上会尽可能将书中的内容做相应的更改,但其中难免有所疏漏。由于笔者的能力和时间有限,书中难免存在不足之处,恳请广大读者批评指正。
笔者博客:http://www.cnblogs.com/artech
笔者微博:http://www.weibo.com/artech
笔者电子邮箱:[email protected]
笔者微信公众号:大内老A
第1章 全新的开发体验 1
第2章 跨平台的奥秘 27
第3章 依赖注入(上篇) 58
第4章 依赖注入(下篇) 89
第5章 文件系统 126
第6章 配置选项(上篇) 155
第7章 配置选项(下篇) 215
第8章 诊断日志(上篇) 258
第9章 诊断日志(下篇) 317
第10章 承载系统 377
第11章 管道(上篇) 421
第12章 管道(中篇) 467
第13章 管道(下篇) 480
附录A 实例演示1 533
第14章 静态文件 537
第15章 路由 571
第16章 异常处理 607
第17章 缓存 642
第18章 会话 681
第19章 认证 694
第20章 授权 747
第21章 跨域资源共享 773
第22章 本地化 793
第23章 健康检查 822
第24章 补遗 856
服务很好,主要是速度很快,心仪的宝贝到手终于可以开封看了
2020-03-19 14:54:27
好书值得深入探讨
2020-03-29 23:37:13
蒋老师的书,内容没得说,非常好。 印刷质量也很好。
2020-03-19 16:02:08
社区大佬蒋老师的书必须买
2020-03-19 14:51:13
纸张厚度还不错,内容还没看,一定要抽时间读一读
2020-03-20 22:51:20
大佬的书,质量是很有保证的,非常推荐开发的小伙伴们看看,至少面试时也能多吹几句!
2020-03-19 15:36:22
大神写的书,必须支持一下。当然内容很硬核,值得一阅。
2020-03-25 16:05:45
挺好的,比较划算
2020-03-19 14:42:07
很早就等这本书了
2020-03-25 11:53:09
书非常好
2020-03-19 15:52:10