SuperAPI AI 工具集

aspire

部署与运维

查看项目

更新于 10-16 04:42

技能介绍

用途

该技能用于配置 .NET Aspire 13.x 的编排、服务发现与遥测,服务于分布式账本平台 Sorcha。AppHost(src/Apps/Sorcha.AppHost/AppHost.cs)负责编排 7 个微服务,并集成 PostgreSQL、MongoDB 和 Redis。各服务通过 AddServiceDefaults() 获得一致的 OpenTelemetry、健康检查和服务发现能力。JWT 签名密钥生成一次后,通过环境变量在所有服务间共享。

版本信息

  • Aspire.AppHost.Sdk:13.0.0(.csproj 中的 SDK,旧式双 SDK 格式)
  • Aspire.Hosting.*:13.1.0(AppHost 托管包)
  • Aspire.StackExchange.Redis:13.1.0(服务级 Redis 集成)
  • Aspire.Hosting.Testing:13.1.0(集成/E2E 测试基础设施)
  • Aspire Dashboard:9.0.0(Docker 镜像,版本独立)

Sorcha 包位置:

  • AppHost:src/Apps/Sorcha.AppHost/Sorcha.AppHost.csproj
  • ServiceDefaults:src/Common/Sorcha.ServiceDefaults/Extensions.cs
  • 服务:Blueprint、Register、Wallet、Validator(各自含 Aspire.StackExchange.Redis)
  • 测试:Gateway Integration、Wallet Integration、UI E2E(各自含 Aspire.Hosting.Testing)

主要能力

向 AppHost 添加服务

在 AppHost.cs 中通过 AddProject 添加项目并引用资源:

var myService = builder.AddProject<Projects.Sorcha_MyService>("my-service")
    .WithReference(redis)                                    // 服务发现
    .WithReference(walletDb)                                // 数据库连接
    .WithEnvironment("JwtSettings__SigningKey", jwtSigningKey); // 共享配置

命名引用(v13+):可控制资源引用的环境变量前缀。

var myService = builder.AddProject<Projects.Sorcha_MyService>("my-service")
    .WithReference(postgres.AddDatabase("mydb"), "primary-db");  // ConnectionStrings__primary-db

在服务中消费 Aspire

var builder = WebApplication.CreateBuilder(args);

builder.AddServiceDefaults();                    // OpenTelemetry、健康检查、服务发现
builder.AddRedisOutputCache("redis");            // 按资源名引用
builder.AddRedisDistributedCache("redis");

var app = builder.Build();
app.MapDefaultEndpoints();                       // /health 和 /alive

关键概念

  • 资源名(Resource Name):服务发现的标识符,如 "redis"、"tenant-service"
  • WithReference:注入连接字符串/URL
  • 命名引用(Named Reference):自定义环境变量前缀(v13+)
  • WithEnvironment:向服务传递配置
  • WithExternalHttpEndpoints:暴露到 Aspire 网络之外
  • AddServiceDefaults:共享 Aspire 配置
  • 连接属性(Connection Properties):访问单个字段(v13+),如 resource.GetConnectionProperty("HostName")
  • WithHttpsCertificate:TLS 终止(v13.1+)
  • ContainerRegistryResource:注册表配置(v13.1+ 实验性)

Aspire 13.x 新特性

v13.0 亮点

  • 新 SDK 格式:单个 <Project Sdk="Aspire.AppHost.Sdk/13.0.0"> 取代双 SDK
  • 多语言连接:资源暴露 HostName、Port、JdbcConnectionString
  • 命名引用:WithReference(resource, "customName") 用于环境变量前缀
  • MCP 仪表板:Aspire 仪表板为 AI 助手暴露 MCP 端点
  • 容器文件工件:PublishWithContainerFiles() 用于前端嵌入后端
  • 管道系统:aspire do 用于协调构建/发布/部署
  • aspire init:交互式解决方案初始化与发现
  • VS Code 扩展:原生项目创建、调试、部署

v13.1 亮点

  • aspire mcp init:为 AI 编码代理配置 MCP
  • TLS 终止:WithHttpsCertificate() 支持 YARP、Redis、Keycloak、Vite
  • 容器注册表:实验性 ContainerRegistryResource
  • 仪表板 Parameters 选项卡:专用参数检查
  • GenAI 可视化工具:工具定义、评估、预览媒体
  • Azure Managed Redis:取代 AddAzureRedisEnterprise()
  • DevTunnels 稳定:不再为预览版

