ASP.NET Core 概述
ASP.NET Core 是一個跨平臺的高效能開源框架,用於生成基於雲且連線 Internet 的新式應用程式。使用 ASP.NET Core,您可以:
- 建置 Web 應用程式和服務、IoT應用和移動後端。
- 在 Windows、macOS 和 Linux 上使用喜愛的開發工具。
- 部署到雲或本地。
- 在 .NET Core 或 .NET Framework 上執行。
ASP.NET Core 的優點:
- 生成 Web UI 和 Web API 的統一場景。
- 針對可測試性進行構建。
- Razor Pages 可以使基於頁面的編碼方式更簡單高效。
- 能夠在 Windows、macOS 和 Linux 上進行開發和執行。
- 開放原始碼和以社群為中心。
- 整合新式客戶端和開發工作流。
- 基於環境的雲就緒配置系統。
- 內建依賴項注入。
- 輕型的高效能模組化 HTTP 請求管道。
- 能夠在 IIS、Nginx、Apache、Dockers 上進行託管或在自己的程序中進行自託管。
- 定目標到 .NET Core 時,可以使用並行應用版本控制。
- 簡化新式 Web 開發工具。
使用 ASP.NET Core MVC 生成 Web API 和 Web UI:
- Model-View-Controller (MVC) 模式使 Web API 和 Web 應用可測試。
- ASP.NET Core 2.0中新增的 Razor 頁面是基於頁面的程式設計模型,可簡化 Web UI 生成並提高工作效率。
- Razor 標記提供了適用於 Razor 頁面和 MVC 檢視的高效語法。
- 標記幫助程式使伺服器端程式碼可以在 Razor 檔案中參與建立和呈現 HTML 元素。
- 內建的多資料格式和內容協商支援使 Web API 可訪問多種客戶端,包括瀏覽器和移動裝置。
- 模型繫結自動將 HTTP 請求中的資料對映到操作方法引數。
- 模型驗證自動執行客戶端和伺服器端驗證。
ASP.NET Core 2.x 可以面向 .NET Core 或 .NET Framework。面向 .NET Framework 的 ASP.NET Core 應用無法跨平臺,只能在 Windows 執行。ASP.NET Core 3.0 以及更高版本只能在 .NET Core 中執行。
面向 .NET Core 有以下幾個優勢,並且這些優勢會隨著每次釋出增加。與 .NET Framework 相比,.NET Core 的部分優勢包括:
- 跨平臺。在 macOS、Linux 和 Windows 上執行。
- 提高的效能
- 並行版本控制
- 新 API
- 開源
比較 ASP.NET Core 與 ASP.NET 4.x
ASP.NET Core | ASP.NET 4.x |
---|---|
針對 Windows、macOS 或 Linux 進行生成 | 針對 Windows 進行生成 |
Razor 頁面 是在 ASP.NET Core 2.x 及更高版本中建立 Web UI 時建議使用的方法。 另請參閱 MVCWeb API 和 SignalR。 | 使用 Web 窗體、SignalR、MVC、Web API、WebHooks 或網頁 |
每個計算機多個版本 | 每個計算機一個版本 |
使用 C# 或 F# 通過 Visual Studio、Visual Studio for Mac 或 Visual Studio Code 進行開發 | 使用 C#、VB 或 F# 通過 Visual Studio 進行開發 |
比 ASP.NET 4.x 效能更高 | 良好的效能 |
選擇 .NET Framework 或 .NET Core 執行時 | 使用 .NET Framework 執行時 |
比較 .NET Core 和 .NET Framework:
以下情況應對伺服器應用程式使用 .NET Core:
- 使用者和跨平臺需求。
- 使用者正在面向微服務。
- 使用者正在使用 Docker 容器。
- 需要高效能和可擴充套件的系統。
- 需按應用程式提供並行的 .NET 版本。
以下情況應對伺服器應用程式使用 .NET Framework:
- 應用當前使用 .NET Framework (建議擴充套件而不是遷移)。
- 應用使用不可用於 .Net Core 的第三方 .NET 庫或 NuGet 包。
- 應用使用不可用於 .Net Core 的 .Net 技術。
- 應用使用不支援 .Net Core 的平臺。
在ASP.NET Core之前,ASP.NET Framework應用程式由IIS載入。Web應用程式的入口點由InetMgr.exe建立並呼叫託管。以初始化過程中觸發HttpApplication.Application_Start()事件。開發人員第一次執行程式碼的機會是處理Application_StartGlobal.asax中的事件。
在ASP.NET Core中,Global.asax檔案不再可用,已被新的初始化過程替代。
ASP.NET Core 應用程式是在.NET Core 控制檯程式下呼叫特定的庫,這是ASP.NET Core應用程式開發的根本變化。所有的ASP.NET託管庫都是從Program開始執行,而不是由IIS託管。也就是說.NET工具鏈可以同時用於.NET Core控制檯應用程式和ASP.NET Core應用程式。
using System;
using Microsoft.AspNetCore.Hosting;
namespace aspnetcoreapp{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel() //指定宿主程式為Kestrel
.UseStartup<Startup>()// 呼叫Startup.cs類下的Configure 和 ConfigureServices
.Build();
host.Run();
}
}
以上是Program
類中Main
方法的示例程式碼,Main
方法負責初始化Web主機,呼叫Startup和執行應用程式。主機將呼叫Startup
類下面的Configure
和ConfigureServices
方法。
參考連結:
https://docs.microsoft.com/zh-cn/aspnet/core/index?view=aspnetcore-2.1