Aspire — Orchestration d'applications distribuées polyglotte
Aspire est une chaîne d'outils polyglotte, code-first pour construire des applications distribuées observables et prêtes pour la production. Elle orchestre des conteneurs, des exécutables et des ressources cloud à partir d'un seul projet AppHost — que les charges de travail soient en C#, Python, JavaScript/TypeScript, Go, Java, Rust, Bun, Deno ou PowerShell.
Modèle mental : L'AppHost est un chef d'orchestre — il ne joue pas des instruments, il indique à chaque service quand démarrer, comment se trouver les uns les autres, et surveille les problèmes.
Le matériel de référence détaillé se trouve dans le dossier references/ — chargez à la demande.
Références
| Référence | Quand charger |
|---|---|
| CLI Reference | Drapeaux de commande, options ou utilisation détaillée |
| MCP Server | Configuration du MCP pour les assistants IA, outils disponibles |
| Integrations Catalog | Découvrir les intégrations via les outils MCP, motifs de câblage |
| Polyglot APIs | Signatures de méthode, options de chaînage, motifs spécifiques aux langages |
| Architecture | Internals de DCP, modèle de ressource, découverte de services, réseautage, télémétrie |
| Dashboard | Fonctionnalités du tableau de bord, mode autonome, GenAI Visualizer |
| Deployment | Docker, Kubernetes, Azure Container Apps, App Service |
| Testing | Tests d'intégration contre l'AppHost |
| Troubleshooting | Codes de diagnostic, erreurs courantes et correctifs |
1. Recherche dans la documentation Aspire
L'équipe Aspire fournit un serveur MCP qui met à disposition des outils de documentation directement dans votre assistant IA. Voir MCP Server pour les détails de configuration.
Aspire CLI 13.2+ (recommandé — dispose de la recherche de docs intégrée)
Si vous exécutez Aspire CLI 13.2 ou ultérieur (aspire --version), le serveur MCP inclut les outils de recherche de docs :
| Outil | Description |
|---|---|
list_docs |
Liste toute la documentation disponible depuis aspire.dev |
search_docs |
Effectue une recherche lexicale pondérée sur la documentation indexée |
get_doc |
Récupère un document spécifique par son slug |
Ces outils ont été ajoutés dans PR #14028. Pour mettre à jour : aspire update --self --channel daily.
Pour en savoir plus sur cette approche, consultez le post de David Pine : https://davidpine.dev/posts/aspire-docs-mcp-tools/
Aspire CLI 13.1 (outils d'intégration uniquement)
Sur 13.1, le serveur MCP fournit la recherche d'intégration mais pas la recherche de docs :
| Outil | Description |
|---|---|
list_integrations |
Liste les intégrations d'hébergement Aspire disponibles |
get_integration_docs |
Obtient la documentation pour un package d'intégration spécifique |
Pour les requêtes de docs générales sur 13.1, utilisez Context7 comme source principale (voir ci-dessous).
Fallback : Context7
Utilisez Context7 (mcp_context7) quand les outils MCP de docs Aspire ne sont pas disponibles (13.1) ou que le serveur MCP n'est pas en cours d'exécution :
Étape 1 — Résoudre l'ID de la bibliothèque (une fois par session) :
Appelez mcp_context7_resolve-library-id avec libraryName: ".NET Aspire".
| Rang | ID de bibliothèque | Utiliser quand |
|---|---|---|
| 1 | /microsoft/aspire.dev |
Source principale. Guides, intégrations, référence CLI, déploiement. |
| 2 | /dotnet/aspire |
API internals, détails de mise en œuvre au niveau du code source. |
| 3 | /communitytoolkit/aspire |
Intégrations polyglotte non-Microsoft (Go, Java, Node.js, Ollama). |
Étape 2 — Requête docs :
libraryId: "/microsoft/aspire.dev", query: "Python integration AddPythonApp service discovery"
libraryId: "/communitytoolkit/aspire", query: "Golang Java Node.js community integrations"
Fallback : Recherche GitHub (quand Context7 n'est aussi pas disponible)
Recherchez dans le référentiel de docs officiel sur GitHub :
- Docs repo :
microsoft/aspire.dev— chemin :src/frontend/src/content/docs/ - Source repo :
dotnet/aspire - Samples repo :
dotnet/aspire-samples - Community integrations :
CommunityToolkit/Aspire
2. Prérequis et installation
| Prérequis | Détails |
|---|---|
| .NET SDK | 10.0+ (obligatoire même pour les charges de travail non-.NET — l'AppHost est .NET) |
| Container runtime | Docker Desktop, Podman ou Rancher Desktop |
| IDE (optionnel) | VS Code + C# Dev Kit, Visual Studio 2022, JetBrains Rider |
# Linux / macOS
curl -sSL https://aspire.dev/install.sh | bash
# Windows PowerShell
irm https://aspire.dev/install.ps1 | iex
# Vérifier
aspire --version
# Installer les templates
dotnet new install Aspire.ProjectTemplates
3. Templates de projet
| Template | Commande | Description |
|---|---|---|
| aspire-starter | aspire new aspire-starter |
Starter ASP.NET Core/Blazor + AppHost + tests |
| aspire-ts-cs-starter | aspire new aspire-ts-cs-starter |
Starter ASP.NET Core/React + AppHost |
| aspire-py-starter | aspire new aspire-py-starter |
Starter FastAPI/React + AppHost |
| aspire-apphost-singlefile | aspire new aspire-apphost-singlefile |
AppHost vide monofichier |
4. Quick Start AppHost (Polyglotte)
L'AppHost orchestre tous les services. Les charges de travail non-.NET s'exécutent en tant que conteneurs ou exécutables.
var builder = DistributedApplication.CreateBuilder(args);
// Infrastructure
var redis = builder.AddRedis("cache");
var postgres = builder.AddPostgres("pg").AddDatabase("catalog");
// API .NET
var api = builder.AddProject<Projects.CatalogApi>("api")
.WithReference(postgres).WithReference(redis);
// Service ML Python
var ml = builder.AddPythonApp("ml-service", "../ml-service", "main.py")
.WithHttpEndpoint(targetPort: 8000).WithReference(redis);
// Frontend React (Vite)
var web = builder.AddViteApp("web", "../frontend")
.WithHttpEndpoint(targetPort: 5173).WithReference(api);
// Worker Go
var worker = builder.AddGolangApp("worker", "../go-worker")
.WithReference(redis);
builder.Build().Run();
Pour les signatures d'API complètes, voir Polyglot APIs.
5. Concepts clés (résumé)
| Concept | Point clé |
|---|---|
| Run vs Publish | aspire run = dev local (moteur DCP). aspire publish = générer des manifests de déploiement. |
| Service discovery | Automatique via variables d'env : ConnectionStrings__<name>, services__<name>__http__0 |
| Cycle de vie des ressources | Ordre DAG — les dépendances démarrent en premier. .WaitFor() contrôle les health checks. |
| Types de ressources | ProjectResource, ContainerResource, ExecutableResource, ParameterResource |
| Intégrations | 144+ sur 13 catégories. Package d'hébergement (AppHost) + package client (service). |
| Dashboard | Logs en temps réel, traces, métriques, visualiseur GenAI. S'exécute automatiquement avec aspire run. |
| MCP Server | Les assistants IA peuvent interroger les apps en cours d'exécution et rechercher des docs via CLI (STDIO). |
| Testing | Aspire.Hosting.Testing — lancer l'AppHost complet dans xUnit/MSTest/NUnit. |
| Deployment | Docker, Kubernetes, Azure Container Apps, Azure App Service. |
6. Référence rapide CLI
Commandes valides dans Aspire CLI 13.1 :
| Commande | Description | Statut |
|---|---|---|
aspire new <template> |
Créer à partir d'un template | Stable |
aspire init |
Initialiser dans un projet existant | Stable |
aspire run |
Démarrer toutes les ressources localement | Stable |
aspire add <integration> |
Ajouter une intégration | Stable |
aspire publish |
Générer les manifests de déploiement | Preview |
aspire config |
Gérer les paramètres de configuration | Stable |
aspire cache |
Gérer le cache disque | Stable |
aspire deploy |
Déployer vers les cibles définies | Preview |
aspire do <step> |
Exécuter une étape du pipeline | Preview |
aspire update |
Mettre à jour les intégrations (ou --self pour la CLI) |
Preview |
aspire mcp init |
Configurer MCP pour les assistants IA | Stable |
aspire mcp start |
Démarrer le serveur MCP | Stable |
Référence complète des commandes avec drapeaux : CLI Reference.
7. Motifs courants
Ajouter un nouveau service
- Créer votre répertoire de service (n'importe quel langage)
- Ajouter à l'AppHost :
Add*App()ouAddProject<T>() - Câbler les dépendances :
.WithReference() - Contrôler les health checks :
.WaitFor()si nécessaire - Exécuter :
aspire run
Migration depuis Docker Compose
aspire new aspire-apphost-singlefile(AppHost vide)- Remplacer chaque service
docker-composepar une ressource Aspire depends_on→.WithReference()+.WaitFor()ports→.WithHttpEndpoint()environment→.WithEnvironment()ou.WithReference()
8. URLs clés
| Ressource | URL |
|---|---|
| Documentation | https://aspire.dev |
| Runtime repo | https://github.com/dotnet/aspire |
| Docs repo | https://github.com/microsoft/aspire.dev |
| Samples | https://github.com/dotnet/aspire-samples |
| Community Toolkit | https://github.com/CommunityToolkit/Aspire |
| Dashboard image | mcr.microsoft.com/dotnet/aspire-dashboard |
| Discord | https://aka.ms/aspire/discord |
| https://www.reddit.com/r/aspiredotdev/ |