.NET .NET Aspire 集成概述

.NET Aspire 集成是一套精选的 NuGet 包,用于促进云原生应用程序与突出服务和平台(如 Redis 和 PostgreSQL)的集成。 每个集成都通过自动预配或标准化配置模式提供基本的云原生功能。

提示

始终努力使用最新版本的 .NET.NET Aspire 集成来利用最新功能、改进和安全更新。

集成职责

大多数 .NET.NET Aspire 集成由两个单独的库组成,每个库各自承担不同的职责。 一种类型表示 应用主机 项目中的资源,称为 托管集成。 其他类型的集成表示连接到通过托管集成建模的资源的客户端库,它们称为 客户端集成

托管服务集成

托管集成通过预配资源(如容器或云资源)或指向现有实例(例如本地 SQL Server)来配置应用程序。 这些包为各种服务、平台或功能建模,包括缓存、数据库、日志记录、存储和消息传送系统。

托管集成扩展了 IDistributedApplicationBuilder 接口,使 应用主机 项目能够在其 应用模型内表达资源。 官方 托管集成 NuGet 包 带有 aspireintegrationhosting标记。 除了官方托管集成之外,社区还创建了作为社区工具包一部分的各种服务和平台的托管集成

有关创建自定义 托管集成的信息,请参阅 创建自定义 .NET.NET Aspire 托管集成

Client 集成

Client 集成将客户端库连接到 依赖项注入(DI)、定义配置架构,以及添加 运行状况检查复原,以及 遥测(如果适用)。 .NET .NET Aspire 客户端集成库的前缀为 Aspire.,然后包括它们与之集成的完整包名称,例如 Aspire.StackExchange.Redis

这些包将现有客户端库配置为连接到托管集成。 它们扩展了 IHostApplicationBuilder 接口,允许客户端使用的项目(如 Web 应用或 API)使用连接的资源。 官方 客户端集成的 NuGet 包 已用 aspireintegrationclient标签标识。 除了官方客户端集成之外,社区还创建了客户端集成, 作为社区工具包的一部分,用于各种服务和平台。

有关创建自定义客户端集成的详细信息,请参阅 创建自定义 .NET.NET Aspire 客户端集成

托管与客户端集成之间的关系

托管和客户端集成在一起使用时最好,但 耦合,可以单独使用。 某些托管集成没有相应的客户端集成。 配置使托管集成可与客户端集成配合使用。

请考虑下图,描述托管与客户端集成之间的关系:

关系图

应用主机项目是进行托管集成的平台。 配置(特别是环境变量)注入到项目、可执行文件和容器中,从而允许客户端集成连接到托管集成。

集成功能

将客户端集成添加到 .NET.NET Aspire 解决方案中的项目时,服务默认值 会自动应用于该项目;这意味着引用服务默认值项目,并调用 AddServiceDefaults 扩展方法。 这些默认值设计为在大多数方案中都能很好地工作,并且可以根据需要进行自定义。 应用以下服务默认值:

  • 可观测性和遥测:自动设置日志记录、跟踪和指标配置:

    • 日志记录:一种技术,通过在代码中加入工具以生成程序运行时出现的有趣事件的日志。
    • 跟踪:一种专用的日志记录形式,可以帮助定位分布在多台计算机或进程中的应用程序的故障和性能问题。
    • 指标:一段时间内记录的数字度量值,用于监视应用程序性能和运行状况。 检测到潜在问题时,指标通常用于生成警报。
  • 运行状况检查:开放 HTTP 端点以提供关于应用程序的基本可用性和状态信息。 运行状况检查用于影响容器业务流程协调程序、负载均衡器、API 网关和其他管理服务做出的决策。

  • 复原能力:系统对故障做出反应的能力,但仍保持正常运行。 复原能力超出了阻止故障的范围,包括恢复和重新构造云原生环境回到正常状态。

版本控制注意事项

托管和客户端的集成会在每次发布时更新,以匹配依赖资源的最新稳定版本。 使用新的映像版本更新容器映像时,托管集成会更新到这些新版本。 同样,当新的 NuGet 版本可用于依赖客户端库时,相应的客户端集成会更新到新版本。 这可确保应用程序可以使用最新的功能和安全更新。

