.NET .NET Aspire zjišťování služby
V tomto článku se dozvíte, jak funguje zjišťování služeb v rámci projektu .NET.NET Aspire. .NET .NET Aspire zahrnuje funkce pro konfiguraci zjišťování služeb při vývoji a testování. Funkce zjišťování služeb funguje tím, že poskytuje konfiguraci ve formátu očekávaném překladačem koncových bodů založeným na konfiguraci z projektu .NET.NET Aspire AppHost do jednotlivých projektů služeb přidaných do aplikačního modelu. Další informace naleznete v tématu Zjišťování služby v .NET.
Implicitní zjišťování služeb podle odkazu
Konfigurace pro zjišťování služeb se přidá jenom pro služby, na které odkazuje daný projekt. Představte si například následující 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);
V předchozím příkladu odkazuje projekt front-endu na projekt katalogu a na projekt košíku . Dvě volání WithReference instruují projekt .NET.NET Aspire, aby předával informace o zjišťování služeb pro odkazované projekty (kataloga košík) do projektu frontend.
Pojmenované koncové body
Některé služby zpřístupňují více pojmenovaných koncových bodů. Pojmenované koncové body lze vyřešit zadáním názvu koncového bodu ve formátu scheme://_endpointName.serviceName
v hostitelské části identifikátoru URI požadavku HTTP. Pokud například služba s názvem "basket" zveřejňuje koncový bod s názvem "řídicí panel", můžete použít identifikátor URI scheme+http://_dashboard.basket
k určení tohoto koncového bodu, například:
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"));
V předchozím příkladu se přidají dvě třídy HttpClient, jednu pro službu základního košíku a jednu pro řídicí panel služby košíku.
Koncové body pojmenované prostřednictvím konfigurace
Pomocí překladače koncových bodů založených na konfiguraci je možné pojmenované koncové body zadat v konfiguraci předponou hodnoty koncového bodu _endpointName.
, kde endpointName
je název koncového bodu. Představte si například tuto konfiguraci appsettings.json, která definovala výchozí koncový bod (bez názvu) a koncový bod s názvem "řídicí panel":
{
"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 */
}
}
}
V předchozím JSON:
- Výchozí koncový bod při řešení
https://basket
je10.2.3.4:8080
. - Koncový bod řídicího panelu, vyřešený přes
https://_dashboard.basket
, je10.2.3.4:9999
.
Pojmenované koncové body v .NET.NET Aspire
var basket = builder.AddProject<Projects.BasketService>("basket")
.WithHttpsEndpoint(hostPort: 9999, name: "dashboard");
Pojmenované koncové body v Kubernetes pomocí DNS SRV
Při nasazování do Kuberneteslze použít resolver koncových bodů DNS SRV k řešení pojmenovaných koncových bodů. Například následující definice prostředku způsobí vytvoření záznamu DNS SRV pro koncový bod s názvem "default" a koncový bod s názvem "dashboard" ve službě s názvem "basket".
apiVersion: v1
kind: Service
metadata:
name: basket
spec:
selector:
name: basket-service
clusterIP: None
ports:
- name: default
port: 8080
- name: dashboard
port: 9999
Pokud chcete nakonfigurovat službu tak, aby vyřešil koncový bod "dashboard" ve službě "basket", přidejte do tvůrce služby překladač koncových bodů služby DNS SRV takto:
builder.Services.AddServiceDiscoveryCore();
builder.Services.AddDnsSrvServiceEndpointProvider();
Další informace najdete v tématu AddServiceDiscoveryCore a AddDnsSrvServiceEndpointProvider.
Speciální název portu "default" slouží k určení výchozího koncového bodu, který se překládá pomocí identifikátoru URI https://basket
.
Stejně jako v předchozím příkladu přidejte zjišťování služby do HttpClient
pro službu košíku:
builder.Services.AddHttpClient<BasketServiceClient>(
static client => client.BaseAddress = new("https://basket"));
Podobně můžete koncový bod řídicího panelu cílit takto:
builder.Services.AddHttpClient<BasketServiceDashboardClient>(
static client => client.BaseAddress = new("https://_dashboard.basket"));