ASP.NETCore是微软提供的强大的web框架,它有很多潜在的强大而有用的功能。
本专栏的目标是帮助您把框架的隐藏能力最大限度地发挥出来,让您能够按需定制ASPNETCore框架。本专栏提供了一种具体的操作和实现方法,可以让你在短时间尽可能地提高效率。
架构概览
接下来,我们将介绍ASP.NETCore的基础架构及其组件。这专栏讨论了架构的几乎所有组成部分。下图显示了ASP.NETCore6.0的基础架构,让我们从下往上快速浏览一下:
底部是Host层,它是引导web服务和启动ASP.NETCore所需的所有的东西,包括日志记录、配置和服务提供者(serviceprovider),这些对象都是上层需要的依赖项。
Host层之上是中间件层。该层负责处理请求对象,比如错误处理、权限控制、HSTS、CORS等等。
此外,还有路由层,它根据定义的路由模式将请求路由到端点endpoints。端点路由是NETCore的新层,它将路由与上面的UI层分离,以支持不同端点的路由,包括Blazor、gRPC和Signal。
提醒:在ASP.NETCore的早期版本中,路由是MVC层的一部分,其他每个UI层都需要实现自己的路由。
实际端点由第四层UI层提供,该层包含著名的UI框架Blazor、gRPC、SignalR和MVC。作为ASP.NETCore开发人员,这里是你主要编码的地方。
最后,在MVC上面,您将看到WebAPI和Razor页面。
专栏涵盖的内容
本专栏并未涵盖架构概述中提到的所有主题。本书涵盖了Host层的大部分主题,因为Host层包含了您可能需要定制的大部分内容。本专栏讨论了中间件和路由,以及MVC特性和一些更多的WebAPI主题,在这些主题中你可以做一些魔性化定制。
在每篇的开头,我会提示主题的难度级别。
专栏未涵盖的内容
专栏不包括RazorPages、Signal、gRPC和Blazor。
原因是gRPC和Signal已经非常专业化,不需要定制。Blazor是ASP.NETCore的新成员,虽然尚未广泛使用。此外,笔者本身对Blazor还不够熟悉,不知道定制Blazor的所有细节。Razor页面位于MVC框架之上,MVC的定制也适用于Razor页面。
专栏的阅读对象
本书面向使用ASP.NETCore的web开发人员,他们可能需要更改框架的默认行为才能完成任务。读者应具备ASP.NETCore的基本知识,因为本专栏没有介绍这些技术的基础知识。读者还应该对VisualStudio、VisualStudioCode或任何其他支持ASP.NETCore和C#的代码编辑器有很好的了解。
专栏涵盖的章节
第1篇:“自定义日志记录”,介绍如何自定义日志记录行为以及如何添加自定义日志记录提供程序。
第2篇:自定义应用程序配置,帮助您了解如何使用不同的配置源和添加自定义配置提供程序。
第3篇:定制依赖注入,介绍依赖注入(DI)如何工作,以及如何使用不同的DI容器。
第4篇:用Kestrel配置和定制HTTPS,探讨如何以不同的方式配置HTTPS。
第5篇:配置WebHostBuilder,帮助您了解如何在托管层上设置配置。
第6篇:使用不同的托管模型,介绍在不同平台上使用不同类型的托管。
第7篇:使用IHostedService和BackgroundService,让您了解如何在后台执行任务。
第8篇:编写定制中间件,探讨使用中间件的HTTP上下文。
第9篇:“端点路由”,介绍如何使用新路由提供自定义端点。
第10篇:定制ASP.NETCore的Identity,介绍如何扩展应用程序的用户属性,并帮助您更改IdentityUI。
第11篇:配置Identity(身份管理),帮助您管理用户及其角色。
第12篇:使用自定义OutputFormatter的ContentNegotiation(内容协商),介绍如何基于HTTPAccept头输出不同的内容类型。
第13章,使用自定义ModelBinder管理输入,帮您创建具有不同内容类型的输入模型。
第14章,创建自定义ActionFilter,介绍如何使用ActionFilter的面向切面编程。
第15章,使用缓存,帮助您提高应用程序的性能。
第16章,创建自定义TagHelper,通过创建TagHelper简化您的UI层。
技术准备
读者应具备ASP.NETCore的基本知识,以及VisualStudio、VisualStudioCode或任何其他支持ASP.NETCore代码编辑器。
安装最新的NET6.0SDK。请在以下网址查找最新版本。
使用任何支持ASPNETCore的代码编辑器。我们建议使用VisualStudioCode(网址),因为它可在所有平台上使用。
专栏中的所有项目都将使用控制台、命令提示符、shell或PowerShell创建。不建议使用VisualStudio创建项目,因为基本配置可能会被更改。
除了NET6.0,理论上也支持NETCore3.1或NET5.0,有些章节介绍了NET6.0和5.0的些许差异。
最后
欢迎你加入我的知识星球,学习更新更全的.NET知识。