在Linux上設定.NET Aspire
[[academy-video-youtube({"vid": "YV2p0NqKZ-E", "start_time": "0", "title": "Setting Up .NET Aspire on Linux", "creator": "Tim Corey", "length": "18m 53s"})]]
在本機運行分佈式應用程式一直需要管理多個終端視窗、記住每個服務綁定的端口,以及在前端開始接受請求前手動驗證依賴關係是否正常。 .NET Aspire將這個工作流程整合到單一的編排層中,管理服務發現、健康檢查和遙測。 對於在Linux上工作的C#開發者,設定只需幾個終端命令和一個VS Code擴充功能。
在他的影片"Setting Up .NET Aspire on Linux"中,Tim Corey在Linux機器上安裝Aspire、配置VS Code擴充功能、以API後端構建Blazor應用程式,並通過Aspire控制臺展示結構化日誌、分布式追蹤和指標。 這一集也開啟了他在Linux上的C#系列的新階段:構建"Tiny Ticket",一個小但可部署的支援桌面應用程式,未來集數將涉及資料庫設置、部署到Azure以及跨平台開發。 如果您一直在追蹤Linux系列或想看Aspire如何融入真實開發的工作流程,這篇文章涵蓋Tim所展示的每一個步驟。
安裝Aspire CLI
[0:48 - 2:20] Tim從aspire.dev開始,指出該專案最近從"Aspire.NET"重新命名為"Aspire"。這次改名反映了工具擴展的範圍:雖然Aspire仍然基於.NET開發並主要服務於.NET開發者,但現在也支持TypeScript應用託管,並且有更多語言整合在路途上。
安裝本身是一個從Aspire文件中複製下來的單一bash命令,用於版本9.2:
dotnet tool install -g aspiratedotnet tool install -g aspirate運行安裝程式後,重新啟動您的終端會話,以便工具註冊到您的PATH中。 如果不重新啟動,您的shell將無法識別新命令。
然後確認安裝是否正確完成:
aspire --versionaspire --version如果版本號列印出來,CLI就準備好了。 這個兩步過程(安裝、驗證)就是終端上全部的設定。
配置VS Code擴充功能
[2:23 - 3:30] 安裝CLI後,下一步是VS Code擴充功能。 打開擴充工具面板,搜尋"Aspire",並安裝微軟發佈的正式擴充功能。 擴充功能增加了專案腳手架、啟動配置支援,與Aspire控制臺整合。
安裝後,VS Code運行一個驗證步驟,以確認CLI和擴充功能的對齊。 Tim指出擴充功能還可以直接通過命令選擇器搭建新專案,但他選擇CLI方法。 這個選擇是有意義的:了解CLI意味著當GUI工具發生故障時您不會被困住。 當VS Code模板選擇器安裝後無法顯示Aspire模板時,CLI提供了即時的替代方案。
搭建起始專案
[3:30 - 6:42] Tim沒有使用VS Code"建立新.NET項目"命令(偶爾無法發現Aspire模板),而是進入終端並運行:
aspire newaspire new互動提示中出現了幾個模板選擇。 對於生產應用程式,您通常會選擇空的C#應用主機,然後從那裡開始構建。 為了學習目的,Tim選擇了起始應用程式,它生成一個Blazor前端,備有最小的API支持。 起始模板包括一個天氣預測端點、一個計數器頁面和預先連接好的健康檢查,讓您可以立即探索一些功能。
接下來的提示步驟是配置剩下的內容:
項目名稱: TinyTicket
輸出路徑: TinyTicket
使用本地開發: 是
Redis緩存: 否
測試項目: 否
AI代理環境: 否Tim將所有可選功能關掉以最小化複雜性。 目標是建立一個未來集數將逐步構建的精簡起點。 腳手架完成後,打開VS Code中的文件夾,根據提示信任工作區。
瞭解項目結構
[6:42 - 10:00] 生成的解決方案包含四個項目,並透過它們之間的關聯揭示了Aspire的工作原理。 應用主機項目是編排層。 它的Program.cs大約有十二行程式碼。
var builder = DistributedApplication.CreateBuilder(args);
var api = builder.AddProject<Projects.TinyTicket_ApiService>("api")
.WithHttpHealthCheck("/health");
builder.AddProject<Projects.TinyTicket_Web>("frontend")
.WithExternalHttpEndpoints()
.WithHttpHealthCheck("/health")
.WithReference(api)
.WaitFor(api);
builder.Build().Run();var builder = DistributedApplication.CreateBuilder(args);
var api = builder.AddProject<Projects.TinyTicket_ApiService>("api")
.WithHttpHealthCheck("/health");
builder.AddProject<Projects.TinyTicket_Web>("frontend")
.WithExternalHttpEndpoints()
.WithHttpHealthCheck("/health")
.WithReference(api)
.WaitFor(api);
builder.Build().Run();注意前端是如何聲明API的引用並等待它變健康後啟動的。 這種依賴順序、服務發現和健康檢查都是Aspire在程式碼層面提供的。 您在此文件中看到的內容之外沒有隱藏的魔法。
與應用主機並列的是服務預設項目,其中包含遙測、結構化日誌和健康檢查註冊的擴展方法。 這些都是選裝便利功能:如果您尚未在服務中配置OpenTelemetry或健康端點,預設情況會自動為您設置。
API服務項目有一個單一端點,返回隨機生成的天氣預測。 Web項目是一個Blazor應用程式,通過以服務名稱("api")配置的HttpClient調用API。 Aspire在運行時解析該名稱到正確的URL,因此Blazor應用從不硬編碼端口號或主機名。
Tim強調一個重要的部署細節:Aspire本身不會被部署到生產環境。 編排是一個開發時使用的工具。 在生產環境中,服務的URL來自配置(環境變數、應用程式設置或部署管道),應用程式在沒有應用主機的情況下獨立運行。
運行並探索控制台
[10:59 - 14:46] 在VS Code的運行和除錯面板中啟動應用主機,選擇HTTPS啟動配置。初始還原和構建後,Aspire控制台在瀏覽器中打開。 首次連接時,您需要從終端輸出中粘貼一個登錄令牌。
控制台在沒有任何額外配置的情況下展示了四類可觀察性資料:
控制台輸出將每個服務的標準輸出匯總到單一視圖中。 不再需要在終端標籤間切換,您可以看到所有輸出交錯顯示並可按服務過濾。
結構化日誌顯示日誌條目,其結構化屬性保持不變。 Tim遇到的證書信任警告,例如,此處會顯示出生成該警告的服務及其嚴重程度的完整上下文。
追蹤展示了分布式調用鏈。 當Blazor前端請求天氣資料時,追蹤展示了從前端的HTTP GET、到API服務的跳轉(在影片中耗時7.35毫秒),以及總頁面渲染時間。Tim指出絕對數字的重要性不如相對比較:如果一個調用通常需要5秒,突然需要10秒,那您不用附上剖析器就找到了回歸問題。
指標為每個服務提供請求率、錯誤率和資源消耗的計數器。 控制台還公開了每個服務的環境變數和端點憑據,這對驗證配置值是否正確流通很有用。
介紹Tiny Ticket:系列項目
[14:46 - 17:17] Tim概述了將貫穿整個系列的專案計畫。 Tiny Ticket是一個簡化版的支援桌面應用程式:使用者提交支援票證,系統跟蹤優先順序和狀態。 資料模型可能小到只有一個SQL表。 重點不是建立功能豐富的產品,而是創造一個涵蓋Linux上開發生命週期每個部分的縱向切片:構建、測試、部署,以及連接外部服務。
起始模板中的天氣預報和計數器頁面將被票證視圖取代,但Aspire編排、API到前端的模式以及服務預設情況將保留。 未來集數將新增Microsoft SQL Server作為資料庫,Tim將解釋一個常見的反對意見:無法在本機運行SQL Server的開發者(例如ARM處理器)有時會選擇其他資料庫。 他的回答是開發環境應該複製生產環境。 如果生產資料庫是SQL Server,開發環境就需要匹配,即使這意味著在容器中運行資料庫。
總結:從零到控制台
[17:17 - 18:20] 在不到二十分鐘內,影片涵蓋了Linux上的完整Aspire設置:CLI安裝、VS Code擴充、腳手架項目,以及提供零自定義配置的結構化日誌、分布式追蹤和指標的控制台。 Aspire的真正價值不在於任何單一功能而在於摩擦的減少:一個過程啟動、一個控制台監控,還有一個地方可以看到服務之間的互動。
結論
[18:20 - 18:53] 在Linux上設置Aspire需要CLI工具、VS Code擴充和專案腳手架。 從那裡開始,控制台讓您在每個服務中可以觀察到而不需要寫遙測程式碼。 應用主機文件在幾行程式碼中定義了您的服務圖,而服務預設處理了您本來需要手動配置的管道。
這裡介紹的Tiny Ticket專案將成為即將播出的關於資料庫整合、Azure部署及跨平台工作流的基礎。 從這個起點開始,意味著每一個新概念都建立在您已經驗證的基礎設施上。
系列導航: 這篇文章是Linux上的C#系列項目Tiny Ticket的一部分。前一篇:Linux上Docker中的SQL Server。 下一篇:將Swagger UI新增到Linux上的.NET Aspire。
範例提示:當VS Code模板選擇器在擴充安裝後無法找到Aspire模板時,使用終端中的aspire new作為可靠的替代方案,然後重新啟動VS Code以同步擴充狀態。

