Aspire 框架預覽版釋出,使雲原生開發和運維更加簡單

張善友發表於2023-11-16

隨著 .NET 8 的釋出,.NET Aspire 也隨之釋出[1],這是一個全家桶框架旨在加快基於雲的應用程式的構建。.NET Aspire 從一開始就整合了關鍵元件,例如遙測和執行狀況檢查。它還承諾提供無縫的本地開發人員體驗,該體驗可以有效擴充套件以滿足雲應用程式開發的需求。Microsoft 鼓勵對 .NET Aspire 預覽版(目前在 GitHub 上提供[2])提供反饋。

image

.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 專案新增到解決方案中。

image

Aspire 支援元件,其中每個元件都必須預設提供彈性、執行狀況檢查和遙測,並與依賴項注入整合,這是一種嚮應用程式新增服務的技術,通常用於 .NET 應用程式。Condron 以 Redis 元件為例,該元件透過一次呼叫 AddRedis 來新增 Redis 快取,從而建立可以根據需要覆蓋的預設配置。

image

初始元件集包括 PostgreSQL、RabbitMQ、Redis、SQL Server、Azure Blob 儲存、Azure Cosmos DB、Azure Key Vault、Azure 服務匯流排和 Azure 儲存佇列。資料庫元件附帶Entity Framework和普通客戶端版本,其中Entity Framework是標準的 .NET ORM(物件關係對映)庫。

它為雲原生應用程式提供儀表板,可用於檢視日誌和指標、分散式跟蹤、依賴項等。

image

透過儀表板,您可以列出已分發的服務並顯示日誌。 它顯示一個紅色圓圈表示有問題的服務,使人們更容易瞭解雲原生分散式應用程式的狀態。

image

此外,“跟蹤”功能允許對一組服務如何處理使用者操作進行分散式跟蹤。

image

相關連結:

相關文章