关于 aspire
Aspire 是一套以代码为中心的工具链,用于编排多种语言构建的可观测分布式应用。它面向通过单个 AppHost 开发和运行服务的团队,提供服务发现、仪表板及部署清单生成。
主要功能
- 01通过单个 AppHost 编排
- 02支持多语言工作负载
- 03服务发现与依赖排序
- 04查看日志、追踪和指标的仪表板
- 05生成部署清单
适用场景
- 01在本地运行多服务应用
- 02连接依赖并设置健康检查
- 03生成部署清单
- 04使用集成测试测试 AppHost
MCP 相关
Aspire 提供供 AI 助手使用的 MCP 服务。根据 CLI 版本,它可提供集成查询和文档搜索工具,并查询运行中的应用。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill aspire安装后在 Claude Code 中输入/aspire确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/architecture.mdcli-reference.mddashboard.mddeployment.mdintegrations-catalog.mdmcp-server.mdpolyglot-apis.mdtesting.mdtroubleshooting.md详细介绍
Aspire — 多语言分布式应用编排
Aspire 是一套 代码优先的多语言工具链,用于构建可观测、可投入生产的分布式应用。它能在单个 AppHost 项目中编排容器、可执行文件和云资源——无论工作负载是 C#、Python、JavaScript/TypeScript、Go、Java、Rust、Bun、Deno 还是 PowerShell。
心智模型: AppHost 就像一位指挥家——它不演奏乐器,而是告诉每个服务何时启动、如何相互发现,并持续关注问题。
详细参考资料位于 references/ 文件夹中——按需加载。
参考资料
| 参考资料 | 何时加载 |
|---|---|
| CLI 参考 | 需要命令标志、选项或详细用法时 |
| MCP 服务 | 为 AI 助手设置 MCP、可用的工具 |
| 集成目录 | 通过 MCP 工具发现集成、接线模式 |
| 多语言 API | 方法签名、链式调用选项、特定语言的模式 |
| 架构 | DCP 内部机制、资源模型、服务发现、网络、遥测 |
| 仪表板 | 仪表板功能、独立模式、GenAI 可视化工具 |
| 部署 | Docker、Kubernetes、Azure Container Apps、App Service |
| 测试 | 针对 AppHost 的集成测试 |
| 故障排除 | 诊断代码、常见错误及修复方法 |
1. 研究 Aspire 文档
Aspire 团队提供了一个 MCP 服务,可直接在你的 AI 助手中提供文档工具。有关设置详情,请参阅 MCP 服务。
Aspire CLI 13.2+(推荐——内置文档搜索)
如果运行的是 Aspire CLI 13.2 或更高版本(aspire --version),该 MCP 服务包含文档搜索工具:
| 工具 | 描述 |
|---|---|
list_docs | 列出 aspire.dev 上所有可用的文档 |
search_docs | 在已索引的文档中执行加权词法搜索 |
get_doc | 根据 slug 获取特定文档 |
这些工具是在 PR #14028 中添加的。要更新:aspire update --self --channel daily。
有关此方法的更多信息,请参阅 David Pine 的文章:https://davidpine.dev/posts/aspire-docs-mcp-tools/
Aspire CLI 13.1(仅集成工具)
在 13.1 上,MCP 服务提供集成查找,但不提供文档搜索:
| 工具 | 描述 |
|---|---|
list_integrations | 列出可用的 Aspire 托管集成 |
get_integration_docs | 获取特定集成包的文档 |
在 13.1 上进行一般文档查询时,请使用 Context7 作为主要来源(见下文)。
备选方案:Context7
当 Aspire MCP 文档工具不可用(13.1)或 MCP 服务未运行时,请使用 Context7(mcp_context7):
步骤 1 — 解析库 ID(每个会话执行一次):
调用 mcp_context7_resolve-library-id,参数为 libraryName: ".NET Aspire"。
| 排名 | 库 ID | 使用场景 |
|---|---|---|
| 1 | /microsoft/aspire.dev | 主要来源。指南、集成、CLI 参考、部署。 |
| 2 | /dotnet/aspire | API 内部机制、源码级实现细节。 |
| 3 | /communitytoolkit/aspire | 非 Microsoft 的多语言集成(Go、Java、Node.js、Ollama)。 |
步骤 2 — 查询文档:
libraryId: "/microsoft/aspire.dev", query: "Python integration AddPythonApp service discovery"
libraryId: "/communitytoolkit/aspire", query: "Golang Java Node.js community integrations"
备选方案:GitHub 搜索(当 Context7 也不可用时)
在 GitHub 上搜索官方文档仓库:
- 文档仓库:
microsoft/aspire.dev— 路径:src/frontend/src/content/docs/ - 源码仓库:
dotnet/aspire - 示例仓库:
dotnet/aspire-samples - 社区集成:
CommunityToolkit/Aspire
2. 先决条件与安装
| 要求 | 详情 |
|---|---|
| .NET SDK | 10.0+(即使是非 .NET 工作负载也需要 — AppHost 是 .NET) |
| 容器运行时 | Docker Desktop、Podman 或 Rancher Desktop |
| IDE(可选) | VS Code + C# Dev Kit、Visual Studio 2022、JetBrains Rider |
# Linux / macOS
curl -sSL https://aspire.dev/install.sh | bash
# Windows PowerShell
irm https://aspire.dev/install.ps1 | iex
# Verify
aspire --version
# Install templates
dotnet new install Aspire.ProjectTemplates
3. 项目模板
| 模板 | 命令 | 描述 |
|---|---|---|
| aspire-starter | aspire new aspire-starter | ASP.NET Core/Blazor 起始项目 + AppHost + 测试 |
| aspire-ts-cs-starter | aspire new aspire-ts-cs-starter | ASP.NET Core/React 起始项目 + AppHost |
| aspire-py-starter | aspire new aspire-py-starter | FastAPI/React 起始项目 + AppHost |
| aspire-apphost-singlefile | aspire new aspire-apphost-singlefile | 空的单文件 AppHost |
4. AppHost 快速上手(多语言)
AppHost 负责编排所有服务。非 .NET 工作负载以容器或可执行文件的形式运行。
var builder = DistributedApplication.CreateBuilder(args);
// Infrastructure
var redis = builder.AddRedis("cache");
var postgres = builder.AddPostgres("pg").AddDatabase("catalog");
// .NET API
var api = builder.AddProject<Projects.CatalogApi>("api")
.WithReference(postgres).WithReference(redis);
// Python ML service
var ml = builder.AddPythonApp("ml-service", "../ml-service", "main.py")
.WithHttpEndpoint(targetPort: 8000).WithReference(redis);
// React frontend (Vite)
var web = builder.AddViteApp("web", "../frontend")
.WithHttpEndpoint(targetPort: 5173).WithReference(api);
// Go worker
var worker = builder.AddGolangApp("worker", "../go-worker")
.WithReference(redis);
builder.Build().Run();
完整的 API 签名,请参阅 Polyglot APIs。
5. 核心概念(概要)
| 概念 | 要点 |
|---|---|
| 运行 vs 发布 | aspire run = 本地开发(DCP 引擎)。aspire publish = 生成部署清单。 |
| 服务发现 | 通过环境变量自动完成:ConnectionStrings__<name>、services__<name>__http__0 |
| 资源生命周期 | DAG 排序 — 依赖项先启动。.WaitFor() 以健康检查为门槛。 |
| 资源类型 | ProjectResource、ContainerResource、ExecutableResource、ParameterResource |
| 集成 | 13 个类别共 144+ 个。托管包(AppHost)+ 客户端包(服务)。 |
| 仪表板 | 实时日志、跟踪、指标、GenAI 可视化工具。随 aspire run 自动运行。 |
| MCP 服务 | AI 助手可通过命令行(STDIO)查询正在运行的应用并搜索文档。 |
| 测试 | Aspire.Hosting.Testing — 在 xUnit/MSTest/NUnit 中启动完整的 AppHost。 |
| 部署 | Docker、Kubernetes、Azure Container Apps、Azure App Service。 |
6. 命令行快速参考
Aspire CLI 13.1 中的有效命令:
| 命令 | 描述 | 状态 |
|---|---|---|
aspire new <template> | 从模板创建 | 稳定 |
aspire init | 在现有项目中初始化 | 稳定 |
aspire run | 在本地启动所有资源 | 稳定 |
aspire add <integration> | 添加集成 | 稳定 |
aspire publish | 生成部署清单 | 预览 |
aspire config | 管理配置设置 | 稳定 |
aspire cache | 管理磁盘缓存 | 稳定 |
aspire deploy | 部署到已定义的目标 | 预览 |
aspire do <step> | 执行某个管道步骤 | 预览 |
aspire update | 更新集成(或使用 --self 更新 CLI) | 预览 |
aspire mcp init | 为 AI 助手配置 MCP | 稳定 |
aspire mcp start | 启动 MCP 服务 | 稳定 |
带标志的完整命令参考:CLI Reference。
7. 常见模式
添加新服务
- 创建你的服务目录(任意语言)
- 添加到 AppHost:
Add*App()或AddProject<T>() - 连接依赖项:
.WithReference() - 以健康状态为门槛:如有需要,使用
.WaitFor() - 运行:
aspire run
从 Docker Compose 迁移
aspire new aspire-apphost-singlefile(空 AppHost)- 将每个
docker-compose服务替换为 Aspire 资源 depends_on→.WithReference()+.WaitFor()ports→.WithHttpEndpoint()environment→.WithEnvironment()或.WithReference()
8. Key URLs
| Resource | URL |
|---|---|
| Documentation | https://aspire.dev |
| Runtime repo | https://github.com/dotnet/aspire |
| Docs repo | https://github.com/microsoft/aspire.dev |
| Samples | https://github.com/dotnet/aspire-samples |
| Community Toolkit | https://github.com/CommunityToolkit/Aspire |
| Dashboard image | mcr.microsoft.com/dotnet/aspire-dashboard |
| Discord | https://aka.ms/aspire/discord |
| https://www.reddit.com/r/aspiredotdev/ |