.NET .NET Aspire 集成概述

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

提示

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

集成职责

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

托管服务集成

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

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

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

Client 集成

Client 集成能够将 client 库与 依赖注入(DI)连接,定义配置架构,并在适用时添加 健康检查弹性遥测。 .NET Aspire client 集成库的前缀为 Aspire.,然后包括它们与之集成的完整包名称,例如 Aspire.StackExchange.Redis

这些包配置现有 client 库以连接到托管集成。 它们扩展了 IHostApplicationBuilder 接口,允许使用 client的项目(如您的 Web 应用或 API)利用连接的资源。 官方 client 集成 NuGet 包aspireintegrationclient标记。 除了官方的 client 集成之外,社区还为社区工具包中的各种服务和平台创建了 client 集成

有关创建自定义 client 集成的详细信息,请参阅 创建自定义 .NET Aspireclient 集成

托管与 client 集成之间的关系

托管和 client 集成搭配使用时效果最佳,虽然两者 关联,也可以单独使用。 某些托管集成没有相应的 client 集成。 配置使托管集成能够与 client 集成配合使用。

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

关系图

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

集成功能

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

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

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

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

官方集成

.NET .NET Aspire 提供了许多集成来帮助构建云原生应用程序。 这些集成旨在与 .NET Aspire 应用主机和 client 库无缝配合工作。 以下部分详细介绍了与云无关的、特定于 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.Hosting.Elasticsearch
- Client📦Aspire。Elastic.Clients.Elasticsearch
用于访问 Elasticsearch 数据库的库。
- 详细了解📄 Keycloak
- 托管📦Aspire。托管。Keycloak
- Client📦Aspire。Keycloak。身份验证
用于访问 Keycloak 身份验证的库。
- 详细了解📄 Milvus
- 托管📦Aspire。托管。Milvus
- Client📦Aspire。Milvus。Client
用于访问 Milvus 数据库的库。
- 详细了解📄MongoDB 驱动程序
- Hosting📦Aspire.Hosting.MongoDB
- Client📦Aspire.MongoDB. 驱动程序
用于访问 MongoDB 数据库的库。
- 详细了解📄 MySqlConnector
- 托管📦Aspire。托管。MySql
- Client📦Aspire。MySqlConnector
用于访问 MySqlConnector 数据库的库。
- 详细了解📄 NATS
- 托管📦Aspire。托管。Nats
- Client📦Aspire。NATS.Net
用于访问 NATS 消息传送的库。
- 详细了解📄Oracle - EF Core
- 托管📦Aspire。Oracle
- Client📦Aspire。Oracle。EntityFrameworkCore
一个库,用于使用 Entity Framework Core访问 Oracle 数据库。
- 详细了解📄 Orleans
- 托管📦Aspire。托管。Orleans
- Client:不适用
用于将 Orleans 建模为 .NET.NET Aspire 资源的库。
- 详细了解📄 波梅洛 MySQL - EF Core
- 托管📦Aspire。托管。MySql
- Client📦Aspire。Pomelo.EntityFrameworkCore.MySql
一个库,用于使用 Entity Framework Core访问 MySql 数据库。
- 详细了解📄PostgreSQL - EF Core
- 托管📦Aspire。好客。PostgreSQL
- Client📦Aspire。Npgsql.EntityFrameworkCore.PostgreSQL
一个库,用于使用 Entity Framework Core访问 PostgreSQL 数据库。
- 详细了解📄 PostgreSQL
- 托管📦Aspire。托管服务。PostgreSQL
- Client📦Aspire。Npgsql
用于访问 PostgreSQL 数据库的库。
- 详细了解📄 Qdrant
- 托管📦Aspire。Hosting.Qdrant
- Client📦Aspire。Qdrant。Client
用于访问 Qdrant 数据库的库。
- 详细了解📄 RabbitMQ
- Hosting📦Aspire。托管。RabbitMQ
- Client📦Aspire。RabbitMQ。Client
用于访问 RabbitMQ的库。
- 详细了解📄Redis 分布式缓存
- 托管📦Aspire。托管。Redis📦Aspire。托管.Garnet,或 📦Aspire。托管.Valkey
- Client📦Aspire。StackExchange。Redis。DistributedCaching
用于访问 分布式缓存Redis 缓存的库。
- 详细了解📄Redis 输出缓存
- 托管📦Aspire。托管。Redis📦Aspire。Hosting.Garnet,或 📦Aspire。Hosting.Valkey
- Client📦Aspire。StackExchange。Redis。OutputCaching
用于访问 Redis 缓存并处理 输出缓存的库。
- 详细了解📄 Redis
- Hosting📦Aspire.Hosting.Redis📦Aspire.Hosting.Garnet,或 📦Aspire.Hosting.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 数据库的库。

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

Azure 集成

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

集成文档和 NuGet 软件包 描述
- 详细了解📄Azure 应用配置
- 托管📦Aspire。托管。Azure。AppConfiguration
- Client:N/A
用于与 Azure 应用配置交互的库。
- 详细了解📄 Azure Application Insights
- Hosting📦Aspire.Hosting.Azure。ApplicationInsights
- Client:不适用
用于与 Azure Application Insights交互的库。
- 详细了解📄Azure Cosmos DB - EF Core
- 托管📦Aspire。主机服务。Azure。CosmosDB
- Client📦Aspire。Microsoft.EntityFrameworkCore.Cosmos
一个库,用于使用 Entity Framework Core访问 AzureAzure Cosmos DB 数据库。
- 详细了解📄 Azure Cosmos DB
- 托管📦Aspire.Hosting.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:不适用
用于与 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:不适用
Bun 应用的托管集成。
- 了解详细信息📄Deno 托管
- Hosting📦 CommunityToolkit。Aspire。Hosting。Deno
- Client:不适用
Deno 应用的托管集成。
- 了解详细信息📄 Go 托管
- 托管📦 CommunityToolkit。Aspire。Hosting.Golang
- Client:不适用
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
一个利用 Ollama 容器的 Aspire 组件,支持在启动时下载模型。
- 了解详细信息📄 Meilisearch 托管
- 托管📦 CommunityToolkit。Aspire。Hosting.Meilisearch
- Client📦Aspire。CommunitToolkit.Meilisearch
利用 Meilisearch 容器的 Aspire 组件。
- 了解详细信息📄 Rust 托管
- 托管📦 CommunityToolkit。Aspire。Hosting.Rust
- Client:不适用
Rust 应用的托管集成。
- 了解详细信息📄 托管 的 SQL 数据库项目
- 托管📦 CommunityToolkit。Aspire。Hosting.SqlDatabaseProjects
- Client:N/A
SQL 数据库项目的 Aspire 托管集成解决方案。

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