了解如何建立新的 .NET Aspire 專案
雲端原生開發可能需要開發人員將不同的微服務連在一起,例如資料庫、傳訊佇列和快取。 .NET Aspire 提供一組範本,讓您用來建立和管理這些服務之間的連線,藉此簡化此流程。
在本單元中,了解如何建立新的 .NET Aspire 專案,且了解兩個專案範本之間的差異。 接著探索產生的解決方案結構。
.NET Aspire 先決條件
您必須先在本機安裝一些必要條件,才能建立新的 .NET Aspire 專案:
- .NET 8
- Visual Studio 2022 Preview
- Docker Desktop 或 Podman
- Visual Studio 中的 .NET Aspire 工作負載
在下一個練習中,您將完成安裝這些必要條件的步驟。
為您的專案選擇最佳的 .NET Aspire 範本
目前有兩個 .NET Aspire 入門範本可供使用:
.NET Aspire 應用程式:此範本是新專案的良好起點。 只包含 AspireSample.AppHost 和 AspireSample.ServiceDefaults 專案。 當您想要從頭開始並新增您自己的元件和服務時,此範本很有用。
.NET Aspire 入門應用程式:此範本包含 AspireSample.AppHost 和 AspireSample.ServiceDefaults 專案,但也包含範例 Blazor App AspireSample.Web,以及提供數據給其的 API AspireSample.ApiService。 這些專案已預先設定服務探索,以及其他常見 .NET Aspire 功能的基本範例。
這兩個 Aspire 範本都提供儀表板來監視服務的健康情況及其之間的流量。 儀表板可協助您改善本機開發體驗,讓您一目了然就能瞭解應用程式概觀的狀態和結構。
另外還有三個項目範本可供使用:
- .NET Aspire 應用程式主機:只包含應用程式主機 (orchestrator) 專案的範本。
- .NET Aspire 服務預設值:只包含服務預設值專案的範本。
- .NET Aspire 測試專案:只包含應用程式主機專案的單元測試範本。
使用 .NET Aspire 範本建立新的 .NET Aspire 專案
您可以使用 Visual Studio 啟動對話方塊來建立新的 .NET Aspire 專案,或 [檔案]>[新增]>[專案]。 您也可以使用 .NET CLI 命令。 若要使用 .NET Aspire 應用程式 範本建立解決方案,您可以使用此命令:
dotnet new aspire
或者,若要使用 .NET Aspire Starter Application 範本,您可以使用此命令:
dotnet new aspire-starter
使用 Visual Studio 的優點是透過對話方塊選擇設定選項。 當您想要使用預設設定建立新的 .NET Aspire 專案時,.NET CLI 命令很有用,但您可以使用選用旗標來改變預設值。 在下一個練習中,您將了解如何使用這兩種方法建立新的 .NET Aspire 專案。
探索 .NET Aspire 範本所產生的解決方案結構
.NET Aspire 範本會產生具有特定結構的解決方案。 此結構是入門應用程式的簡化圖表,但未啟用快取或測試選項:
────📂 AspireSample
├───📂 AspireSample.ApiService
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├─── appsettings.json
│ ├─── AspireSample.ApiService.csproj
│ └─── Program.cs
├───📂 AspireSample.AppHost
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├─── appsettings.json
│ ├─── AspireSample.AppHost.csproj
│ └─── Program.cs
├───📂 AspireSample.ServiceDefaults
│ ├─── AspireSample.ServiceDefaults.csproj
│ └─── Extensions.cs
├───📂 AspireSample.Web
│ ├───📂 Components
│ │ ├───📂 Layout
│ │ │ ├─── ...
│ │ ├───📂 Pages
│ │ │ ├─── ...
│ │ ├─── ...
│ ├───📂 Properties
│ │ └─── launchSettings.json
│ ├───📂 wwwroot
│ │ ├───...
│ ├─── appsettings.json
│ ├─── AspireSample.Web.csproj
│ ├─── Program.cs
│ └─── WeatherApiClient.cs
└─── AspireSample.sln
這兩個範本都會新增 AppHost 和 ServiceDefaults 專案。 這些專案是使用 .NET Aspire 建置的應用程式核心。 AppHost 專案是進入點,且負責作為協調器。
ServiceDefaults 專案包含應用程式的預設設定。 這些設定會跨解決方案中的所有專案重複使用。
上述解決方案也包含 Web 和 ApiService 專案。 Web 專案是具有計數器的 Blazor WebAssembly 應用程式,並呼叫 ApiService 以取得預測資料。 ApiService 是傳回預測資料的簡單 API。
逐步解說代碼結構
AspireSample.AppHost 專案在 Program.cs中具有下列程式碼:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
var apiService = builder.AddProject<Projects.AspireStarterSample_ApiService>("apiservice");
builder.AddProject<Projects.AspireStarterSample_Web>("webfrontend")
.WithReference(cache)
.WithReference(apiService);
builder.Build().Run();
逐行逐步執行上述程式碼:
建立
IDistributedApplicationBuilder
的builder
變數。建立
IResourceBuilder<RedisResource>
的cache
變數。使用包含專案
IServiceMetadata
詳細資料的泛型型別參數呼叫AddProject
,將 AspireSample.ApiService 專案新增至應用程式模型。這是 .NET Aspire 的基本建置組塊。
AddProject
會設定應用程式中專案之間的服務探索和通訊。 名稱引數 apiservice 用來識別應用程式模型中的專案,之後由想要與其通訊的專案使用。再次呼叫
AddProject
,這次會將 AspireSample.Web 專案新增至應用程式模型。 其也會將多個呼叫進行鏈結,以WithReference
傳遞快取和 apiservice 變數。WithReference
API 是 .NET Aspire 的另一個基本 API,其會將服務探索資訊或連接字串組態插入要新增至應用程式模型的專案。最後,
builder
會呼叫Build
和Run
來啟動應用程式。