Skip to content

基础简介

更新: 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. 启动数据库容器

    sh
    docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=secret postgres:15
  • 2. 启动 C# API 服务

    sh
    cd api && dotnet run
  • 3. 启动 Python 工作器

    sh
    cd worker && source .venv/bin/activate && python main.py
  • 4. 启动 JavaScript 前端

    sh
    cd frontend && npm run dev
  • 5. 手动验证它们都能连接

使用 Aspire 后

  • 仅仅需要一行命令:

    sh
    aspire 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();
    TypeScript
    import { 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 代理可以查看相同的资源、日志和追踪信息。
你觉得这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度