.NET Aspire 是一組功能強大的工具、模板和包,用于構建可觀察的生產就緒應用程序。.NET Aspire 通過處理特定云原生問題的 NuGet 包集合提供。云原生應用程序通常由小型互連部分或微服務組成,而不是單個整體式代碼庫。云原生應用程序通常會消耗大量的服務,例如數據庫、消息收發和緩存。
.NET Aspire 旨在改善構建 .NET 云原生應用程序的體驗。它提供了一組一致的、有主見的工具和模式,可幫助您構建和運行分布式應用程序。NET Aspire 旨在幫助您:
- 編排:.NET Aspire 為本地開發環境提供了運行和連接多項目應用程序及其依賴項的功能。
- 集成:.NET Aspire 集成是適用于常用服務(如 Redis 或 Postgres)的 NuGet 包,具有標準化接口,可確保它們與您的應用程序一致且無縫地連接。
- 工具:.NET Aspire 附帶適用于 Visual Studio、Visual Studio Code 和 .NET CLI 的項目模板和工具體驗,可幫助你創建 .NET Aspire 項目并與之交互。
前提條件
- .NET 8.0 或 .NET 9.0
- 符合 OCI 標準的容器運行時,例如:
- 集成開發人員環境 (IDE) 或代碼編輯器,例如:
安裝.NET Aspire 模板
如果尚未安裝 .NET Aspire 模板,請運行以下命令:
dotnet new install Aspire.ProjectTemplates
完成安裝后,執行一下命令可看到aspire項目模板:
dotnet new list aspire
模板名 短名稱 語言 標記
---------------------------- ---------------------- ---- -------------------------------------------------------
.NET Aspire 入門應用 aspire-starter [C
.NET Aspire 應用主機 aspire-apphost [C
.NET Aspire 服務默認值 aspire-servicedefaults [C
.NET Aspire 測試項目(MSTest) aspire-mstest [C
.NET Aspire 測試項目(NUnit) aspire-nunit [C
.NET Aspire 測試項目(xUnit) aspire-xunit [C
.NET Aspire 空應用 aspire [C
從模板創建 .NET Aspire 空應用,請運行以下命令:
dotnet new aspire -o Stargazer
創建的應用是一個最小的 .NET Aspire 項目,包括以下內容:
集成服務
加入適用于常用服務(如 Redis 或 Postgres)的 NuGet 包Aspire.Hosting.PostgreSQL
、Aspire.Hosting.Redis
、Aspire.Hosting.MongoDB
,然后在代碼中創建docker容器:
using System.Runtime.InteropServices;
var builder = DistributedApplication.CreateBuilder(args);
string redisImage = "hub.atomgit.com/amd64/redis";
string postgresqlImage = "hub.atomgit.com/amd64/postgres";
string mongodbImage = "hub.atomgit.com/amd64/mongo";
Architecture architecture = RuntimeInformation.ProcessArchitecture;
if(architecture == Architecture.Arm
|| architecture == Architecture.Arm64)
{
redisImage = "hub.atomgit.com/arm64v8/redis";
postgresqlImage = "hub.atomgit.com/arm64v8/postgres";
mongodbImage = "hub.atomgit.com/arm64v8/mongo";
}
var redis = builder.AddRedis("redis", 6379)
.WithContainerName("redis")
.WithImage(redisImage, "7-alpine")
.WithDataVolume("redis")
.WithRedisCommander(null, "redis-commander");
var username = builder.AddParameter("postgres-uid", "postgres");
var password = builder.AddParameter("postgres-pwd", "123456");
var postgres = builder.AddPostgres("postgres", username, password, 5432)
.WithContainerName("postgres")
.WithImage(postgresqlImage, "15-alpine")
.WithDataVolume("postgres");
var postgresql = postgres.AddDatabase("postgresql");
var mongoUser = builder.AddParameter("mongo-user", "root");
var mongoPwd = builder.AddParameter("mongo-pwd", "123456");
var mongo = builder.AddMongoDB("mongo", 27017, mongoUser, mongoPwd)
.WithContainerName("mongo")
.WithImage(mongodbImage, "7-jammy")
.WithDataVolume("mongo");
var mongodb = mongo.AddDatabase("mongodb");
IResourceBuilder<ProjectResource> apiService = builder.AddProject<Projects.Stargazer_Abp_Template_Host>("api-service");
builder.AddProject<Projects.Stargazer_Abp_Template_Web>("frontend")
.WithExternalHttpEndpoints()
.WithReference(redis)
.WithReference(postgresql)
.WithReference(mongodb)
.WaitFor(redis)
.WaitFor(postgres)
.WaitFor(mongodb)
.WithReference(apiService);
builder.Build().Run();
啟動應用程序
運行以下命令啟動應用程序:
dotnet run --project Stargazer.AppHost
訪問https://localhost:17125/login?t=337c3ec0bfdadd302fcdb467d76453ad
,就可以使用.NET Aspire 儀表板。
訪問儀表板上的鏈接http://localhost:5136/
,就可以訪問應用程序。
首發網站:https://stargazer.tech/2024/12/05/build-your-dotnet-aspire-solution/
相關鏈接
轉自https://www.cnblogs.com/huangmingji/p/18588251/build-your-dotnet-aspire-solution
該文章在 2024/12/6 9:23:34 編輯過