.NET Aspire inclut des fonctionnalités permettant de configurer la découverte de services au moment du développement et des tests. La fonctionnalité de découverte de services fonctionne en fournissant une configuration au format attendu par le résolveur de point de terminaison basé sur la configuration du projet .NET Aspire AppHost aux projets de service individuels ajoutés au modèle d'application.
Actuellement, MyWeatherHub
utilise une configuration statique pour se connecter à Api
. Ce n’est pas idéal pour plusieurs raisons, notamment :
- Le numéro de port du service
Api
peut changer. - L'adresse IP du service
Api
peut changer. - Plusieurs paramètres de configuration devront être définis pour les paramètres http et https.
- À mesure que nous ajoutons plus de services, la configuration deviendrait plus complexe.
Pour résoudre ces problèmes, nous utiliserons la fonctionnalité de découverte de services fournie par le projet .NET Aspire AppHost. Cela permettra au service MyWeatherHub
de découvrir le service Api
au moment de l'exécution.
- Ouvrez le fichier
Program.cs
dans le projetAppHost
. - Auparavant, nous avons ajouté l'orchestration pour inclure plusieurs projets en utilisant la méthode
builder.AddProject
. Cela a renvoyé unIResourceBuild
qui peut être utilisé pour référencer des projets. Référençons le projetApi
dans le projetMyWeatherHub
en mettant à jour le code :
var api = builder.AddProject<Projects.Api>("api");
var web = builder.AddProject<Projects.MyWeatherHub>("myweatherhub")
.AvecRéférence(api)
.WithExternalHttpEndpoints();
- La méthode
WithReference
est utilisée pour référencer le projetApi
. Cela permettra au projetMyWeatherHub
de découvrir le projetApi
au moment de l'exécution. - Si vous choisissez ultérieurement de déployer cette application, vous aurez besoin de l'appel à
WithExternalHttpEndpoints
pour vous assurer qu'elle est publique pour le monde extérieur.
Lorsque nous avons ajouté ServiceDefaults
aux projets, nous les avons automatiquement inscrits dans le système de découverte de services. Cela signifie que le projet MyWeatherHub
est déjà configuré pour utiliser la découverte de services.
Certains services exposent plusieurs points de terminaison nommés. Les points de terminaison nommés peuvent être résolus en spécifiant le nom du point de terminaison dans la partie hôte de l'URI de la requête HTTP, en suivant le format scheme://_endpointName.serviceName
. Par exemple, si un service nommé basket
expose un point de terminaison nommé dashboard
, alors l'URI scheme+http://_dashboard.basket
peut être utilisé pour spécifier ce point de terminaison, par exemple :
builder.Services.AddHttpClient<BasketServiceClient>(
client statique => client.BaseAddress = new("https+http://basket"));
builder.Services.AddHttpClient<BasketServiceDashboardClient>(
client statique => client.BaseAddress = new("https+http://_dashboard.basket"));
Dans l'exemple ci-dessus, BasketServiceClient
utilisera le point de terminaison par défaut du service basket
, tandis que BasketServiceDashboardClient
utilisera le point de terminaison dashboard
du service basket
. Maintenant, mettons à jour le projet MyWeatherHub
pour utiliser la découverte de services pour nous connecter au service Api
.
Cela peut être accompli en mettant à jour les paramètres de configuration WeatherEndpoint
existants dans appsettings.json
. Ceci est pratique lorsque vous activez .NET Aspire dans une application déployée existante, car vous pouvez continuer à utiliser vos paramètres de configuration existants.
-
Ouvrez le fichier
appsettings.json
dans le projetMyWeatherHub
. -
Modifiez les paramètres de configuration
WeatherEndpoint
pour utiliser la découverte de services :
"WeatherEndpoint": "https+http://api"
- Le paramètre de configuration
WeatherEndpoint
utilise désormais la découverte de services pour se connecter au serviceApi
.
En option, nous pouvons mettre à jour l'URL pour ne pas utiliser les paramètres de configuration WeatherEndpoint
.
- Ouvrez le fichier
Program.cs
dans le projetMyWeatherHub
. - Mettez à jour les paramètres de configuration
WeatherEndpoint
pour utiliser la découverte de services :
builder.Services.AddHttpClient<NwsManager>(
client statique => client.BaseAddress = new("https+http://api"));
- Exécutez l'application en appuyant sur
F5
ou en sélectionnant l'optionStart Debugging
. - Ouvrez
MyWeatheApp
en sélectionnant le point de terminaison dans le tableau de bord. - Notez que l'application
MyWeatherHub
fonctionne toujours et utilise désormais la découverte de services pour se connecter au serviceApi
. - Dans le tableau de bord, cliquez sur
Details
pour le projetMyWeatherHub
. Cela fera apparaître tous les paramètres configurés par .NET Aspire lors de l'exécution de l'application à partir de l'hôte de l'application. - Cliquez sur l'icône en forme d'œil pour révéler les valeurs et faites défiler vers le bas où vous verrez
services__api_http_0
etservices__api_https_0
configurés avec les valeurs correctes du serviceApi
.
Ce n'était que le début de ce que nous pouvons faire avec la découverte de services et .NET Aspire. À mesure que notre application se développe et que nous ajoutons davantage de services, nous pouvons continuer à utiliser la découverte de services pour connecter les services au moment de l'exécution. Cela nous permettra de faciliter