mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-22 11:25:13 +00:00
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.
279 lines
9.4 KiB
Markdown
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");
|
|
```
|