.NET .NET Aspire szolgáltatásfelderítés
Ebből a cikkből megtudhatja, hogyan működik a szolgáltatásfelderítés egy .NET.NET Aspire projekten belül. .NET .NET Aspire a szolgáltatásfelderítés fejlesztési és tesztelési időpontban történő konfigurálására szolgáló funkciókat tartalmaz. A szolgáltatásfelderítési funkciók úgy működnek, hogy a konfigurációalapú végpontfeloldó által várt formátumban adja meg a konfigurációt, az .NET.NET Aspire AppHost-projekttől az alkalmazásmodellhez hozzáadott egyes szolgáltatásprojektekig. További információért lásd a(z) Szolgáltatásfelderítés .NET.
Implicit szolgáltatásfelderítés hivatkozás alapján
A szolgáltatásfelderítés konfigurációja csak az adott projekt által hivatkozott szolgáltatásokhoz lesz hozzáadva. Vegyük például a következő AppHost programot:
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);
Az előző példában a előtérbeli projekt a katalógusra projektre és a kosár projektre hivatkozik. A két WithReference hívás arra utasítja a .NET.NET Aspire projektet, hogy adja át a hivatkozott projektek szolgáltatásfelderítési adatait (katalógusés kosár) a előtérbeli projektbe.
Elnevezett végpontok
Egyes szolgáltatások több, elnevezett végpontot is elérhetővé tehetnek. Az elnevezett végpontok az HTTP-kérelem URI gazdagép részében a végpont nevének megadásával oldhatók fel, a scheme://_endpointName.serviceName
formátumot követve. Ha például egy "basket" nevű szolgáltatás egy "irányítópult" nevű végpontot tesz elérhetővé, akkor az URI https+http://_dashboard.basket
használható a végpont megadásához, például:
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"));
Az előző példában két HttpClient osztályt adunk hozzá, egyet az alapkosaras szolgáltatáshoz, egyet pedig a kosárszolgáltatás irányítópultjának.
Elnevezett végpontok konfigurációval
A konfigurációalapú végpont feloldójával a névvel ellátott végpontok a konfigurációban úgy adhatók meg, hogy a végpont értékét a _endpointName.
előtaggal látják el, ahol a endpointName
a végpont neve. Vegyük például ezt a appsettings.json konfigurációt, amely egy alapértelmezett végpontot (név nélkül) és egy "irányítópult" nevű végpontot definiált:
{
"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 */
}
}
}
Az előző JSON:
- Az alapértelmezett végpont a
https://basket
feloldásakor10.2.3.4:8080
. - A
https://_dashboard.basket
-on keresztül elért "irányítópult" végpont a10.2.3.4:9999
.
Elnevezett végpontok .NET.NET Aspire
var basket = builder.AddProject<Projects.BasketService>("basket")
.WithHttpsEndpoint(hostPort: 9999, name: "dashboard");
Elnevezett végpontok a Kubernetes-ban a DNS SRV használatával
A Kubernetesüzembe helyezésekor a DNS SRV szolgáltatás végpontfeloldója használható a névvel ellátott végpontok feloldásához. A következő erőforrásdefiníció például egy DNS SRV rekord létrehozását eredményezi egy "default" nevű végponthoz és egy "dashboard" nevű végponthoz, mindkettő a "basket" nevű szolgáltatásban.
apiVersion: v1
kind: Service
metadata:
name: basket
spec:
selector:
name: basket-service
clusterIP: None
ports:
- name: default
port: 8080
- name: dashboard
port: 9999
Ha úgy szeretne konfigurálni egy szolgáltatást, hogy feloldja a "dashboard" végpontot a "kosár" szolgáltatáson, adja hozzá a DNS SRV szolgáltatás végpont feloldót a hosztépítőhöz az alábbiak szerint:
builder.Services.AddServiceDiscoveryCore();
builder.Services.AddDnsSrvServiceEndpointProvider();
További információ: AddServiceDiscoveryCore és AddDnsSrvServiceEndpointProvider.
Az "alapértelmezett" speciális portnév az alapértelmezett végpont megadására szolgál, amely az URI https://basket
használatával oldható fel.
Az előző példához hasonlóan, adj hozzá szolgáltatásfelderítést egy HttpClient
-hoz a kosárszolgáltatáshoz.
builder.Services.AddHttpClient<BasketServiceClient>(
static client => client.BaseAddress = new("https://basket"));
Hasonlóképpen, az "irányítópult" végpont a következőképpen célozható meg:
builder.Services.AddHttpClient<BasketServiceDashboardClient>(
static client => client.BaseAddress = new("https://_dashboard.basket"));