共用方式為


新式 Web 應用程式的特性

小提示

此內容摘自電子書《使用 ASP.NET Core 和 Azure 架構現代化 Web 應用程式》,可在 .NET Docs 上取得,或下載免費 PDF 以便離線閱讀。

ASP.NET Core 與 Azure 架構現代 Web 應用程式的電子書封面縮圖。

"… 使用適當的設計,功能能夠降低成本。 這種方法很艱巨,但繼續成功。
- 鄧尼斯·裡奇

新式 Web 應用程式具有比以往更高的使用者期望和更高的需求。 現今的 Web 應用程式預計將從世界各地 24/7 取得,幾乎可從任何裝置或螢幕大小使用。 Web 應用程式必須安全、靈活、可調整,以符合尖峰需求。 越來越多的複雜案例應該透過使用 JavaScript 建置在用戶端上的豐富用戶體驗來處理,並透過 Web API 有效率地通訊。

ASP.NET Core 已針對新式 Web 應用程式和雲端式裝載案例進行優化。 其模組化設計可讓應用程式只依賴實際使用的功能,改善應用程式安全性和效能,同時降低裝載資源需求。

參考應用程式:eShopOnWeb

本指南包含參考應用程式 eShopOnWeb,示範一些原則和建議。 應用程式是簡單的在線商店,可支援瀏覽襯衫、咖啡杯和其他營銷項目的目錄。 參考應用程式是刻意簡單的,以便輕鬆瞭解。

eShopOnWeb

圖 2-1。 eShopOnWeb

參考應用程式

雲端裝載且可調整

ASP.NET Core 已針對雲端進行優化(公用雲端、私人雲端、任何雲端),因為它是低記憶體和高輸送量。 ASP.NET Core 應用程式的使用量較小,表示您可以在相同的硬體上裝載更多資源,並使用隨用隨付雲端裝載服務時,支付較少的資源費用。 更高的吞吐量意味著您可以在相同的硬體基礎上,透過應用程式服務更多客戶,進一步減少對伺服器和主機基礎設施的投資需求。

跨平臺

ASP.NET Core 是跨平臺,可以在 Linux、macOS 和 Windows 上執行。 這項功能為使用 ASP.NET Core 建置的應用程式開發和部署開啟了許多新選項。 Docker 容器 -- Linux 和 Windows - 可以裝載 ASP.NET Core 應用程式,讓他們利用 容器和微服務的優點。

模組化與鬆散結合

NuGet 套件是 .NET Core 中的核心元件,ASP.NET Core 應用程式由許多程式庫透過 NuGet 組成。 這種功能的細緻程度有助於確保應用程式僅依賴並部署實際所需的功能,從而減少不必要的部署和安全漏洞的風險範圍。

ASP.NET Core 也完全支援內部和應用層級的 相依性插入。 介面可以有多個實作,可以根據需要進行交換。 相依性插入可讓應用程式鬆散地結合這些介面,而不是特定的實作,使其更容易擴充、維護和測試。

使用自動化測試輕鬆進行測試

ASP.NET Core 應用程式支援單元測試,以及其鬆散結合和支援相依性插入,可讓您輕鬆地將基礎結構考慮與假實作交換,以供測試之用。 ASP.NET Core 也隨附 TestServer,可用來在記憶體中裝載應用程式。 然後,功能測試可以對這個內存伺服器發送請求,運行整個應用程式堆疊(包括中間件、路由、模型綁定、篩選等),並接收回應,這一切都僅需比在實際伺服器上裝載應用程式並透過網路層提出要求所需的時間少得多。 這些測試對於在新式 Web 應用程式中越來越重要之 API 來說特別容易撰寫且有價值。

支援的傳統和 SPA 行為

傳統 Web 應用程式牽涉到很少的客戶端行為,但改為依賴伺服器來進行所有瀏覽、查詢和更新應用程式可能需要進行。 使用者所做的每個新作業都會轉譯成新的 Web 要求,結果會在用戶瀏覽器中重載完整頁面。 傳統模型-View-Controller (MVC) 架構通常會遵循此方法,每個新要求都會對應至不同的控制器動作,進而使用模型並傳回檢視。 特定頁面上的一些個別作業可能會使用 AJAX(異步 JavaScript 和 XML)功能來增強,但應用程式的整體架構使用了許多不同的 MVC 檢視和 URL 端點。 此外,ASP.NET Core MVC 也支援 Razor Pages,這是組織 MVC 樣式頁面更簡單的方式。

相比之下,單頁應用程式(SPA)涉及很少動態產生的伺服器端頁面載入(如果有的話)。 許多 SPA 會在靜態 HTML 檔案內初始化,該檔案會載入必要的 JavaScript 連結庫以啟動並執行應用程式。 這些應用程式會針對其數據需求大量使用 Web API,而且可以提供更豐富的用戶體驗。 Blazor WebAssembly 提供使用 .NET 程式代碼建置 SPA 的方法,然後在用戶端的瀏覽器中執行。

許多 Web 應用程式牽涉到傳統 Web 應用程式行為(通常是內容)和 SPA 的組合(適用於互動性)。 ASP.NET Core 支援相同應用程式中的MVC(檢視或頁面型)和 Web API,以及使用相同的工具和基礎架構連結庫。

簡單開發和部署

ASP.NET Core 應用程式可以使用簡單的文字編輯器和命令行介面,或 Visual Studio 等功能完整的開發環境來撰寫。 整合型應用程式通常會部署到單一端點。 在持續整合 (CI) 和持續傳遞 (CD) 管線中,部署可以輕鬆地自動進行。 除了傳統的 CI/CD 工具,Microsoft Azure 已整合 Git 存放庫的支援,而且可以在對指定的 Git 分支或標記進行更新時自動部署更新。 Azure DevOps 提供功能完整的 CI/CD 建置和部署管線,而 GitHub Actions 為裝載於該處的專案提供另一個選項。

傳統 ASP.NET 和 Web Forms

除了 ASP.NET Core 之外,傳統 ASP.NET 4.x 仍然是建置 Web 應用程式的強固且可靠的平臺。 ASP.NET 支援MVC和Web API開發模型,以及Web Forms,非常適合豐富的頁面型應用程式開發,並具有豐富的第三方元件生態系統。 Microsoft Azure 長期支援 ASP.NET 4.x 應用程式,而且許多開發人員都熟悉此平臺。

Blazor

Blazor 隨附於 ASP.NET Core 3.0 和更新版本。 它提供使用Razor、C# 和 ASP.NET Core建置豐富互動式Web用戶端應用程式的新機制。 它提供開發新式 Web 應用程式時要考慮的另一個解決方案。 有兩個版本 Blazor 需要考慮:伺服器端和用戶端。

伺服器端 Blazor 隨著 ASP.NET Core 3.0 於 2019 年發行。 正如其名稱所暗示,它會在伺服器上執行,透過網路將用戶端文件的變更轉譯回瀏覽器。 Blazor伺服器端提供豐富的客戶端體驗,而不需要用戶端 JavaScript,也不需要針對每個用戶端頁面互動個別載入頁面。 從伺服器要求和處理載入頁面的變更,然後使用SignalR傳回用戶端。

用戶端Blazor,於 2020 年發行,消除了在伺服器上渲染變更的需求。 相反地,它會利用 WebAssembly 在用戶端內執行 .NET 程序代碼。 如果需要要求數據,用戶端仍然可以對伺服器進行 API 呼叫,但所有客戶端行為都會透過 WebAssembly在用戶端中執行,這已受到所有主要瀏覽器的支援,而且只是 JavaScript 連結庫。

參考 - 新式 Web 應用程式