Home >> Blog >> asp net core - 什麼是 ASP.NET 核心?
asp net core - 什麼是 ASP.NET 核心?
ASP.NET Core 是一個新的開源和跨平台框架,用於構建基於雲的現代網際網路連接應用程式,例如 Web 應用程式、物聯網應用程式和移動後端。ASP.NET Core 應用可以在.NET Core或完整的 .NET Framework 上運行。它的架構旨在為部署到雲或在本地運行的應用程式提供優化的開發框架。它由具有最小開銷的模塊化組件組成,因此您在構建解決方案時保持靈活性。您可以在 Windows、Mac 和 Linux 上跨平台開發和運行 ASP.NET Core 應用程式。ASP.NET Core 在GitHub 上是開源的。
為什麼要構建 ASP.NET Core?
ASP.NET 的第一個預覽版大約在 15 年前作為 .NET Framework 的一部分發布。從那時起,數以百萬計的開發人員使用它來構建和運行出色的 Web 應用程式,並且多年來我們已經為其添加和發展了許多功能。
ASP.NET Core 有許多架構更改,這些更改導致框架更加精簡和模塊化。ASP.NET Core 不再基於System.Web.dll。它基於一組精細且經過精心設計的NuGet包。這允許您優化您的應用程式以僅包含您需要的 NuGet 包。較小的應用程式表面積的好處包括更嚴格的安全性、更少的服務、改進的性能以及在按使用量付費的模式中降低成本。
使用 ASP.NET Core,您可以獲得以下基本改進:
- 用於構建 Web UI 和 Web API 的統一故事
- 現代客戶端框架和開發工作流程的集成
- 基於雲環境的配置系統
- 內置依賴注入
- 新的輕量級和模塊化 HTTP 請求管道
- 能夠在 IIS 上託管或在您自己的進程中自託管
- 基於.NET Core構建,支持真正的並行應用程式版本控制
- 完全作為NuGet 包提供
- 簡化現代 Web 開發的新工具
- 在 Windows、Mac 和 Linux 上構建和運行跨平台 ASP.NET 應用程式
- 以開源和社區為中心
應用剖析
ASP.NET Core 應用程式只是一個控制台應用程式,它在其Main方法中創建一個 Web 伺服器:
using System;
using Microsoft.AspNetCore.Hosting;
namespace aspnetcoreapp
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseStartup
.Build();
host.Run();
}
}
}
Main使用WebHostBuilder遵循構建器模式的 來創建 Web 應用程式主機。構建器具有定義 Web 伺服器(例如UseKestrel)和啟動類 ( UseStartup) 的方法。在上面的示例中,使用了 Kestrel Web 伺服器,但可以指定其他 Web 伺服器。我們將UseStartup在下一節中展示更多資訊。WebHostBuilder提供了許多可選方法,包括UseIISIntegration在 IIS 和 IIS Express 中託管以及UseContentRoot指定根內容目錄。Build和Run方法構建將IWebHost託管應用程式並啟動它以偵聽傳入的 HTTP 請求。
啟動
UseStartupon 方法WebHostBuilder指定Startup應用程式的類。
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseStartup< Startup>()
.Build();
host.Run();
}
}
您可以在該類Startup中定義請求處理管道以及配置應用所需的任何服務。該類Startup必須是公共的並包含以下方法:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app)
{
}
}
- ConfigureServices定義您的應用程式使用的服務(參見下面的服務)(例如 ASP.NET MVC Core 框架、Entity Framework Core、Identity 等)
- Configure定義請求管道中的中間件
- 有關詳細資訊,請參閱應用程式啟動
服務
服務是用於在應用程式中共同使用的組件。服務是通過依賴注入提供的。ASP.NET Core 包含一個簡單的內置控制反轉 (IoC) 容器,該容器默認支持構造函數注入,但可以輕鬆替換為您選擇的 IoC 容器。除了松耦合的好處之外,DI 還使服務在您的應用程式中可用。例如,日誌記錄在您的整個應用程式中都可用。有關更多詳細資訊,請參閱依賴注入。
中間件
在 ASP.NET Core 中,您使用Middleware組成您的請求管道。ASP.NET Core 中間件對 an 執行異步邏輯HttpContext,然後調用序列中的下一個中間件或直接終止請求。您通常通過依賴 NuGet 包並在方法中調用相應的UseXYZ擴展方法來“使用”中間件。IApplicationBuilderConfigure
ASP.NET Core 帶有一組豐富的預構建中間件:
- 靜態文件
- 路由
- 驗證
您還可以編寫自己的自定義中間件。
您可以將任何基於OWIN的中間件與 ASP.NET Core 一起使用。有關詳細資訊,請參閱Open Web Interface for .NET (OWIN)。
伺服器
ASP.NET Core 託管模型不直接監聽請求;相反,它依賴於 HTTP伺服器實現將請求轉發到應用程式。轉發的請求被包裝為一組功能接口,然後應用程式將這些接口組合成一個HttpContext. ASP.NET Core 包含一個名為Kestrel的託管跨平台 Web 伺服器,您通常會在IIS或nginx等生產 Web 伺服器後面運行它。
內容根
內容根是應用程式使用的任何內容的基本路徑,例如其視圖和 Web 內容。默認情況下,內容根目錄與託管應用程式的可執行文件的應用程式基本路徑相同;可以使用WebHostBuilder指定替代位置。
網絡根
應用程式的 Web 根目錄是項目中公共靜態資源(如 css、js 和圖像文件)的目錄。默認情況下,靜態文件中間件將僅提供來自 Web 根目錄(和子目錄)的文件。Web 根路徑默認為
配置
ASP.NET Core 使用新的配置模型來處理簡單的名稱-值對。新的配置模型不是基於System.Configuration或web.config;相反,它從一組有序的配置提供程式中提取。內置配置提供程式支持多種文件格式(XML、JSON、INI)和環境變量,以啟用基於環境的配置。您還可以編寫自己的自定義配置提供程式。
有關詳細資訊,請參閱配置。
環境
環境,如“開發”和“生產”,是 ASP.NET Core 中的一流概念,可以使用環境變量進行設置。有關詳細資訊,請參閱使用多個環境。
使用 ASP.NET Core MVC 構建 Web UI 和 Web API
- 您可以創建遵循模型-視圖-控制器 (MVC) 模式的結構良好且可測試的 Web 應用程式。請參閱MVC和測試。
- 您可以構建支持多種格式並完全支持內容協商的 HTTP 服務。請參閱格式化響應數據
- Razor提供了一種高效的語言來創建視圖
- Tag Helpers使伺服器端程式碼能夠參與在 Razor 文件中創建和呈現 HTML 元素
- 您可以使用自定義或內置格式化程式(JSON、XML)創建完全支持內容協商的 HTTP 服務
- 模型綁定自動將來自 HTTP 請求的數據映射到操作方法參數
- 模型驗證自動執行客戶端和伺服器端驗證
客戶端開發
ASP.NET Core 旨在與各種客戶端框架無縫集成,包括AngularJS、KnockoutJS和Bootstrap。有關詳細資訊,請參閱客戶端開發。