在依赖资源中发生重大中断性变更时,集成可能会暂时拆分为依赖于版本的包,以简化中断性变更的更新。 有关详细信息,请参阅 此类中断性变更的第一个示例。

官方集成

.NET .NET Aspire 提供了许多集成来帮助构建云原生应用程序。 这些集成旨在与 .NET.NET Aspire 应用主机和客户端库无缝配合工作。 以下部分详细介绍了与云无关的、特定于 Azure、Amazon Web Services(AWS)和社区工具包集成。

与云无关的集成

以下部分详细介绍了与云无关的 .NET.NET Aspire 集成及其各自的文档和 NuGet 包的链接,并简要介绍了每个集成。

集成指南和 NuGet 包 描述
- 详细了解📄 Apache Kafka
- 托管📦Aspire。Hosting.Kafka
- Client📦Aspire。Confluent.Kafka
用于从 Apache Kafka 中转站生成和使用消息的库。
- 详细了解📄 Dapr
- 托管📦Aspire。好客。Dapr
- Client:N/A
用于将 Dapr 建模为 .NET.NET Aspire 资源的库。
- 详细了解📄 Elasticsearch
- 托管📦Aspire。好客。Elasticsearch
- Client📦Aspire。Elastic.Clients.Elasticsearch
用于访问 Elasticsearch 数据库的库。
- 详细了解📄 Keycloak
- 托管📦Aspire。好客。Keycloak
- Client📦Aspire。Keycloak。身份验证
用于访问 Keycloak 身份验证的库。
- 详细了解📄 Milvus
- 托管📦Aspire。好客。Milvus
- Client📦Aspire。Milvus。Client
用于访问 Milvus 数据库的库。
- 详细了解📄MongoDB 驱动程序
- 托管📦Aspire。好客。MongoDB
- Client📦Aspire.MongoDB. 驱动程序
用于访问 MongoDB 数据库的库。
- 详细了解📄 MySqlConnector
- 托管📦Aspire。Hosting.MySql
- Client📦Aspire。MySqlConnector
用于访问 MySqlConnector 数据库的库。
- 详细了解📄 NATS
- 托管📦Aspire。Hosting.Nats
- Client📦Aspire。NATS.Net
用于访问 NATS 消息传送的库。
- 详细了解📄Oracle - EF Core
- 托管📦Aspire。好客。Oracle
- Client📦Aspire。Oracle。EntityFrameworkCore
一个库,用于使用 Oracle访问 Entity Framework Core 数据库。
- 详细了解📄 Orleans
- 托管📦Aspire。好客。Orleans
- Client:N/A
用于将 Orleans 建模为 .NET.NET Aspire 资源的库。
- 详细了解📄 波梅洛 MySQL - EF Core
- 托管📦Aspire。Hosting.MySql
- Client📦Aspire。Pomelo.EntityFrameworkCore.MySql
一个库,用于使用 Entity Framework Core访问 MySql 数据库。
- 详细了解📄PostgreSQL - EF Core
- 托管📦Aspire。好客。PostgreSQL
- Client📦Aspire。Npgsql.EntityFrameworkCore.PostgreSQL
一个库,用于使用 PostgreSQL访问 Entity Framework Core 数据库。
- 详细了解📄 PostgreSQL
- 托管📦Aspire。好客。PostgreSQL
- Client📦Aspire。Npgsql
用于访问 PostgreSQL 数据库的库。
- 详细了解📄 Qdrant
- 托管📦Aspire。Hosting.Qdrant
- Client📦Aspire。Qdrant。Client
用于访问 Qdrant 数据库的库。
- 详细了解📄 RabbitMQ
- 托管📦Aspire。好客。RabbitMQ
- Client📦Aspire。RabbitMQ。Client
用于访问 RabbitMQ的库。
- 详细了解📄Redis 分布式缓存
- 托管📦Aspire。托管。Redis📦Aspire。托管.Garnet,或 📦Aspire。托管.Valkey
- Client📦Aspire。StackExchange。Redis。DistributedCaching
用于访问 Redis 缓存的库。
- 详细了解📄Redis 输出缓存
- 托管📦Aspire。托管。Redis📦Aspire。托管.Garnet,或 📦Aspire。托管.Valkey
- Client📦Aspire。StackExchange。Redis。OutputCaching
用于访问 Redis 缓存并处理 输出缓存的库。
- 详细了解📄 Redis
- 托管📦Aspire。托管。Redis📦Aspire。托管.Garnet,或 📦Aspire。托管.Valkey
- Client📦Aspire。StackExchange。Redis
用于访问 Redis 缓存的库。
- 详细了解📄 Seq
- 托管📦Aspire。好客。Seq
- Client📦Aspire。Seq
用于记录日志到 Seq的库。
- 详细了解📄SQL Server - EF Core
- 托管📦Aspire:Hosting.SqlServer
- Client📦Aspire。Microsoft.EntityFrameworkCore.SqlServer
一个库,用于使用 访问 数据库。
- 详细了解📄 SQL Server
- 托管📦Aspire:Hosting.SqlServer
- Client📦Aspire。Microsoft.Data.SqlClient
用于访问 SQL Server 数据库的库。

