.NET Core 實戰筆記3 ASP.NET Core
期末告一段落,有一週的時間給我折騰折騰,那就繼續dotNet Core吧,先列一下文章列表。
- .NET Core 實戰筆記1-介紹和安裝
- .NET Core 實戰筆記2-從命令開始
ASP.NET Core 介紹
ASP.NET Core
是一個跨平臺的高效能開源框架,用於生成基於雲且連線 Internet 的新式應用程式。
使用 ASP.NET Core
,可以:
- 生成 Web 應用和服務、IoT 應用和移動後端。
- 在 Windows、macOS 和 Linux 上使用喜愛的開發工具。
- 部署到雲或本地
- 在
.NET Core
或.NET Framework
上執行。
數百萬開發人員在使用(並繼續使用)ASP.NET Core
ASP.NET Core
是重新設計的ASP.NET Core
,對體系結構進行了更改,提供更精簡的模組化框架。
ASP.NET Core
具有如下優點:
- 生成 Web UI 和 Web API 的統一場景。
- 新式客戶端框架與開發工作流的整合。
- 基於環境的雲就緒配置系統。
- 內建依賴項注入。
- 輕型高效能模組化 HTTP 請求管道。
- 能夠在 IIS 上進行託管或在自己的程序中進行自託管。
- 可以在
.NET Core
上執行,支援真正的並行應用版本控制。 - 簡化新式 Web 開發的工具。
- 能夠在 Windows、macOS 和 Linux 進行生成和執行。
- 開源和關注社群。
ASP.NET Core
ASP.NET Core 應用
ASP.NET Core
應用其實就是在Main中建立一個Web伺服器的簡單控制檯應用程式。
如上圖,Main方法
呼叫遵循builder
模式的WebHostBuilder
,用於建立一個Web應用程式的宿主。這個builder
具有定義Web伺服器(如UseKestrel
)和startup型別(UseStartup
)的方法。
Build
和Run
方法構建了用於宿主應用程式的IWebHost
,然後啟動它來監聽傳入的HTTP請求。
Startup
上面的Main方法中有寫到WebHostBuilder
的UseStartup
方法為應用制定了Startup類
。
Startup類
Startup類
可以用來定義請求和處理管道和配置應用需要的服務。Starup
類必須是public
的,內容例項如下:
在ASP.NET Core
中,Startup類
提供了應用程式的入口並充當為應用程式的啟動點。ASP.NET
會在主程式集中搜索名為Startup
的類,Startup
類能夠選擇性地在建構函式中接受通過依賴注入提供的依賴項,將要被配置的應用程式的方法應定義於Stratup
類的建構函式中,如Configuration
。Startup
類必須定義Configure
方法,可以選擇定義一個ConfigureServices
方法,這些方法在應用程式啟動時被呼叫。
Configure方法
Configure
方法用於定義請求管道中的中介軟體,即指定ASP.NET
應用程式將如何響應每一個HTTP請求,簡言之,可以配置每個請求都接收相同的響應。事實上,大多數應用程式都需要更復雜的管道配置並將其封裝與中介軟體(middleware)中,並通過擴充套件方法新增到IApplicationBuilder
上。
ConfigureServices方法
ConfigureServices
方法用於定義應用所使用的服務(如ASP.NET MVC Core Framework
,Entity Framework Core
,Identity
等)。
服務
服務是應用中用於通用呼叫的元件。服務通過依賴注入獲取並使用。ASP.NET Core內建了一個簡單的控制反轉(IoC)容器,它預設支援構造器注入,並且可以方便的替換成自己的選用的IoC容器。由於他的鬆耦合性,依賴注入(DI)使服務在整個應用中都可以使用。例如,Logging在整個應用中都可用。
中介軟體
在ASP.NET Core
中個可以使用中介軟體構建請求處理管道。ASP.NET Core
中介軟體為一個HttpContext
執行非同步邏輯,然後按順序呼叫下一個中介軟體或者直接終止請求。一般來說,要使用一箇中間件,只需要在Configure
方法中呼叫IApplicationBuilder
上一個對應的UseXYZ
擴充套件方法即可。
ASP.NET Core
帶來了豐富的內建中介軟體:
- 靜態檔案(Static files)
- 路由(Routing)
- 身份驗證(Authentication)
可以建立自定義中介軟體,或者在ASP.NET Core
中使用任何基於OWIN
的中介軟體。
伺服器
ASP.NET Core
託管模式並不會直接監聽請求,而是依賴一個HTTP Server
實現來轉發請求到應用程式。這個轉發的請求會以feature
介面的形式被包裝,然後被應用程式組合到一個HttpContext
中去。ASP.NET Core
包含了一個託管的跨平臺Web伺服器:Kestrel
,通常執行在一個IIS或者Nginx的生產Web伺服器之後。