Aspire 概述

Aspire 提供用于生成 可观察的生产就绪分布式应用的工具、模板和包。 中心是 应用模型,它是一个 代码优先、单一事实来源 ,用于定义应用的服务、资源和连接。

Aspire 提供 统一的工具链:使用一个命令在本地启动和调试整个应用,然后使用相同的组合在任意位置Kubernetes(云或自己的服务器)进行部署。

扩展性是核心焦点。 AspireAPI 旨在使平台适应基础结构、服务和工作流。

关键功能

  • AppHost 业务流程: 在代码中定义服务、依赖项和配置。
  • 丰富的集成: 适用于具有标准化接口的常用服务的 NuGet 包。
  • 一致的工具:适用于 Visual Studio、VS Code 和 CLI 的项目模板和体验。

有关官方支持信息,请参阅 Aspire 支持策略

The AppHost

AspireAppHost 用于在代码中定义应用的服务和依赖项,无需复杂的配置文件。 AppHost 通过简化服务发现、环境变量和容器配置的管理,为本地开发环境提供业务流程。

设想一个常见的三层架构:前端依赖于 API,而 API 连接到数据库。 在此 Aspire示例中,此拓扑在 AppHost 中表示,如以下代码所示:

var builder = DistributedApplication.CreateBuilder(args);

// Add database service
var postgres = builder.AddPostgres("db")
    .AddDatabase("appdata")
    .WithDataVolume();

// Add API service and reference dependencies
var api = builder.AddProject<Projects.ApiService>("api")
    .WithReference(postgres)
    .WaitFor(postgres);

// Add frontend service and reference the API
var frontend = builder.AddProject<Projects.Frontend>("frontend")
    .WithReference(api);

builder.Build().Run();

AppHost 可帮助解决以下问题:

  • 应用组合:指定构成应用程序的项目、容器、可执行文件和云资源。
  • 服务发现和连接字符串管理:自动注入正确的连接字符串和网络配置。

请务必注意, Aspire编排侧重于增强 本地开发 体验。 它并不打算取代像 Kubernetes 这样的生产系统,而是提供抽象,以便在开发过程中消除底层实现细节。

有关详细信息,请参阅 Aspire 业务流程概述

Aspire 整合

Aspire 使用集成轻松定义应用所需的一切 - NuGet 包旨在简化与常用服务和平台的连接。 每个集成都处理云资源设置,并提供运行状况检查、遥测和配置的标准化模式。

可以集成的资源包括:

  • AI 服务:大型语言模型、AI 终结点和认知服务。
  • 缓存: Redis、内存中缓存和分布式缓存解决方案。
  • 容器: Docker 数据库、消息代理和其他服务的容器。
  • 数据库:SQL Server、、PostgreSQLMySQL、MongoDB、和其他数据存储。
  • 可执行文件:控制台应用程序、脚本和后台服务。
  • 框架:使用各种框架生成的 Web 应用程序、API 和微服务。
  • 消息服务: Azure Service Bus、 RabbitMQKafka 和其他消息传送系统。
  • 项目: .NET 项目、 Node.js 应用程序、 Python 服务等。
  • 存储:Blob 存储、文件系统和云存储服务。

集成分为两种:“主机”集成表示所连接的服务,“客户端”集成表示该服务的使用者。

Tip

在后台, 托管集成 可以表示容器、可执行文件,甚至仅配置资源的 C# 代码,而无需运行单独的进程。 可以将任何容器映像、代码库、脚本或云资源添加到 AppHost。 创建可重用 Aspire 集成类似于为应用生成可重用组件。

使用 Aspire 仪表板进行监视和故障排除

Aspire 包括一个功能强大的开发人员仪表板,可让你实时查看分布式应用。 通过仪表板,你可以检查资源、查看日志、跟踪和指标,以及管理应用的服务(全部来自单个 UI)。

运行应用 Aspire 时,仪表板会自动启动。 您可以:

  • 查看所有应用的资源及其状态。
  • 深入了解任何服务的日志、跟踪和指标。
  • 直接从仪表板启动、停止或重启资源。
  • 可视化依赖项并更快地解决问题。

仪表板可以作为Aspire解决方案的一部分提供,也可以作为任何发出数据的应用的OpenTelemetry使用。

仪表板概述中了解详细信息,或深入了解 仪表板功能和使用情况

从开发到部署

在“AppHost”中 Aspire撰写分布式应用时,你不只是定义用于本地开发的服务,你正在为部署设置基础。 用于在本地运行和调试的相同组合将成为生产部署的蓝图,确保从开发到生产一致性。

Aspire 为喜欢的开发环境提供项目模板和工具体验。 这些 模板包含预设的默认配置,并附有用于运行状况检查、日志记录和遥测的样板代码。 这些模板还包括处理常见配置的服务默认值:

builder.AddServiceDefaults();

添加到 C# 代码后,此方法将配置:

  • OpenTelemetry:ASPCore、gRPC 和 HTTP 的格式化日志记录、运行时指标和跟踪。
  • 运行状况检查:工具可以查询的用于监视应用的默认端点。
  • 服务发现:启用服务发现并相应地配置 HttpClient

有关详细信息,请参阅 Aspire 服务默认值

请考虑如何在不同环境中部署三层体系结构示例:

Resource 本地开发 Azure AWS
Frontend npm run Azure Container Apps Amazon Elastic Container Service
API 服务 dotnet run Azure Container Apps AWS Lambda
Database docker.io/library/postgres Azure 用于 PostgreSQL 的数据库 Amazon Relational Database Service

Tip

这些只是有关如何部署 Aspire 应用的几个示例。

Aspire部署功能很灵活,不会干扰现有工作流。 你可以继续使用首选工具和服务,同时受益于 AppHost 中定义的一致应用拓扑。

有关详细信息,请参阅 “部署 Aspire 应用”。

后续步骤