Tutoriel : Déployer un projet .NET Aspire avec une base de données SQL Server sur Azure
Dans ce tutoriel, vous allez apprendre à configurer une application ASP.NET Core avec une base de données SQL Server pour le déploiement sur Azure. .NET Aspire fournit plusieurs configurations d’intégration SQL Server qui approvisionnent différents services de base de données dans Azure. Vous allez apprendre à :
- Créer une application de base ASP.NET Core configurée pour utiliser l’intégration .NET AspireSQL Server
- Configurer l’application pour approvisionner une base de données SQL Azure
- Configurer l’application pour approvisionner une base de données SQL Server conteneurisée
Note
Ce document se concentre spécifiquement sur les configurations de .NET Aspire pour approvisionner et déployer des ressources SQL Server dans Azure. Consultez le didacticiel Azure Container Apps déploiement pour en savoir plus sur le processus de déploiement complet .NET.NET Aspire.
Conditions préalables
Pour utiliser .NET.NET Aspire, vous avez besoin de l’installation locale suivante :
- .NET 8.0 ou .NET 9.0
- Un runtime de conteneur conforme à OCI, tel que :
- Docker Desktop ou Podman. Pour plus d’informations, consultez le runtime de conteneur .
- Un environnement de développement intégré (IDE) ou un éditeur de code, par exemple :
- Visual Studio 2022 version 17.9 ou ultérieure (facultatif)
-
Visual Studio Code (facultatif)
- C# Dev Kit: Extension (facultatif)
- JetBrains Rider avec .NET.NET Aspire plug-in (facultatif)
Pour plus d'informations, consultez la configuration et l'outillage des .NET.NET Aspire, et le SDK .NET.NET Aspire.
Créer l’exemple de solution
- En haut de Visual Studio, accédez à Fichier>Nouveau>Projet.
- Dans la fenêtre de boîte de dialogue, recherchez Aspire et sélectionnez .NET.NET Aspire - Starter Application. Choisissez Suivant.
- Dans l’écran Configurer votre nouveau projet :
- Entrez un nom de projet de AspireSQL.
- Laissez le reste des valeurs aux valeurs par défaut et sélectionnez suivant.
- Dans l’écran Informations supplémentaires :
- Vérifiez que .NET 9.0 est sélectionné et choisissez Créer.
Visual Studio crée une nouvelle solution de ASP.NET Core qui est structurée pour utiliser .NET Aspire. La solution se compose des projets suivants :
- AspireSQL.Web : projet Blazor qui dépend des valeurs par défaut du service.
- AspireSQL.ApiService: projet d’API qui dépend des valeurs par défaut du service.
- AspireSQL.AppHost: projet d’orchestrateur conçu pour connecter et configurer les différents projets et services de votre application. L’orchestrateur doit être défini comme projet de démarrage.
- AspireSQL.ServiceDefaults: bibliothèque de classes partagées pour contenir des configurations qui peuvent être réutilisées dans les projets de votre solution.
Configurer l’application pour le déploiement de SQL Server
.NET Aspire fournit deux options de configuration intégrées pour simplifier le déploiement SQL Server sur Azure:
- Approvisionner une base de données SQL Server conteneurisée à l’aide de Azure Container Apps
- Provisionner une instance de base de données SQL Azure
Ajouter l’intégration .NET.NET Aspire à l’application
Ajoutez l’intégration .NET.NET Aspire appropriée au projet AspireSQL.AppHost pour votre service d’hébergement souhaité.
Ajoutez la 📦Aspire. Hébergement.Azure. Package NuGet sql au projet AspireSQL.AppHost :
dotnet add package Aspire.Hosting.Azure.Sql
Configurer le projet AppHost
Configurez le projet AspireSQL.AppHost pour votre service de base de données SQL souhaité.
Remplacez le contenu du fichier
var builder = DistributedApplication.CreateBuilder(args);
var apiService = builder.AddProject<Projects.AspireSql_ApiService>("apiservice");
// Provisions an Azure SQL Database when published
var sqlServer = builder.AddAzureSqlServer("sqlserver")
.AddDatabase("sqldb");
builder.AddProject<Projects.AspireSql_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WaitFor(apiService);
builder.Build().Run();
Le code précédent ajoute une ressource conteneur SQL Server à votre application et configure une connexion à une base de données appelée sqldata
. La méthode PublishAsAzureSqlDatabase
garantit que les outils tels que le Azure Developer CLI ou Visual Studio créent une ressource Azure SQL Database pendant le processus de déploiement.
Déployer l’application
Les outils tels que le Azure Developer CLI (azd
) prennent en charge les configurations d’intégration .NET AspireSQL Server pour simplifier les déploiements.
azd
consomme ces paramètres et approvisionne les ressources correctement configurées pour vous.
Initialiser le modèle
Ouvrez une nouvelle fenêtre de terminal et
cd
dans le répertoire de votre solution de .NET.NET Aspire.Exécutez la commande
azd init
pour initialiser votre projet avecazd
, qui inspecte la structure de répertoires local et détermine le type d’application.azd init
Pour plus d’informations sur la commande
azd init
, consultez azd init.Sélectionnez Utiliser du code dans le répertoire actif lorsque
azd
vous invite à utiliser deux options d’initialisation d’application.? How do you want to initialize your app? [Use arrows to move, type to filter] > Use code in the current directory Select a template
Après avoir analysé le répertoire,
azd
vous invite à confirmer qu’il a trouvé le projet .NET.NET AspireAppHost correct. Sélectionnez l’option Confirmer et continuer à initialiser mon application.Detected services: .NET (Aspire) Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj azd will generate the files necessary to host your app on Azure using Azure Container Apps. ? Select an option [Use arrows to move, type to filter] > Confirm and continue initializing my app Cancel and exit
Entrez un nom d’environnement, utilisé pour nommer les ressources provisionnée dans Azure et gérer différents environnements tels que
dev
etprod
.Generating files to run your app on Azure: (✓) Done: Generating ./azure.yaml (✓) Done: Generating ./next-steps.md SUCCESS: Your app is ready for the cloud! You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
azd
génère un certain nombre de fichiers et les place dans le répertoire de travail. Ces fichiers sont les suivants :
- azure.yaml: décrit les services de l’application, tels que .NET Aspire projet AppHost, et les mappe aux ressources Azure.
-
.azure/config.json: fichier de configuration qui informe
azd
quel est l'environnement actif en cours. - .azure/aspireazddev/.env: contient des remplacements spécifiques à l’environnement.
Déployer le modèle
Une fois qu’un modèle
est initialisé, le processus d’approvisionnement et de déploiement peut être exécuté en tant que commande unique à partir du répertoire de projet AppHost à l’aide de azd up :azd up
Sélectionnez l’abonnement sur lequel vous souhaitez effectuer le déploiement dans la liste des options disponibles :
Select an Azure Subscription to use: [Use arrows to move, type to filter] 1. SampleSubscription01 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx) 2. SamepleSubscription02 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
Sélectionnez l’emplacement Azure souhaité parmi la liste des options disponibles :
Select an Azure location to use: [Use arrows to move, type to filter] 42. (US) Central US (centralus) 43. (US) East US (eastus) > 44. (US) East US 2 (eastus2) 46. (US) North Central US (northcentralus) 47. (US) South Central US (southcentralus)
Après avoir effectué vos sélections, azd
exécute le processus d’approvisionnement et de déploiement.
By default, a service can only be reached from inside the Azure Container Apps environment it is running in. Selecting a service here will also allow it to be reached from the Internet.
? Select which services to expose to the Internet webfrontend
? Select an Azure Subscription to use: 1. <YOUR SUBSCRIPTION>
? Select an Azure location to use: 1. <YOUR LOCATION>
Packaging services (azd package)
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.
Subscription: <YOUR SUBSCRIPTION>
Location: <YOUR LOCATION>
You can view detailed progress in the Azure Portal:
<LINK TO DEPLOYMENT>
(✓) Done: Resource group: <YOUR RESOURCE GROUP>
(✓) Done: Container Registry: <ID>
(✓) Done: Log Analytics workspace: <ID>
(✓) Done: Container Apps Environment: <ID>
SUCCESS: Your application was provisioned in Azure in 1 minute 13 seconds.
You can view the resources created under the resource group <YOUR RESOURCE GROUP> in Azure Portal:
<LINK TO RESOURCE GROUP OVERVIEW>
Deploying services (azd deploy)
(✓) Done: Deploying service apiservice
- Endpoint: <YOUR UNIQUE apiservice APP>.azurecontainerapps.io/
(✓) Done: Deploying service webfrontend
- Endpoint: <YOUR UNIQUE webfrontend APP>.azurecontainerapps.io/
Aspire Dashboard: <LINK TO DEPLOYED .NET ASPIRE DASHBOARD>
SUCCESS: Your up workflow to provision and deploy to Azure completed in 3 minutes 50 seconds.
La commande azd up
agit comme wrapper pour les commandes azd
individuelles suivantes pour approvisionner et déployer vos ressources en une seule étape :
-
azd package
: les projets d’application et leurs dépendances sont empaquetés dans des conteneurs. -
azd provision
: les ressources Azure dont l’application a besoin sont approvisionnées. -
azd deploy
: les projets sont envoyés en tant que conteneurs dans une instance Azure Container Registry, puis utilisés pour créer de nouvelles révisions de Azure Container Apps dans lesquelles le code sera hébergé.
Une fois les étapes de azd up
terminées, votre application sera disponible sur Azure, et vous pouvez ouvrir le portail Azure pour explorer les ressources.
azd
génère également des URL pour accéder directement aux applications déployées.
Le processus de déploiement a provisionné une ressource de base de données SQL Azure en raison de la configuration .AppHost que vous avez fournie.
Nettoyer les ressources
Exécutez la commande CLI Azure suivante pour supprimer le groupe de ressources lorsque vous n’avez plus besoin des ressources Azure que vous avez créées. La suppression du groupe de ressources supprime également les ressources contenues à l’intérieur de celui-ci.
az group delete --name <your-resource-group-name>
Pour plus d’informations, consultez Nettoyer les ressources dans Azure.