关于在 .NET Aspire中使用 Visual Studio 集成的更多信息,请参阅 Visual Studio 工具

Azure 集成

Azure 集成将应用程序配置为使用 Azure 资源。 这些托管集成在 Aspire.Hosting.Azure.* NuGet 包中可用,而其客户端集成在 Aspire.* NuGet 包中可用:

集成指南和 NuGet 包 描述
- 详细了解📄Azure 应用配置
- 托管📦Aspire。托管。Azure。AppConfiguration
- Client:N/A
用于与 Azure 应用配置交互的库。
- 详细了解📄 Azure Application Insights
- Hosting📦Aspire.Hosting.Azure。ApplicationInsights
- Client:N/A
用于与 Azure Application Insights交互的库。
- 详细了解📄Azure Cosmos DB - EF Core
- 托管📦Aspire。主机服务。Azure。CosmosDB
- Client📦Aspire。Microsoft.EntityFrameworkCore.Cosmos
一个库,用于使用 Azure访问 Azure Cosmos DBEntity Framework Core 数据库。
- 详细了解📄 Azure Cosmos DB
- 托管📦Aspire。主机服务。Azure。CosmosDB
- Client📦Aspire。Microsoft。Azure。Cosmos
用于访问 Azure Cosmos DB 数据库的库。
- 详细了解📄 Azure Event Hubs
- Hosting📦Aspire。Hosting。Azure。EventHubs
- Client📦Aspire。Azure。Messaging.EventHubs
用于访问 Azure Event Hubs的库。
- 详细了解📄Azure 函数
- 主机托管📦Aspire。Azure。函数
- Client:N/A
用于与 Azure Functions集成的库。
- 详细了解📄 Azure Key Vault
- 托管📦Aspire。托管服务。Azure。KeyVault
- Client📦Aspire。Azure。Security.KeyVault
用于访问 Azure Key Vault的库。
- 详细了解📄Azure Operational Insights
- 主机📦Aspire。主机。Azure。OperationalInsights
- Client:N/A
用于与 Azure Operational Insights交互的库。
- 详细了解📄 Azure AI OpenAI
- Hosting📦Aspire。托管。Azure。认知服务
- Client📦Aspire。Azure。人工智能。OpenAI
用于访问 Azure AI OpenAI 或 OpenAI 功能的库。
- 详细了解📄 Azure PostgreSQL
- 托管📦Aspire。托管。Azure。PostgreSQL
- Client:N/A
用于与 Azure 数据库进行 PostgreSQL交互的库。
- 详细了解📄Azure AI 搜索
- 托管📦Aspire。托管。Azure。搜索
- Client📦Aspire。Azure。搜索.文档
用于访问 Azure AI 搜索 功能的库。
- 详细了解📄 Azure Service Bus
- 托管📦Aspire。托管。Azure。服务总线
- Client📦Aspire。Azure。Messaging.ServiceBus
用于访问 Azure Service Bus的库。
- 详细了解📄 Azure SignalR Service
- 托管📦Aspire。托管。Azure。SignalR
- ClientMicrosoft。Azure。SignalR
用于访问 Azure SignalR Service的库。
- 详细了解📄 Azure Blob Storage
- 托管📦Aspire。托管。Azure。存储
- Client📦Aspire。Azure。Storage.Blobs
用于访问 Azure Blob Storage的库。
- 详细了解📄 Azure Storage Queues
- 托管📦Aspire。托管。Azure。存储
- Client📦Aspire。Azure。Storage.Queues
用于访问 Azure Storage Queues的库。
- 详细了解📄 Azure Table Storage
- 托管📦Aspire。托管。Azure。存储
- Client📦Aspire。Azure。Data.Tables
用于访问 Azure 表 服务的库。
- 详细了解📄Azure Web PubSub
- 托管📦Aspire。托管。Azure。WebPubSub
- Client📦Aspire。Azure。Messaging.WebPubSub
用于访问 Azure Web PubSub 服务的库。