破坏性变更(v9 -> v13)

  • AddNpmApp() -> AddJavaScriptApp()(v13 移除)
  • AddNodeApp() -> 重构(参数顺序不同)
  • Aspire.Hosting.NodeJs -> Aspire.Hosting.JavaScript(包重命名)
  • .Model 属性 -> .ModelName(OpenAI/GitHub 模型)
  • .Database 属性 -> .DatabaseName(Milvus/MongoDB/MySQL/Oracle)
  • 双 SDK .csproj -> 单 SDK .csproj(可选迁移)

Sorcha AppHost 架构

AppHost.cs 编排关系:

postgres ──┬── tenant-db ───── tenant-service
           └── wallet-db ───── wallet-service
mongodb ───── register-db ──── register-service
redis ────── (所有服务共享)

tenant-service ──── (JWT 签发者、认证提供方)
blueprint-service ─── (工作流引擎)
validator-service ──── wallet-service、register-service、peer-service、blueprint-service
api-gateway ──── (路由到所有服务,外部 HTTP)
ui-web ──── api-gateway (Blazor WASM 前端)

常见模式

数据库资源

// 带多个数据库的 PostgreSQL
var postgres = builder.AddPostgres("postgres").WithPgAdmin();
var tenantDb = postgres.AddDatabase("tenant-db", "sorcha_tenant");
var walletDb = postgres.AddDatabase("wallet-db", "sorcha_wallet");

// 用于文档存储的 MongoDB
var mongodb = builder.AddMongoDB("mongodb").WithMongoExpress();
var registerDb = mongodb.AddDatabase("register-db", "sorcha_register");

// 用于缓存的 Redis
var redis = builder.AddRedis("redis").WithRedisCommander();

服务依赖

var validatorService = builder.AddProject<Projects.Sorcha_Validator_Service>("validator-service")
    .WithReference(redis)
    .WithReference(walletService)
    .WithReference(registerService)
    .WithReference(peerService)
    .WithReference(blueprintService);

健康端点

app.MapHealthChecks("/health");           // 就绪 - 所有检查
app.MapHealthChecks("/alive", new HealthCheckOptions
{
    Predicate = r => r.Tags.Contains("live")  // 存活 - 仅带标签的检查
});

TLS 终止(v13.1+)

var redis = builder.AddRedis("redis")
    .WithHttpsCertificate(cert);

var gateway = builder.AddProject<Projects.Sorcha_ApiGateway>("api-gateway")
    .WithHttpsCertificate();

使用方式

该技能通过模式(patterns)与工作流(workflows)两部分展开:patterns 涵盖 AppHost 模式、SDK 格式、命名引用、TLS、MCP;workflows 涵盖 CLI 命令、测试、部署与故障排查。

相关技能:dotnet(.NET 10 模式)、minimal-apis(端点配置)、redis(缓存配置)、postgresql(数据库模式)、mongodb(文档存储)、docker(容器化)。

文档资源:可通过 Context7 获取最新 .NET Aspire 文档。使用 mcp__context7__resolve-library-id 搜索 "aspire",优先使用网站文档(ID 以 /websites/ 开头),再用 mcp__context7__query-docs 查询。库 ID:/dotnet/docs-aspire(高信誉,3264 个代码片段)。推荐查询包括 "AppHost service orchestration configuration"、"service discovery WithReference patterns"、"OpenTelemetry observability setup"、"health checks readiness liveness"、"aspire 13 breaking changes migration"、"TLS termination WithHttpsCertificate"、"MCP model context protocol dashboard"。

适用场景

适用于为 .NET 分布式应用搭建本地编排、服务发现与 OpenTelemetry 可观测性,尤其是使用 Aspire 13.x 管理多微服务、多数据库(PostgreSQL、MongoDB、Redis)的 AppHost 项目,以及需要从 Aspire 9 迁移到 13 的场景。

限制

资料未提供该技能的收费、价格、平台支持范围、性能效果等具体信息,暂未提供。