Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Dans cet article, vous allez découvrir comment fonctionne la découverte de service dans un projet .NET.NET Aspire. .NET .NET Aspire inclut des fonctionnalités de configuration de la découverte de service au moment du développement et du test. La fonction de découverte de services fonctionne en fournissant une configuration au format attendu par le résolveur d'endpoints basé sur la configuration du projet AppHost .NET.NET Aspire aux projets de service individuels intégrés au modèle applicatif. Pour plus d’informations, consultez la découverte de services dans .NET.
La configuration de la découverte de services est ajoutée uniquement pour les services référencés par un projet donné. Par exemple, considérez le programme AppHost suivant :
var builder = DistributedApplication.CreateBuilder(args);
var catalog = builder.AddProject<Projects.CatalogService>("catalog");
var basket = builder.AddProject<Projects.BasketService>("basket");
var frontend = builder.AddProject<Projects.MyFrontend>("frontend")
.WithReference(basket)
.WithReference(catalog);
Dans l’exemple précédent, le projet front-end référence le projet de catalogue et le projet de panier . Les deux appels WithReference indiquent au projet .NET.NET Aspire de transmettre les informations de découverte de service pour les projets référencés (catalogueet panier ) au projet de front-end.
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 requête HTTP, en suivant le format scheme://_endpointName.serviceName
. Par exemple, si un service nommé « panier » expose un point de terminaison nommé « tableau de bord », l’URI https+http://_dashboard.basket
peut être utilisé pour spécifier ce point de terminaison, par exemple :
builder.Services.AddHttpClient<BasketServiceClient>(
static client => client.BaseAddress = new("https+http://basket"));
builder.Services.AddHttpClient<BasketServiceDashboardClient>(
static client => client.BaseAddress = new("https+http://_dashboard.basket"));
Dans l’exemple précédent, deux classes HttpClient sont ajoutées, une pour le service panier principal et une pour le tableau de bord du service panier.
Avec le programme de résolution de point de terminaison basé sur la configuration, les points de terminaison nommés peuvent être spécifiés dans la configuration en préfixant la valeur de point de terminaison avec _endpointName.
, où endpointName
est le nom du point de terminaison. Par exemple, considérez cette configuration appsettings.json qui a défini un point de terminaison par défaut (sans nom) et un point de terminaison nommé « tableau de bord » :
{
"Services": {
"basket":
"https": "https://10.2.3.4:8080", /* the https endpoint, requested via https://basket */
"dashboard": "https://10.2.3.4:9999" /* the "dashboard" endpoint, requested via https://_dashboard.basket */
}
}
}
Dans la précédente JSON:
https://basket
est 10.2.3.4:8080
.https://_dashboard.basket
, est 10.2.3.4:9999
.var basket = builder.AddProject<Projects.BasketService>("basket")
.WithHttpsEndpoint(hostPort: 9999, name: "dashboard");
Lors du déploiement sur Kubernetes, le programme de résolution de point de terminaison de service DNS SRV peut être utilisé pour résoudre les points de terminaison nommés. Par exemple, la définition de ressource suivante entraîne la création d’un enregistrement SRV DNS pour un point de terminaison nommé « default » et un point de terminaison nommé « tableau de bord », tous deux sur le service nommé « panier ».
apiVersion: v1
kind: Service
metadata:
name: basket
spec:
selector:
name: basket-service
clusterIP: None
ports:
- name: default
port: 8080
- name: dashboard
port: 9999
Pour configurer un service pour résoudre l'endpoint « dashboard » sur le service « panier », ajoutez le résolveur d'endpoint de service DNS SRV au builder d'hôtes comme suit :
builder.Services.AddServiceDiscoveryCore();
builder.Services.AddDnsSrvServiceEndpointProvider();
Pour plus d’informations, consultez AddServiceDiscoveryCore et AddDnsSrvServiceEndpointProvider.
Le nom de port spécial « default » est utilisé pour spécifier le point de terminaison par défaut, résolu à l’aide de l’URI https://basket
.
Comme dans l’exemple précédent, ajoutez la découverte du service à un HttpClient
pour le service de panier :
builder.Services.AddHttpClient<BasketServiceClient>(
static client => client.BaseAddress = new("https://basket"));
De même, le point de terminaison « tableau de bord » peut être ciblé comme suit :
builder.Services.AddHttpClient<BasketServiceDashboardClient>(
static client => client.BaseAddress = new("https://_dashboard.basket"));
Commentaires sur .NET Aspire
.NET Aspire est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Parcours d’apprentissage
Créer des applications distribuées avec .NET Aspire - Training
Découvrez comment créer des applications observables, prêtes pour la production et distribuées avec .NET Aspire.