ASP.NET Core基礎知識(一)【概述】
ASP.NET Core
應用是一個控制檯應用,它在其 Program.Main
方法中建立 Web 伺服器。 Main
方法是應用的託管入口點:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
.NET Core
主機:
- 載入
.NET Core
執行時。 - 使用第一個命令列引數作為包含入口點 (
Main
) 的託管二進位制檔案的路徑,並開始執行程式碼。
Main
方法呼叫 WebHost.CreateDefaultBuilder
,後者按照生成器模式來建立 Web
主機。 生成器包含定義 Web
伺服器(例如,UseKestrel
)和啟動類 (UseStartup
) 的方法。 在前面的例子中,自動分配了 Kestrel Web
伺服器。 ASP.NET Core
的 Web
主機嘗試在 Internet Information Services
(IIS)(若有)上執行。 對於其他 Web
伺服器(如 HTTP.sys
),可通過呼叫相應的擴充套件方法來使用。 啟動部分進一步介紹了 UseStartup
。
IWebHostBuilder
是 WebHost.CreateDefaultBuilder
呼叫的返回型別,它提供了許多可選方法。 其中的一些方法包括用於在 HTTP.sys
中託管應用的 UseHttpSys
,以及用於指定根內容目錄的 UseContentRoot
。 Build
和 Run
方法生成 IWebHost
物件,該物件託管應用並開始偵聽 HTTP
請求。
啟動
WebHostBuilder
上的 UseStartup
方法為你的應用指定 Startup
類:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Startup
類用於在其中配置應用所需的任何服務和定義請求處理管道。 Startup
類必須是公共類,通常包含以下方法。Startup.ConfigureServices
是可選的。
public class Startup
{
// This method gets called by the runtime. Use this method
// to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
}
// This method gets called by the runtime. Use this method
// to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
}
}
ConfigureServices
定義應用所使用的服務(如 ASP.NET Core MVC、Entity Framework Core
和標識)。 Configure
定義在請求管道中呼叫的中介軟體。
有關更多資訊,請參見ASP.NET Core 中的應用啟動。
內容根
內容根是應用所使用的任何內容的基路徑,如 Razor Pages
、MVC 檢視
和靜態資產。 預設情況下,內容根位置與用於託管應用的可執行檔案的應用基路徑相同。
Web 根 (webroot
)
應用的 webroot
是專案中的目錄,其中包含公共資源、CSS 等靜態資源、JavaScript
和圖形檔案。 wwwroot
預設為 webroot
。
對於 Razor (.cshtml)
檔案,波浪號斜槓 ~/
指向 webroot
。 以 ~/
開頭的路徑稱為虛擬路徑。
依賴關係注入(服務)
服務是應用中常用的元件。 可以通過依存關係注入 (DI
) 來獲取服務。 ASP.NET Core
包括預設支援建構函式注入
的本機控制反轉 (IoC
) 容器。 可根據需要替換預設容器。 DI 除了具備鬆散耦合優勢以外,還可以使服務(例如日誌記錄)在整個應用中可用。
有關更多資訊,請參見在 ASP.NET Core 依賴注入。
中介軟體
在 ASP.NET Core
中,使用中介軟體來撰寫請求管道。 ASP.NET Core
中介軟體在 HttpContext
上執行非同步操作,然後呼叫管道中的下一個中介軟體或終止請求。
按照慣例,通過在 Configure
方法中呼叫 UseXYZ
擴充套件方法,向管道新增名為“XYZ
”的中介軟體元件。
ASP.NET Core
包含一組豐富的內建中介軟體,你也可以編寫自己的自定義中介軟體。 ASP.NET Core
應用中支援 .NET
的開放 Web 介面 (OWIN
),它將 Web 應用與 Web 伺服器分離。
有關詳細資訊,請參閱 ASP.NET Core 中介軟體
和 ASP.NET Core中 .NET 的開放 Web 介面 (OWIN)
。
啟動 HTTP 請求
IHttpClientFactory
可訪問 HttpClient
例項以發出 HTTP
請求。
有關更多資訊,請參見啟動 HTTP
請求。
環境
環境(如“開發”環境和“生產”環境)是 ASP.NET Core
的高階概念,可使用環境變數、設定檔案和命令列引數進行設定。
有關更多資訊,請參見在 ASP.NET Core 中使用多個環境。
宿主
ASP.NET Core
應用可配置和啟動一個主機,負責應用啟動和生存期管理。
有關更多資訊,請參見ASP.NET Core 中的 Web 主機和通用主機
。
伺服器
ASP.NET Core
託管模型不直接偵聽請求。 託管模型依賴 HTTP
伺服器實現將請求轉發到應用。
ASP.NET Core
提供以下伺服器實現:
Kestrel
伺服器是跨平臺託管 Web 伺服器。Kestrel
通常使用IIS
在反向代理配置中執行。 在ASP.NET Core 2.0
或更高版本中,Kestrel
也可作為面向公眾的邊緣伺服器執行,直接向Internet
公開。IIS HTTP 伺服器
(IISHttpServer
) 是IIS
的程式內伺服器。HTTP.sys
伺服器是Windows
上適用於ASP.NET Core
的Web
伺服器。
有關更多資訊,請參見ASP.NET Core 中的 Web 伺服器實現
。
配置
ASP.NET Core
基於名稱/值對使用配置模型。 配置模型不基於 System.Configuration
或 web.config
。配置從一組有序的配置提供程式獲取設定。 內建配置提供程式支援各種檔案格式(XML、 JSON、INI
)、環境變數和命令列引數。 也可以編寫你自己的自定義配置提供程式。
有關更多資訊,請參見ASP.NET Core 中的配置
。
日誌記錄
ASP.NET Core
支援適用於各種日誌記錄提供程式的日誌記錄 API
。 內建提供程式支援向一個或多個目標傳送日誌。 可使用第三方記錄框架。
有關更多資訊,請參見ASP.NET Core 中的日誌記錄
。
錯誤處理
ASP.NET Core
的內建方案可處理應用中的錯誤,包括開發人員異常頁、自定義錯誤頁、靜態狀態內碼表和啟動異常處理。
有關更多資訊,請參見處理 ASP.NET Core 中的錯誤
。
路由
ASP.NET Core
提供將應用請求路由到路由處理程式的方案。
有關更多資訊,請參見ASP.NET Core 中的路由
。
後臺任務
後臺任務作為託管服務實現。 託管服務是一個類,具有實現 IHostedService
介面的後臺任務邏輯。
有關更多資訊,請參見在 ASP.NET Core
中使用託管服務實現後臺任務。
訪問 HttpContext
用 Razor Pages
和 MVC
處理請求時,HttpContext
自動可用。當 HttpContext
不可立即使用時,可通過 IHttpContextAccessor
介面及其預設實現 HttpContextAccessor
訪問 HttpContext
。
相關文章
- ASP.NET Core基礎知識(四)【路由】ASP.NET路由
- ASP.NET Core 2.2 基礎知識(六)【Configuration】ASP.NET
- Java基礎知識之概述(一)Java
- ASP.NET Core 2.2 基礎知識(七)【選項】ASP.NET
- ASP.NET Core基礎知識(二)【應用啟動】ASP.NET
- ASP.NET Core 2.2 基礎知識(十)【中介軟體】ASP.NET
- ASP.NET Core 2.2 基礎知識(十三)【伺服器】ASP.NET伺服器
- Docker 基礎知識 - Docker 概述Docker
- ASP.NET Core 2.2 基礎知識(八)【日誌記錄】ASP.NET
- ASP.NET Core 2.2 基礎知識(九)【處理錯誤】ASP.NET
- ASP.NET Core基礎知識(十一)【Host之Web 主機】ASP.NETWeb
- ASP.NET Core基礎知識(十四)【發出 HTTP 請求】ASP.NETHTTP
- ASP.NET Core 基礎知識(十二)【Host之通用主機】ASP.NET
- ASP.NET Core基礎知識(三)【依賴關係注入(服務)】ASP.NET
- ASP.NET Core基礎知識(五)【環境(開發、分階段、生產)】ASP.NET
- 一文了解.Net Core 3.1 Web API基礎知識WebAPI
- Core Audio音訊基礎概述音訊
- 小范筆記:ASP.NET Core API 基礎知識與Axios前端提交資料筆記ASP.NETAPIiOS前端
- 影片基礎知識(一)
- React基礎知識(一)React
- py基礎知識(一)
- SAP SD基礎知識之SD常見流程概述
- SAP SD基礎知識之信用風險管理概述
- zookeeper基礎知識分享(一)
- hadoop基礎知識分享(一)Hadoop
- JavaSE基礎知識分享(一)Java
- MySQL基礎知識分享(一)MySql
- 基礎知識
- ASP.NET Core知識之RabbitMQ元件使用(二)ASP.NETMQ元件
- 翻譯 - ASP.NET Core 基本知識 - 配置(Configuration)ASP.NET
- MySQL基礎知識小結(一)MySql
- sql基礎知識(筆記)(一)SQL筆記
- Js基礎知識(一) – 變數JS變數
- ASP.NET Web Pages基礎知識---使用WebGrid 幫助器ASP.NETWeb
- JavaScript基礎(一)概述JavaScript
- java基礎知識Java
- 1、基礎知識
- 前端基礎知識前端