Megosztás a következőn keresztül:


.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.serviceNameformá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ásakor 10.2.3.4:8080.
  • A https://_dashboard.basket-on keresztül elért "irányítópult" végpont a 10.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://baskethaszná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"));

Lásd még: