1. 程式人生 > 其它 >.NET Core 實戰筆記3 ASP.NET Core

.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

來建立 Web 應用。ASP.NET Core 是重新設計的ASP.NET Core ,對體系結構進行了更改,提供更精簡的模組化框架。

ASP.NET Core 具有如下優點:

  • 生成 Web UI 和 Web API 的統一場景。
  • 新式客戶端框架與開發工作流的整合。
  • 基於環境的雲就緒配置系統。
  • 內建依賴項注入。
  • 輕型高效能模組化 HTTP 請求管道。
  • 能夠在 IIS 上進行託管或在自己的程序中進行自託管。
  • 可以在.NET Core上執行,支援真正的並行應用版本控制。
  • 簡化新式 Web 開發的工具。
  • 能夠在 Windows、macOS 和 Linux 進行生成和執行。
  • 開源和關注社群。

ASP.NET Core

完全作為 NuGet 包的一部分提供。 這可優化應用,使其只包含需要的 NuGet 包。 較小的應用圖面區域的優勢包括:提升安全性、減少維護和提高效能。

ASP.NET Core 應用

ASP.NET Core應用其實就是在Main中建立一個Web伺服器的簡單控制檯應用程式。

如上圖,Main方法呼叫遵循builder模式的WebHostBuilder,用於建立一個Web應用程式的宿主。這個builder具有定義Web伺服器(如UseKestrel)和startup型別(UseStartup)的方法。

BuildRun方法構建了用於宿主應用程式的IWebHost,然後啟動它來監聽傳入的HTTP請求。

Startup

上面的Main方法中有寫到WebHostBuilderUseStartup方法為應用制定了Startup類

Startup類

Startup類 可以用來定義請求和處理管道和配置應用需要的服務。Starup類必須是public的,內容例項如下:

ASP.NET Core中,Startup類 提供了應用程式的入口並充當為應用程式的啟動點。ASP.NET會在主程式集中搜索名為Startup的類,Startup類能夠選擇性地在建構函式中接受通過依賴注入提供的依賴項,將要被配置的應用程式的方法應定義於Stratup類的建構函式中,如ConfigurationStartup類必須定義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伺服器之後。