Amazon Web Services (AWS) 托管集成

集成指南和 NuGet 包 描述
- 详细了解📄 AWS 托管
- 托管📦Aspire。托管.AWS
- Client:N/A
一个用于建模 AWS 资源的库。

有关详细信息,请参阅 GitHub:Aspire。Hosting.AWS 库

社区工具包集成

注意

社区工具包集成由 .NET.NET Aspire 社区驱动和维护。 .NET .NET Aspire 团队未正式支持这些集成。

集成指南和 NuGet 包 描述
- 详细了解📄Azure 静态 Web 应用模拟器
- Hosting📦 CommunityToolkit.Aspire.Hosting.Azure.StaticWebApps
- Client:N/A
Azure 静态 Web 应用模拟器 的托管集成(注意:不支持将项目部署到 Azure 静态 Web 应用)。
- 了解详细信息📄 Bun 托管服务
- 托管📦 CommunityToolkit。Aspire。Hosting.Bun
- Client:N/A
Bun 应用的托管集成。
- 了解详细信息📄Deno 托管
- Hosting📦 CommunityToolkit。Aspire。Hosting。Deno
- Client:N/A
Deno 应用的托管集成。
- 了解详细信息📄 Go 托管
- 托管📦 CommunityToolkit。Aspire。Hosting.Golang
- Client:N/A
Go 应用的托管集成。
- 了解详细信息📄 Java/Spring 主机服务
- 托管📦 CommunityToolkit。Aspire。Hosting.Java
- Client:N/A
使用本地 JDK 或使用容器在 .NET.NET Aspire 中运行 Java 代码的集成。
- 了解详细信息📄Node.js 托管扩展
- Hosting: 📦 CommunityToolkit.Aspire.Hosting.NodeJs.Extensions
- Client:N/A
包含用于运行 Node.js 应用程序的一些附加扩展的集成
- 了解详细信息📄 Ollama
- 托管📦 CommunityToolkit。Aspire。Hosting.Ollama
- Client📦Aspire。CommunitToolkit.OllamaSharp
一个利用 Aspire 容器的 组件,支持在启动时下载模型。
- 了解详细信息📄 Meilisearch 托管
- 托管📦 CommunityToolkit。Aspire。Hosting.Meilisearch
- Client📦Aspire。CommunitToolkit.Meilisearch
利用 Aspire 容器的 组件。
- 了解详细信息📄 Rust 托管
- 托管📦 CommunityToolkit。Aspire。Hosting.Rust
- Client:N/A
Rust 应用的托管集成。
- 了解详细信息📄 托管 的 SQL 数据库项目
- 托管📦 CommunityToolkit。Aspire。Hosting.SqlDatabaseProjects
- Client:N/A
SQL 数据库项目的 Aspire 托管集成解决方案。

有关详细信息,请参阅 .NET.NET Aspire Community Toolkit