ASP.NET Core 概觀
由 Daniel Roth、Rick Anderson 和 Shaun Luttin 提供
ASP.NET Core是一種跨平臺、高效能、開放原始碼架構,可用於建置現代化、已啟用雲端、網際網路連線的應用程式。
利用 ASP.NET Core,您可以:
- 建置 Web 應用程式和服務、物聯網 (IoT) 應用程式和行動後端。
- 在 Windows、macOS 和 Linux 上使用您最愛的開發工具。
- 部署到雲端或在內部部署。
- 在 .NET Core上執行。
為什麼要選擇 ASP.NET Core?
數百萬名開發人員會使用或已使用 ASP.NET 4.x 來建立 Web 應用程式。 ASP.NET Core是重新設計 ASP.NET 4.x,包括導致更精簡、更模組化架構的架構變更。
ASP.NET Core 提供下列優點:
- 用於建置 Web UI 和 Web API 的統一劇本。
- 可測試性架構。
- Razor 頁面可讓以頁面為主的案例更容易且更具生產力。
- Blazor 可讓您在瀏覽器中搭配 JavaScript 使用 C#。 共用伺服器端與用戶端應用程式邏輯都是以 .NET 撰寫。
- 能夠在 Windows、macOS 和 Linux 上開發並執行。
- 開放原始碼和社群導向。
- 整合的用戶端架構和開發工作流程。
- 支援使用 gRPC 裝載遠端程序呼叫 (RPC) 服務。
- 雲端就緒、以環境為基礎的組態系統。
- 內建的相依性插入。
- 輕量型、高效能且模組化的 HTTP 要求管線。
- 能夠裝載下列專案:
- 並存版本。
- 可簡化現代網頁程式開發的工具。
使用 ASP.NET Core MVC 建置 Web API 和 Web UI
ASP.NET Core MVC 提供了建置 Web API 和 Web 應用程式的功能:
- 模型檢視控制器 (MVC) 模式有助於讓您的 Web API 和 Web 應用程式可測試。
- Razor Pages是以頁面為基礎的程式設計模型,可讓建置 Web UI 更容易且更具生產力。
- Razor 標記提供頁面和MVC 檢視的生產力語法Razor。
- 標記協助程式可啟用伺服器端程式碼,以參與建立和轉譯 Razor 檔案中的 HTML 元素。
- 多個資料格式和內容交涉的內建支援可讓您的 Web API 連線到各種用戶端,包括瀏覽器和行動裝置。
- 模型繫結會自動將 HTTP 要求中的資料對應至動作方法參數。
- 模型驗證會自動執行用戶端和伺服器端驗證。
用戶端開發
ASP.NET Core與熱門的用戶端架構和程式庫緊密整合,包括 Blazor 、Angular、React和Bootstrap。 如需詳細資訊,請參閱用戶端開發底下的ASP.NET Core Blazor和相關主題。
ASP.NET Core目標架構
ASP.NET Core 3.x 或更新版本只能以 .NET Core 為目標。 一般而言,ASP.NET Core是由.NET Standard程式庫所組成。 使用 .NET Standard 2.0 撰寫的程式庫可在任何實作 .NET Standard 2.0 的 .NET 平台上執行。
將目標指向 .NET Core 有多個好處,而這些好處也隨著版本更新越來越多。 NET Core 較 .NET Framework 多的好處包含:
- 跨平台。 在 Windows、macOS 和 Linux 上執行。
- 提升效能
- 並存版本控制
- 新的 API
- 開放原始碼
建議學習路徑
針對開發 ASP.NET Core應用程式的簡介,建議您遵循下列教學課程順序:
請遵循您想要開發或維護之應用程式類型的教學課程。
應用程式類型 狀況 教學課程 Web 應用程式 新的伺服器端 Web UI 開發 開始使用 Razor 頁面 Web 應用程式 維護 MVC 應用程式 開始使用 MVC Web 應用程式 用戶端 Web UI 開發 開始使用 Blazor Web API RESTful HTTP 服務 建立 Web API† 遠端程序呼叫應用程式 使用通訊協定緩衝區的合約優先服務 開始使用 gRPC 服務 即時應用程式 伺服器與連線用戶端之間的雙向通訊 開始使用 SignalR 遵循示範如何執行基本資料存取的教學課程。
狀況 教學課程 新開發 Razor 具有 Entity Framework Core 的頁面 維護 MVC 應用程式 搭配 Entity Framework Core 的 MVC 閱讀適用于所有應用程式類型之 ASP.NET Core基本概念的概觀。
流覽相關其他主題的目錄。
†另一個 互動式 Web API 教學課程。 不需要本機安裝開發工具。 程式碼會在瀏覽器中的Azure Cloud Shell中執行,且curl用於測試。
從 .NET Framework 移轉
如需將 ASP.NET 4.x 應用程式移轉至 ASP.NET Core的參考指南,請參閱從 ASP.NET 更新至 ASP.NET Core。
ASP.NET Core是一種跨平臺、高效能、開放原始碼架構,可用於建置現代化、已啟用雲端、網際網路連線的應用程式。 利用 ASP.NET Core,您可以:
- 建置 Web 應用程式和服務、物聯網 (IoT) 應用程式和行動後端。
- 在 Windows、macOS 和 Linux 上使用您最愛的開發工具。
- 部署到雲端或在內部部署。
- 在 .NET Core 或 .NET Framework 上執行。
為什麼要選擇 ASP.NET Core?
數百萬名開發人員會使用或已使用 ASP.NET 4.x 來建立 Web 應用程式。 ASP.NET Core 是 ASP.NET 4.x 的重新設計,其架構變更可產生更為精簡且更加模組化的架構。
ASP.NET Core 提供下列優點:
- 用於建置 Web UI 和 Web API 的統一劇本。
- 可測試性架構。
- Razor 頁面可讓以頁面為主的案例更容易且更具生產力。
- Blazor 可讓您在瀏覽器中搭配 JavaScript 使用 C#。 共用伺服器端與用戶端應用程式邏輯都是以 .NET 撰寫。
- 能夠在 Windows、macOS 和 Linux 上開發並執行。
- 開放原始碼和社群導向。
- 整合的用戶端架構和開發工作流程。
- 支援使用 gRPC 裝載遠端程序呼叫 (RPC) 服務。
- 雲端就緒、以環境為基礎的組態系統。
- 內建的相依性插入。
- 輕量型、高效能且模組化的 HTTP 要求管線。
- 能夠裝載下列專案:
- 並存版本。
- 可簡化現代網頁程式開發的工具。
使用 ASP.NET Core MVC 建置 Web API 和 Web UI
ASP.NET Core MVC 提供了建置 Web API 和 Web 應用程式的功能:
- 模型檢視控制器 (MVC) 模式有助於讓您的 Web API 和 Web 應用程式可測試。
- Razor Pages是以頁面為基礎的程式設計模型,可讓建置 Web UI 更容易且更具生產力。
- Razor 標記提供頁面和MVC 檢視的生產力語法Razor。
- 標記協助程式可啟用伺服器端程式碼,以參與建立和轉譯 Razor 檔案中的 HTML 元素。
- 多個資料格式和內容交涉的內建支援可讓您的 Web API 連線到各種用戶端,包括瀏覽器和行動裝置。
- 模型繫結會自動將 HTTP 要求中的資料對應至動作方法參數。
- 模型驗證會自動執行用戶端和伺服器端驗證。
用戶端開發
ASP.NET Core與熱門的用戶端架構和程式庫緊密整合,包括 Blazor 、Angular、React和Bootstrap。 如需詳細資訊,請參閱用戶端開發底下的ASP.NET Core Blazor和相關主題。
將目標指向 .NET Framework 的 ASP.NET Core
ASP.NET Core 2.x 的目標可以是 NET Core 或 .NET Framework。 ASP.NET Core目標為.NET Framework的應用程式不是跨平臺,它們只會在 Windows 上執行。 ASP.NET Core 2.x 通常會包含 .NET Standard 程式庫。 使用 .NET Standard 2.0 撰寫的程式庫可在任何實作 .NET Standard 2.0 的 .NET 平台上執行。
實作 .NET Standard 2.0 的 .NET Framework 版本支援 ASP.NET Core 2.x:
- 建議.NET Framework最新版本。
- .NET Framework 4.6.1 或更新版本。
ASP.NET Core 3.0 或更新版本只能在 .NET Core 上執行。 如需此變更的詳細資料,請參閱A first look at changes coming in ASP.NET Core 3.0 (搶先看 ASP.NET Core 3.0 的變更)。
將目標指向 .NET Core 有多個好處,而這些好處也隨著版本更新越來越多。 NET Core 較 .NET Framework 多的好處包含:
- 跨平台。 可在 macOS、Linux 及 Windows 上執行。
- 提升效能
- 並存版本控制
- 新的 API
- 開放原始碼
為了協助關閉從.NET Framework到 .NET Core 的 API 差距,Windows 相容性套件讓 .NET Core 中提供數千個僅限 Windows 的 API。 這些 API 並不適用於 .NET Core 1.x。
建議學習路徑
我們建議遵循一系列的教學課程和文章,取得開發 ASP.NET Core 應用程式的簡介:
請遵循您想要開發或維護之應用程式類型的教學課程。
應用程式類型 狀況 教學課程 Web 應用程式 針對全新開發 開始使用 Razor 頁面 Web 應用程式 針對維護 MVC 應用程式 開始使用 MVC Web API 建立 Web API† 即時應用程式 開始使用 SignalR 遵循示範如何執行基本資料存取的教學課程。
狀況 教學課程 針對全新開發 Razor 具有 Entity Framework Core 的頁面 針對維護 MVC 應用程式 搭配 Entity Framework Core 的 MVC 閱讀適用于所有應用程式類型之 ASP.NET Core基本概念的概觀。
瀏覽其他您感興趣主題的目錄。
†您也是在 瀏覽器中完全遵循的 Web API教學課程,不需要本機 IDE 安裝。 程式碼會在 Azure Cloud Shell 中執行,且會使用 curl 來進行測試。
從 .NET Framework 移轉
如需將 ASP.NET 應用程式移轉至 ASP.NET Core的參考指南,請參閱從 ASP.NET 更新至 ASP.NET Core。
如何下載範例
許多文章及教學課程都有包含範例程式碼的連結。
- 下載 ASP.NET 存放庫 ZIP 檔案。
- 將
AspNetCore.Docs-main.zip
檔案解壓縮。 - 若要存取解壓縮存放庫中文章的範例應用程式,請使用文章範例連結中的 URL,協助您流覽至範例的資料夾。 一般而言,文章的範例連結會出現在文章頂端,其中包含連結文字 檢視或下載範例程式碼。
範例程式碼中的前置處理器指示詞
為了示範多個案例,範例應用程式會使用 #define
和 #if-#else/#elif-#endif
預處理器指示詞,選擇性地編譯和執行範例程式碼的不同區段。 針對使用這些方法的範例,請在 C# 檔案頂端設定 #define
指示詞,以定義與您要執行之案例相關聯的符號。 某些範例需要定義多個檔案頂端的符號,才能執行案例。
例如下列 #define
符號清單指出其提供四個情節 (每個符號一個情節)。 目前的範例設定會執行 TemplateCode
情節:
#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode
若要變更此範例,以執行 ExpandDefault
情節,請定義 ExpandDefault
符號,並將剩餘的符號設為註解:
#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode
如需如何使用 C# 前置處理器指示詞,以選擇編譯不同之程式碼區段的詳細資訊,請參閱 #define (C# 參考) 及 #if (C# 參考)。
範例程式碼中的區域
某些範例應用程式包含以 #region 和 #endregion C# 指示詞括住的程式碼區段。 文件建置系統會將這些區域插入轉譯的文件主題中。
區功能變數名稱稱通常包含 「snippet」 這個字。下列範例顯示名為 snippet_WebHostDefaults
的區域:
#region snippet_WebHostDefaults
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
#endregion
上述的 C# 程式碼片段會在主題的 Markdown 檔案中,透過以下程式行加以參考:
[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_WebHostDefaults)]
您可以放心地忽略 (或移除括住程式碼的 #region
和 #endregion
指示詞) 。 如果您打算執行主題中所述的範例案例,請勿改變這些指示詞內的程式碼。 您可以在試驗其他案例時自由改變程式碼。
如需詳細資訊,請參閱 Contribute to the ASP.NET documentation: Code snippets (參與 ASP.NET 文件:程式碼片段)。
重大變更和安全性諮詢
公告存放 庫會報告重大變更和安全性諮詢。 您可以選取卷 標 篩選準則,將公告限制為特定版本。
後續步驟
如需詳細資訊,請參閱下列資源:
- 開始使用 ASP.NET Core
- 使用 Visual Studio 將 ASP.NET Core 應用程式發行到 Azure
- ASP.NET Core基本概念
- 每週的 ASP.NET 社群之聲 \(英文\) 涵蓋了小組的進度和計劃, 並提供新的部落格和協力廠商軟體。