ASP.NET Core
是微軟提供的強大的web
框架,它有很多潛在的強大而有用的功能。
本專欄的目標是幫助您把框架的隱藏能力最大限度地發揮出來,讓您能夠按需定制ASP NET Core框架。本專欄提供了一種具體的操作和實現方法,可以讓你在短時間盡可能地提高效率。
架構概覽
接下來,我們將介紹ASP.NET Core
的基礎架構及其組件。這專欄討論了架構的幾乎所有組成部分。
下圖顯示了ASP.NET Core 6.0
的基礎架構,讓我們從下往上快速瀏覽一下:
底部是Host
層,它是引導web
服務和啟動ASP.NET Core所需的所有的東西,包括日志記錄、配置和服務提供者(service provider
),這些對象都是上層需要的依賴項。
Host
層之上是中間件層。該層負責處理請求對象,比如錯誤處理、權限控制、HSTS、CORS等等。
此外,還有路由層,它根據定義的路由模式將請求路由到端點endpoints
。端點路由是NET Core的新層,它將路由與上面的UI層分離,以支持不同端點的路由,包括Blazor
、gRPC
和Signal
。
提醒:在
ASP.NET Core
的早期版本中,路由是MVC層的一部分,其他每個UI層都需要實現自己的路由。
實際端點由第四層UI層提供,該層包含著名的UI框架Blazor
、gRPC
、SignalR
和MVC
。作為ASP.NET Core開發人員,這里是你主要編碼的地方。
最后,在MVC
上面,您將看到WebAPI
和Razor
頁面。
專欄涵蓋的內容
本專欄并未涵蓋架構概述中提到的所有主題。本書涵蓋了Host
層的大部分主題,因為Host
層包含了您可能需要定制的大部分內容。本專欄討論了中間件和路由,以及MVC特性和一些更多的WebAPI主題,在這些主題中你可以做一些魔性化定制。
在每篇的開頭,我會提示主題的難度級別。
專欄未涵蓋的內容
專欄不包括Razor Pages
、Signal
、gRPC
和Blazor
。
原因是gRPC
和Signal
已經非常專業化,不需要定制。Blazor
是ASP.NET Core的新成員,雖然尚未廣泛使用。此外,筆者本身對Blazor
還不夠熟悉,不知道定制Blazor
的所有細節。Razor
頁面位于MVC框架之上,MVC的定制也適用于Razor
頁面。
專欄的閱讀對象
本書面向使用ASP.NET Core
的web開發人員,他們可能需要更改框架的默認行為才能完成任務。讀者應具備ASP. NET Core
的基本知識,因為本專欄沒有介紹這些技術的基礎知識。讀者還應該對Visual Studio
、Visual Studio Code
或任何其他支持ASP.NET Core
和C#
的代碼編輯器有很好的了解。
專欄涵蓋的章節
第1篇:“自定義日志記錄”,介紹如何自定義日志記錄行為以及如何添加自定義日志記錄提供程序。
第2篇:自定義應用程序配置,幫助您了解如何使用不同的配置源和添加自定義配置提供程序。
第3篇:定制依賴注入,介紹依賴注入(DI
)如何工作,以及如何使用不同的DI
容器。
第4篇:用Kestrel
配置和定制HTTPS
,探討如何以不同的方式配置HTTPS
。
第5篇:配置WebHostBuilder
,幫助您了解如何在托管層上設置配置。
第6篇:使用不同的托管模型,介紹在不同平臺上使用不同類型的托管。
第7篇:使用IHostedService
和BackgroundService
,讓您了解如何在后臺執行任務。
第8篇:編寫定制中間件,探討使用中間件的HTTP
上下文。
第9篇:“端點路由”,介紹如何使用新路由提供自定義端點。
第10篇:定制ASP.NET Core
的Identity
,介紹如何擴展應用程序的用戶屬性,并幫助您更改Identity UI
。
第11篇:配置Identity
(身份管理),幫助您管理用戶及其角色。
第12篇:使用自定義OutputFormatter
的Content Negotiation
(內容協商),介紹如何基于HTTP Accept
頭輸出不同的內容類型。
第13章,使用自定義ModelBinder
管理輸入,幫您創建具有不同內容類型的輸入模型。
第14章,創建自定義ActionFilter
,介紹如何使用ActionFilter
的面向切面編程。
第15章,使用緩存,幫助您提高應用程序的性能。
第16章,創建自定義TagHelper
,通過創建TagHelper
簡化您的UI層。
技術準備
讀者應具備ASP.NET Core
的基本知識,以及Visual Studio
、Visual Studio Code
或任何其他支持ASP.NET Core
代碼編輯器。
安裝最新的NET 6.0 SDK
。請在以下網址查找最新版本。
使用任何支持ASP NET Core
的代碼編輯器。我們建議使用Visual Studio Code
(網址),因為它可在所有平臺上使用。
專欄中的所有項目都將使用控制臺、命令提示符、shell
或PowerShell
創建。不建議使用Visual Studio
創建項目,因為基本配置可能會被更改。
除了NET 6.0
,理論上也支持NET Core 3.1
或NET 5.0
,有些章節介紹了NET 6.0和5.0的些許差異。