Files
awesome-copilot/skills/aspire/references/integrations-catalog.md
Chris McKee 6512c785c7 feat: Add Aspire polyglot distributed-app orchestration skill
Add comprehensive Aspire skill covering CLI, AppHost orchestration, service discovery, integrations (144+), MCP server, dashboard, testing, deployment, and troubleshooting. Includes reference docs for polyglot APIs, architecture, CLI, integrations catalog, and more.
2026-02-05 19:00:02 -06:00

279 lines
9.4 KiB
Markdown

# Integrations Catalog — Complete Reference
Aspire has **144+ integrations** across 13 categories, with **90+ NuGet packages**. Each integration typically provides two packages:
- **Hosting package** (`Aspire.Hosting.*`) — adds the resource to the AppHost
- **Client package** (`Aspire.*`) — configures the client SDK in your service with health checks, telemetry, and retries
---
## Integration pattern
```csharp
// === AppHost (hosting side) ===
var redis = builder.AddRedis("cache"); // Aspire.Hosting.Redis
var api = builder.AddProject<Projects.Api>("api")
.WithReference(redis);
// === Service (client side) — in API's Program.cs ===
builder.AddRedisClient("cache"); // Aspire.Redis
// Automatically configures: connection string, health checks, OpenTelemetry, retries
```
---
## AI
| Integration | Hosting Package | Client Package |
|---|---|---|
| Azure OpenAI | `Aspire.Hosting.Azure.CognitiveServices` | `Aspire.Azure.AI.OpenAI` |
| OpenAI | — | `Aspire.OpenAI` |
| Ollama | `Aspire.Hosting.Ollama` | `Aspire.Ollama` |
| GitHub Models | — | `Aspire.GitHubModels` |
```csharp
// AppHost: Azure OpenAI
var openai = builder.AddAzureOpenAI("openai")
.AddDeployment(new("gpt-4o", "gpt-4o", "2024-08-06"));
// AppHost: Ollama (local)
var ollama = builder.AddOllama("ollama")
.AddModel("llama3.2")
.WithDataVolume();
```
---
## Caching
| Integration | Hosting Package | Client Package |
|---|---|---|
| Redis | `Aspire.Hosting.Redis` | `Aspire.StackExchange.Redis` |
| Redis (output caching) | `Aspire.Hosting.Redis` | `Aspire.StackExchange.Redis.OutputCaching` |
| Redis (distributed cache) | `Aspire.Hosting.Redis` | `Aspire.StackExchange.Redis.DistributedCaching` |
| Garnet | `Aspire.Hosting.Garnet` | `Aspire.StackExchange.Redis` (wire-compatible) |
| Valkey | `Aspire.Hosting.Valkey` | `Aspire.StackExchange.Redis` (wire-compatible) |
```csharp
var redis = builder.AddRedis("cache")
.WithRedisCommander() // adds Redis Commander UI
.WithRedisInsight() // adds RedisInsight UI
.WithDataVolume() // persist data across restarts
.WithPersistence(); // enable RDB snapshots
```
---
## Cloud / Azure (25+ integrations)
| Integration | Hosting Package | Client Package |
|---|---|---|
| AI Foundry | `Aspire.Hosting.Azure.AIFoundry` | `Aspire.Azure.AI.Foundry` |
| App Configuration | `Aspire.Hosting.Azure.AppConfiguration` | `Aspire.Azure.AppConfiguration` |
| Blob Storage | `Aspire.Hosting.Azure.Storage` | `Aspire.Azure.Storage.Blobs` |
| Queue Storage | `Aspire.Hosting.Azure.Storage` | `Aspire.Azure.Storage.Queues` |
| Table Storage | `Aspire.Hosting.Azure.Storage` | `Aspire.Azure.Storage.Tables` |
| Cosmos DB | `Aspire.Hosting.Azure.CosmosDB` | `Aspire.Microsoft.Azure.Cosmos` |
| Cosmos DB (EF Core) | `Aspire.Hosting.Azure.CosmosDB` | `Aspire.Microsoft.EntityFrameworkCore.Cosmos` |
| Event Hubs | `Aspire.Hosting.Azure.EventHubs` | `Aspire.Azure.Messaging.EventHubs` |
| Key Vault | `Aspire.Hosting.Azure.KeyVault` | `Aspire.Azure.Security.KeyVault` |
| Search (AI Search) | `Aspire.Hosting.Azure.Search` | `Aspire.Azure.Search.Documents` |
| Service Bus | `Aspire.Hosting.Azure.ServiceBus` | `Aspire.Azure.Messaging.ServiceBus` |
| SignalR | `Aspire.Hosting.Azure.SignalR` | `Aspire.Azure.SignalR` |
| Web PubSub | `Aspire.Hosting.Azure.WebPubSub` | `Aspire.Azure.Messaging.WebPubSub` |
| Azure Functions | `Aspire.Hosting.Azure.Functions` | — |
| Azure SQL | `Aspire.Hosting.Azure.Sql` | `Aspire.Azure.Sql` |
| Azure PostgreSQL | `Aspire.Hosting.Azure.PostgreSQL` | Built on `Aspire.Npgsql` |
| Azure Redis | `Aspire.Hosting.Azure.Redis` | Built on `Aspire.StackExchange.Redis` |
```csharp
// Azure Storage (Blob + Queue + Table)
var storage = builder.AddAzureStorage("storage")
.RunAsEmulator(); // use Azurite locally
var blobs = storage.AddBlobs("blobs");
var queues = storage.AddQueues("queues");
// Cosmos DB with emulator for local dev
var cosmos = builder.AddAzureCosmosDB("cosmos")
.RunAsEmulator()
.AddDatabase("mydb");
// Service Bus
var sb = builder.AddAzureServiceBus("messaging")
.AddQueue("orders")
.AddTopic("events", topic => topic.AddSubscription("processor"));
```
---
## Databases
| Integration | Hosting Package | Client Package |
|---|---|---|
| PostgreSQL | `Aspire.Hosting.PostgreSQL` | `Aspire.Npgsql` |
| PostgreSQL (EF Core) | `Aspire.Hosting.PostgreSQL` | `Aspire.Npgsql.EntityFrameworkCore.PostgreSQL` |
| SQL Server | `Aspire.Hosting.SqlServer` | `Aspire.Microsoft.Data.SqlClient` |
| SQL Server (EF Core) | `Aspire.Hosting.SqlServer` | `Aspire.Microsoft.EntityFrameworkCore.SqlServer` |
| MongoDB | `Aspire.Hosting.MongoDB` | `Aspire.MongoDB.Driver` |
| MySQL / MariaDB | `Aspire.Hosting.MySql` | `Aspire.MySqlConnector` |
| MySQL (EF Core) | `Aspire.Hosting.MySql` | `Aspire.Pomelo.EntityFrameworkCore.MySql` |
| Oracle (EF Core) | `Aspire.Hosting.Oracle` | `Aspire.Oracle.EntityFrameworkCore` |
| Elasticsearch | `Aspire.Hosting.Elasticsearch` | `Aspire.Elastic.Clients.Elasticsearch` |
| Milvus (vector DB) | `Aspire.Hosting.Milvus` | `Aspire.Milvus.Client` |
| Qdrant (vector DB) | `Aspire.Hosting.Qdrant` | `Aspire.Qdrant.Client` |
| SurrealDB | `CommunityToolkit.Aspire.Hosting.SurrealDb` | Community |
| RavenDB | `CommunityToolkit.Aspire.Hosting.RavenDB` | Community |
| KurrentDB | `CommunityToolkit.Aspire.Hosting.KurrentDB` | Community |
| SQLite (EF Core) | — | `Aspire.Microsoft.EntityFrameworkCore.Sqlite` |
```csharp
// PostgreSQL with pgAdmin and pgWeb UIs
var postgres = builder.AddPostgres("pg")
.WithPgAdmin()
.WithPgWeb()
.WithDataVolume()
.AddDatabase("catalog");
// MongoDB with Mongo Express UI
var mongo = builder.AddMongoDB("mongo")
.WithMongoExpress()
.WithDataVolume()
.AddDatabase("analytics");
// SQL Server
var sql = builder.AddSqlServer("sql")
.WithDataVolume()
.AddDatabase("orders");
```
---
## DevTools
| Integration | Hosting Package | Purpose |
|---|---|---|
| Data API Builder (DAB) | `Aspire.Hosting.DataAPIBuilder` | REST/GraphQL over databases |
| Dev Tunnels | `Aspire.Hosting.DevTunnels` | Public URL tunnels for local dev |
| Flagd | `CommunityToolkit.Aspire.Hosting.Flagd` | Feature flags (OpenFeature) |
| k6 | `CommunityToolkit.Aspire.Hosting.k6` | Load testing |
| Mailpit | `CommunityToolkit.Aspire.Hosting.Mailpit` | Email testing |
| SQL Database Projects | `Aspire.Hosting.SqlDatabaseProjects` | SQL schema deployment |
---
## Messaging
| Integration | Hosting Package | Client Package |
|---|---|---|
| RabbitMQ | `Aspire.Hosting.RabbitMQ` | `Aspire.RabbitMQ.Client` |
| Kafka | `Aspire.Hosting.Kafka` | `Aspire.Confluent.Kafka` |
| NATS | `Aspire.Hosting.Nats` | `Aspire.NATS.Net` |
| LavinMQ | `CommunityToolkit.Aspire.Hosting.LavinMQ` | `Aspire.RabbitMQ.Client` (AMQP-compat) |
```csharp
var rabbit = builder.AddRabbitMQ("messaging")
.WithManagementPlugin() // adds management UI
.WithDataVolume();
var kafka = builder.AddKafka("kafka")
.WithKafkaUI(); // adds Kafka UI
```
---
## Observability
| Integration | Package | Purpose |
|---|---|---|
| OpenTelemetry | Built-in | Traces, metrics, logs (auto-configured) |
| Seq | `Aspire.Hosting.Seq` | Structured log aggregation |
| Grafana + Prometheus | Community | Metrics dashboards |
---
## Reverse Proxies
| Integration | Package |
|---|---|
| YARP | `Aspire.Hosting.Yarp` |
---
## Security
| Integration | Package |
|---|---|
| Keycloak | `CommunityToolkit.Aspire.Hosting.Keycloak` |
---
## Frameworks (Polyglot)
See [Polyglot APIs](polyglot-apis.md) for complete method signatures.
| Framework | Package | Type |
|---|---|---|
| JavaScript | `Aspire.Hosting.JavaScript` | Official |
| Python | `Aspire.Hosting.Python` | Official |
| Go | `CommunityToolkit.Aspire.Hosting.Golang` | Community |
| Java | `CommunityToolkit.Aspire.Hosting.Java` | Community |
| Rust | `CommunityToolkit.Aspire.Hosting.Rust` | Community |
| Bun | `CommunityToolkit.Aspire.Hosting.Bun` | Community |
| Deno | `CommunityToolkit.Aspire.Hosting.Deno` | Community |
| Dapr | `Aspire.Hosting.Dapr` | Official |
| Orleans | `Aspire.Hosting.Orleans` | Official |
| MAUI | `Aspire.Hosting.Maui` | Official |
---
## Custom integrations
### Custom hosting integration
```csharp
public static class MyServiceExtensions
{
public static IResourceBuilder<ContainerResource> AddMyService(
this IDistributedApplicationBuilder builder, string name)
{
return builder.AddContainer(name, "my-registry/my-service")
.WithHttpEndpoint(targetPort: 8080, name: "http")
.WithEnvironment("MODE", "production");
}
}
```
### Custom client integration
```csharp
public static class MyServiceClientExtensions
{
public static IHostApplicationBuilder AddMyServiceClient(
this IHostApplicationBuilder builder, string connectionName)
{
// Register client with DI
builder.Services.AddHttpClient<MyServiceClient>(client =>
{
var conn = builder.Configuration.GetConnectionString(connectionName);
client.BaseAddress = new Uri(conn!);
});
// Add health check
builder.Services.AddHealthChecks()
.AddUrlGroup(new Uri($"{connectionName}/health"), name: connectionName);
return builder;
}
}
```
### Secure communication between integrations
```csharp
// Enable TLS between services
var api = builder.AddProject<Projects.Api>("api")
.WithHttpsEndpoint()
.WithReference(redis)
.WithTransport("https");
```