IRONSOFTWAREHOME

在Linux上設定.NET Aspire

Setting Up .NET Aspire on Linux

Tim Corey

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 aspirate
SHELL

運行安裝程式後,重新啟動您的終端會話,以便工具註冊到您的PATH中。 如果不重新啟動,您的shell將無法識別新命令。

然後確認安裝是否正確完成:

aspire --version
SHELL

如果版本號列印出來,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 new
SHELL

互動提示中出現了幾個模板選擇。 對於生產應用程式,您通常會選擇空的C#應用主機,然後從那裡開始構建。 為了學習目的,Tim選擇了起始應用程式,它生成一個Blazor前端,備有最小的API支持。 起始模板包括一個天氣預測端點、一個計數器頁面和預先連接好的健康檢查,讓您可以立即探索一些功能。

接下來的提示步驟是配置剩下的內容:

項目名稱:    TinyTicket
輸出路徑:    TinyTicket
使用本地開發:  是
Redis緩存:   否
測試項目:    否
AI代理環境: 否
Text

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();
C#

注意前端是如何聲明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以同步擴充狀態。

觀看完整影片在他的YouTube頻道,可以獲得有關設置.NET Aspire於Linux開發的更多見解。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立