Udostępnij za pośrednictwem


odnajdywanie usługi .NET.NET Aspire

Z tego artykułu dowiesz się, jak działa odnajdywanie usług w projekcie .NET.NET Aspire. .NET .NET Aspire obejmuje funkcje konfigurowania odnajdywania usług w czasie programowania i testowania. Funkcja odnajdywania usług działa przez zapewnienie konfiguracji w formacie oczekiwanym przez program rozpoznawania punktów końcowych opartych na konfiguracji z projektu .NET.NET Aspire AppHost do poszczególnych projektów usług dodanych do modelu aplikacji. Aby uzyskać więcej informacji, zobacz Odkrywanie usług w .NET.

Niejawne odnajdywanie usług przez referencję

Konfiguracja odnajdywania usług jest dodawana tylko dla usług, do których odwołuje się dany projekt. Rozważmy na przykład następujący program AppHost:

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);

W poprzednim przykładzie projekt frontendowy odnosi się do projektu katalogu oraz projektu koszyka . Dwa wywołania WithReference instruują projekt .NET.NET Aspire, aby przekazać informacje o wykrywaniu usług dla przywoływanych projektów (katalogoraz koszyk ) do projektu frontend.

Oznaczone punkty końcowe

Niektóre usługi uwidaczniają wiele nazwanych punktów końcowych. Nazwane punkty końcowe można rozpoznać, określając nazwę punktu końcowego w części hosta identyfikatora URI żądania HTTP, postępując zgodnie z formatem scheme://_endpointName.serviceName. Jeśli na przykład usługa o nazwie "koszyk" uwidacznia punkt końcowy o nazwie "dashboard", identyfikator URI scheme+http://_dashboard.basket może służyć do określenia tego punktu końcowego, na przykład:

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"));

W poprzednim przykładzie dodano dwie klasy HttpClient, jedną dla podstawowej usługi koszyka i jedną dla pulpitu nawigacyjnego usługi koszyka.

Punkty końcowe nazwane przy użyciu konfiguracji

Za pomocą programu rozpoznawania punktów końcowych opartych na konfiguracji nazwane punkty końcowe można określić w konfiguracji, prefiksując wartość punktu końcowego za pomocą _endpointName., gdzie endpointName jest nazwą punktu końcowego. Rozważmy na przykład tę konfigurację appsettings.json, która zdefiniowała domyślny punkt końcowy (bez nazwy) i punkt końcowy o nazwie "dashboard":

{
  "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 */
    }
  }
}

W poprzednim JSON:

  • Domyślnym punktem końcowym podczas rozpoznawania https://basket jest 10.2.3.4:8080.
  • Punkt końcowy "pulpitu nawigacyjnego" rozpoznawany za pośrednictwem https://_dashboard.basket jest 10.2.3.4:9999.

Nazwane punkty końcowe w .NET.NET Aspire

var basket = builder.AddProject<Projects.BasketService>("basket")
    .WithHttpsEndpoint(hostPort: 9999, name: "dashboard");

Nazwane punkty końcowe w Kubernetes przy użyciu DNS SRV

Podczas wdrażania w Kubernetesprogram rozpoznawania punktów końcowych usługi DNS SRV może służyć do rozpoznawania nazwanych punktów końcowych. Na przykład poniższa definicja zasobu spowoduje utworzenie rekordu SRV DNS dla punktu końcowego o nazwie "default" i punktu końcowego o nazwie "dashboard", zarówno w usłudze o nazwie "koszyk".

apiVersion: v1
kind: Service
metadata:
  name: basket
spec:
  selector:
    name: basket-service
  clusterIP: None
  ports:
  - name: default
    port: 8080
  - name: dashboard
    port: 9999

Aby skonfigurować usługę do rozpoznawania punktu końcowego "pulpitu nawigacyjnego" w usłudze "koszyka", dodaj program rozpoznawania punktów końcowych usługi DNS SRV do konstruktora hostów w następujący sposób:

builder.Services.AddServiceDiscoveryCore();
builder.Services.AddDnsSrvServiceEndpointProvider();

Aby uzyskać więcej informacji, zobacz AddServiceDiscoveryCore i AddDnsSrvServiceEndpointProvider.

Specjalna nazwa portu "default" służy do określania domyślnego punktu końcowego, rozpoznawana przy użyciu identyfikatora URI https://basket.

Podobnie jak w poprzednim przykładzie dodaj odnajdywanie usług do HttpClient dla usługi koszyka:

builder.Services.AddHttpClient<BasketServiceClient>(
    static client => client.BaseAddress = new("https://basket"));

Podobnie punkt końcowy "pulpitu nawigacyjnego" może być kierowany w następujący sposób:

builder.Services.AddHttpClient<BasketServiceDashboardClient>(
    static client => client.BaseAddress = new("https://_dashboard.basket"));

Zobacz też