基础简介
更新: 2026-06-29 16:39:57 字数: 0 字 时长: 0 分钟
什么是 Aspire?
Aspire 是一个面向代码的分布式应用编排与可观测性层。
使用 Aspire 来建模构成您应用程序的服务、前端、数据库、队列、缓存、容器和云依赖。在生产环境中,这些组件会作为一个系统协同工作;但在开发过程中,它们通常需要单独启动、手动配置,并在多个终端和仪表板上进行调试。Aspire 为您提供一个定义系统的地方、一个运行系统的命令以及一个观察系统的工具链。
您可以在 AppHost 中描述架构,使用 Aspire 运行本地部署,通过 Aspire 仪表板进行查看,并将相同的应用模型部署到目标环境。目前,Aspire 支持 C# 和 TypeScript 作为 AppHost 的编写语言,同时帮助您协调使用 C#、JavaScript、Python、Go、Java、Rust、PowerShell 等语言编写的作业负载。AI 编码工具则通过 Aspire CLI、技能文件和 MCP 服务器,基于这一模式进行构建。
为什么需要 Aspire?
构建现代应用程序意味着需要协调多种资源、运行时环境和工作流。以下是没有 Aspire 时的场景:
分布式开发的痛苦
| 问题 | 没有 Aspire | 拥有 Aspire |
|---|---|---|
| 启动服务 | 打开 5 个终端,运行 5 个不同的命令,希望它们能按正确的顺序启动 | 一切自动启动 |
| 连接字符串 | 在所有地方硬编码,会破坏生产部署 | 服务发现来处理这个问题——相同的代码在本地和生产环境中都能运行 |
| 在我的机器上运行 | 不同团队成员拥有不同的端口和配置。 | 一个 AppHost 定义,所有人都使用相同的配置 |
| 调试 | 为每个服务单独附加调试器 | 用单次 F5 即可调试整个堆栈 |
| 查找日志 | 检查 5 个不同的终端窗口 | Aspire 仪表板将所有日志集中显示在一个地方。 |
| 添加一个数据库 | 本地安装,配置连接,希望版本匹配 | 容器化、版本化、一致。 |
| 跨语言工作 | 将 C#、Node.js、Python 等不同语言的脚本和规范进行组合 | 在单个 AppHost 中模拟相同的分布式应用,包括多语言堆栈。 |
| 使用 AI 编程代理 | 代理只能看到你设置的一部分,并在运行时猜测状态。 | 为代理提供了对您的应用模型、日志、追踪信息和资源的结构化访问。 |
前后对比
没有 Aspire,你的启动流程可能看起来像这样:
1. 启动数据库容器
shdocker run -d -p 5432:5432 -e POSTGRES_PASSWORD=secret postgres:152. 启动 C# API 服务
shcd api && dotnet run3. 启动 Python 工作器
shcd worker && source .venv/bin/activate && python main.py4. 启动 JavaScript 前端
shcd frontend && npm run dev5. 手动验证它们都能连接
使用 Aspire 后
仅仅需要一行命令:
shaspire run而你的 AppHost 会通过代码定义整个系统,即使对于多语言堆栈也是如此:
C##:sdk Aspire.AppHost.Sdk #:package Aspire.Hosting.JavaScript #:package Aspire.Hosting.PostgreSQL #:package Aspire.Hosting.Python var builder = DistributedApplication.CreateBuilder(args); var db = builder.AddPostgres("db"); var api = builder.AddProject<Projects.Api>("api") .WithReference(db); var worker = builder.AddPythonApp("worker", "../worker", "main.py") .WithReference(db); builder.AddNpmApp("frontend", "../frontend") .WithReference(api); builder.Build().Run();TypeScriptimport { createBuilder } from './.aspire/modules/aspire.mjs'; const builder = await createBuilder(); const db = await builder.addPostgres("db"); const api = await builder .addNodeApp("api", "../api", "server.js") .withReference(db); const worker = await builder .addPythonApp("worker", "../worker", "main.py") .withReference(db); await builder .addViteApp("frontend", "../frontend") .withReference(api); await builder.build().run();⭐⭐⭐⭐⭐
您的 AppHost 将成为应用程序架构的唯一信息来源。新团队成员只需阅读一个文件,即可全面了解整个系统。
主要优势
代码化构建:在 AppHost 中定义资源、引用和依赖,避免将架构分散到多个脚本和配置文件中。
全面调试系统:通过单一命令启动应用,统一查看日志和调用跟踪信息,并使用 Aspire 仪表板进行全栈调试。
部署相同模型:为本地开发及 Kubernetes、云平台或自有基础设施等部署目标,采用相同的架构定义。
跨语言协同:无论服务使用 C#、Node.js、Python 还是其他支持的语言,均可使用相同的分布式应用模型。
启用 AI 功能:通过 Aspire CLI 工作流、技能文件和 MCP,让编码代理获得对应用程序的结构化访问。
扩展运行功能:通过 Aspire 集成,轻松添加数据库、缓存、消息系统和云服务。
运作方式
Aspire 采用代码优先的方式定义应用程序的架构。您无需管理复杂的配置文件,而是直接在代码中描述服务、数据库、前端和依赖关系。
该 AppHost 将成为您分布式应用构建的范式:
- 资源:添加项目、可执行文件、容器、数据库、缓存和云服务。
- 关系:表达引用、依赖顺序和服务发现连接。
- 执行:让 Aspire 管理本地启动、环境配置、健康检查和诊断。
- 操作:通过命令行界面(CLI)、仪表板和 AI 代理工具使用相同模型。
即使 AppHost 语言发生变化,Aspire 也能保持该模型的一致性。TypeScript AppHost 采用客户机/主机架构,以访问与 C# AppHost 相同的编排引擎、集成、服务发现和诊断功能。
这种方法具有以下几大优势:
- 类型安全:在编译时捕获配置错误。
- 语句补全支持:在定义架构时获得代码补全和文档提示。
- 版本控制:您的基础设施定义与代码并存。
- 重构:使用熟悉的开发工具重新构建应用程序架构。
- 共享工具:开发者和 AI 代理可以查看相同的资源、日志和追踪信息。





