隨著 .NET 8 的釋出,.NET Aspire 也隨之釋出[1],這是一個全家桶框架旨在加快基於雲的應用程式的構建。.NET Aspire 從一開始就整合了關鍵元件,例如遙測和執行狀況檢查。它還承諾提供無縫的本地開發人員體驗,該體驗可以有效擴充套件以滿足雲應用程式開發的需求。Microsoft 鼓勵對 .NET Aspire 預覽版(目前在 GitHub 上提供[2])提供反饋。
.NET Aspire提供瞭如下3個方面的能力,來幫助我們使用.NET開發分層、雲就緒的可觀測、本地與生產環境一致的分散式雲原生應用程式:
微服務的編排能力:在開發和線上環境自動處理多個微服務之間的連線和依賴,也即內建了服務發現等基礎能力。
基礎服務的訪問能力:透過提供一系列Nuget包,把對一些基礎服務的訪問進行統一封裝(比如,快取、資料庫、訊息佇列等),方便微服務直接使用。
工具鏈的相應配合:在VS和VSCode等工具中新增對以上編排能力的支援,並提供一系列開箱即用的模板,來方便開發人員進行開發、除錯和部署雲原生應用。
Aspire 包含了 2020 年首次釋出的名為 Project Tye 的早期實驗中首次使用的元素,儘管 Project Tye 是為 Kubernetes 設計的,而 Aspire 沒有做出這種假設,Aspire 也是。Project Tye 在首次釋出時受到歡迎,但在最近的一年幾乎沒有活動。毫無疑問的是社群開發人員都很想知道Microsoft是否會兌現承諾, 隨著.NET 8的釋出,Aspire繼承了Tye 的最新狀態。根據 .NET 團隊的首席專案經理 Glenn Condron 的說法,它將在 2024 年春季全面上市,距離現在只有六個月的時間,昨天釋出的是第一個預覽版。
Aspire 將成為 .NET 8 的一部分,第一個版本是v8.0.0-preview.1.23557.2[3]。完整的工具支援位於最新的 Visual Studio 預覽版 17.9 預覽版 1 中,這意味著必須使用 Windows 進行開發,儘管 Linux 和 Mac 使用者可以在沒有某些開發人員工具的情況下使用它。
當前的Aspire預覽版面向Visual Studio和Azure,很多人的第一感覺就是面向Azure搞的一個東西,不過他其實也包含了Dapr的支援,因此Aspire 可以支援Dapr 的所有平臺,而不是侷限於Azure 這樣的微軟平臺。
初學者 Aspire 應用程式示例包括 Blazor Web 應用程式、後端 API 和 Redis 快取。解決方案中新增了兩個 Aspire 專案,一個名為 AppHost,它作為分散式應用程式的一部分執行任何 .NET 專案,另一個名為 ServiceDefaults,它提供包括服務發現、遙測和執行狀況檢查終結點在內的功能。包括一個開發人員儀表板,其中列出了服務、收集和顯示日誌,並顯示了應用程式各部分的指標和跟蹤。
遙測基於用於建立和管理遙測資料的 Open Telemetry [4]專案,然後可以將這些資料傳遞給各種工具。Open Telemetry 得到了大約 40 家供應商的支援,包括 Grafana、Splunk、New Relic、Datadog 和 Dynatrace 等熟悉的名字,以及 Jaeger 和 Prometheus 等開源專案。
Aspire 應用程式的部署旨在基於容器。Aspire 可以生成一個清單來定義應用程式中不同服務之間的關係,然後工具可以使用該清單進行部署。Microsoft 提供與 Azure 容器應用程式的整合,“在一個步驟中立即配置和部署 Azure 資源。
現有應用程式可以新增 Aspire 支援,前提是它們已升級到 .NET 8。然後,在 Visual Studio 中,開發人員可以新增 Aspire Orchestration Support,這會將 AppHost 和 ServiceDefaults 專案新增到解決方案中。
Aspire 支援元件,其中每個元件都必須預設提供彈性、執行狀況檢查和遙測,並與依賴項注入整合,這是一種嚮應用程式新增服務的技術,通常用於 .NET 應用程式。Condron 以 Redis 元件為例,該元件透過一次呼叫 AddRedis 來新增 Redis 快取,從而建立可以根據需要覆蓋的預設配置。
初始元件集包括 PostgreSQL、RabbitMQ、Redis、SQL Server、Azure Blob 儲存、Azure Cosmos DB、Azure Key Vault、Azure 服務匯流排和 Azure 儲存佇列。資料庫元件附帶Entity Framework和普通客戶端版本,其中Entity Framework是標準的 .NET ORM(物件關係對映)庫。
它為雲原生應用程式提供儀表板,可用於檢視日誌和指標、分散式跟蹤、依賴項等。
透過儀表板,您可以列出已分發的服務並顯示日誌。 它顯示一個紅色圓圈表示有問題的服務,使人們更容易瞭解雲原生分散式應用程式的狀態。
此外,“跟蹤”功能允許對一組服務如何處理使用者操作進行分散式跟蹤。
相關連結:
- [1].NET Aspire 也隨之釋出:https://devblogs.microsoft.com/dotnet/introducing-dotnet-aspire-simplifying-cloud-native-development-with-dotnet-8/
- [2].NET Aspire 預覽版(目前在 GitHub 上提供):https://github.com/dotnet/aspire
- [3]v8.0.0-preview.1.23557.2: https://github.com/dotnet/aspire/releases/tag/v8.0.0-preview.1.23557.2
- [4]Open Telemetry:https://opentelemetry.io/