Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. For more information, see Service discovery in .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 . The two WithReference calls instruct the .NET.NET Aspire project to pass service discovery information for the referenced projects (catalog, and basket) into the frontend project.
Oznaczone punkty końcowe
Niektóre usługi uwidaczniają wiele nazwanych punktów końcowych. Named endpoints can be resolved by specifying the endpoint name in the host portion of the HTTP request URI, following the format scheme://_endpointName.serviceName
. Jeśli na przykład usługa o nazwie "koszyk" uwidacznia punkt końcowy o nazwie "dashboard", identyfikator URI https+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.
Named endpoints using configuration
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 */
}
}
}
In the preceding JSON:
- Domyślnym punktem końcowym podczas rozpoznawania
https://basket
jest10.2.3.4:8080
. - The "dashboard" endpoint, resolved via
https://_dashboard.basket
is10.2.3.4:9999
.
Named endpoints in .NET.NET Aspire
var basket = builder.AddProject<Projects.BasketService>("basket")
.WithHttpsEndpoint(hostPort: 9999, name: "dashboard");
Named endpoints in Kubernetes using 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
To configure a service to resolve the "dashboard" endpoint on the "basket" service, add the DNS SRV service endpoint resolver to the host builder as follows:
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
.
As in the previous example, add service discovery to an HttpClient
for the basket service:
builder.Services.AddHttpClient<BasketServiceClient>(
static client => client.BaseAddress = new("https://basket"));
Similarly, the "dashboard" endpoint can be targeted as follows:
builder.Services.AddHttpClient<BasketServiceDashboardClient>(
static client => client.BaseAddress = new("https://_dashboard.basket"));