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 应用”。