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
jest10.2.3.4:8080
. - Punkt końcowy "pulpitu nawigacyjnego" rozpoznawany za pośrednictwem
https://_dashboard.basket
jest10.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"));