隨着 .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/