.NET Aspire fournit un ensemble de valeurs par défaut pour les services couramment utilisés dans les applications .NET. Ces valeurs par défaut sont conçues pour vous aider à démarrer rapidement et à offrir une expérience cohérente sur différents types d'applications. Ceci comprend:
- Télémétrie : métriques, traçage, journalisation
- Résilience
- Contrôles de santé
- Découverte des services
-
Ajoutez un nouveau projet à la solution appelé
ServiceDefaults
:- Faites un clic droit sur la solution et sélectionnez
Add
>New Project
. - Sélectionnez le modèle de projet
.NET Aspire Service Defaults
. - Nommé le projet
ServiceDefaults
. - Cliquez
Next
>Create
.
- Faites un clic droit sur la solution et sélectionnez
-
Créez un nouveau projet à l'aide de la commande
dotnet new aspire-servicedefaults
:dotnet new aspire-servicedefaults -n ServiceDefaults
-
Ajoutez une référence au projet
ServiceDefaults
dans les projetsApi
etMyWeatherHub
:- Faites un clic droit sur le projet
Api
et sélectionnezAdd
>Reference
.- Vérifiez le projet
ServiceDefaults
et cliquez surOK
.
- Vérifiez le projet
- Faites un clic droit sur le projet
MyWeatherHub
et sélectionnezAdd
>Reference
.- Vérifiez le projet
ServiceDefaults
et cliquez surOK
.
- Vérifiez le projet
Conseil de pro: dans Visual Studio 2022, vous pouvez faire glisser et déposer le projet sur un autre projet pour ajouter une référence.
- Faites un clic droit sur le projet
-
Dans les projets
Api
etMyWeatherHub
, modifiez leurs fichiersProgram.cs
, en ajoutant la ligne suivante immédiatement après leur lignevar builder = WebApplication.CreateBuilder(args);
:builder.AddServiceDefaults();
-
Dans les projets
Api
etMyWeatherHub
, modifiez leurs fichiersProgram.cs
, en ajoutant la ligne suivante immédiatement après leur lignevar app = builder.Build();
:app.MapDefaultEndpoints();
- Exécutez l'application à l'aide d'une configuration de lancement multi-projets dans Visual Studio ou Visual Studio Code.
- Visual Studio : Faites un clic droit sur la solution
MyWeatherHub
et accédez aux propriétés. Sélectionnez « Api » et « MyWeatherHub » comme projets de démarrage, sélectionnez « OK ». - Visual Studio Code : exécutez les projets
Api
etMyWeatherHub
à l'aide du panneauExécuter et déboguer
. Nous avons fourni un fichier « launch.json » avec les configurations nécessaires pour exécuter les deux.
-
Test the application by navigating to the following URLs:
- https://localhost:7032/swagger/index.html - API
- https://localhost:7274/ - MyWeatherHub
-
You should see the Swagger UI for the API and the MyWeatherHub home page.
-
You can also view the health checks for the API by navigating to https://localhost:7032/health.
-
You can also view the health checks for the MyWeatherHub by navigating to https://localhost:7274/health.
-
View the logs in the terminal to see the health checks and other telemetry data such as resiliency with Polly:
-
Vous devriez voir l'interface utilisateur Swagger pour l'API et la page d'accueil de MyWeatherHub.
-
Vous pouvez également afficher les Contrôles de santé de l'API en accédant à https://localhost:7032/health.
-
Vous pouvez également afficher les Contrôles de santé de MyWeatherHub en accédant à https://localhost:7274/health.
-
Consultez les journaux (logs) dans le terminal pour voir les contrôles de santé et d'autres données de télémétrie telles que la résilience avec Polly :
Polly: Information: Execution attempt. Source: '-standard//Standard-Retry', Operation Key: '', Result: '200', Handled: 'False', Attempt: '0', Execution Time: '13.0649'
-
Cliquez sur 5 villes différentes et une erreur "random" sera générée. Vous verrez la politique de nouvelle tentative de Polly en action.
Polly: Warning: Execution attempt. Source: '-standard//Standard-Retry', Operation Key: '', Result: '500', Handled: 'True', Attempt: '0', Execution Time: '9732.8258' Polly: Warning: Resilience event occurred. EventName: 'OnRetry', Source: '-standard//Standard-Retry', Operation Key: '', Result: '500' System.Net.Http.HttpClient.NwsManager.ClientHandler: Information: Sending HTTP request GET http://localhost:5271/forecast/AKZ318