Eventos
17 de mar., 23 - 21 de mar., 23
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Neste artigo, você aprenderá como a descoberta de serviço funciona em um projeto de .NET.NET Aspire. .NET .NET Aspire inclui funcionalidade para configurar a descoberta de serviço durante o desenvolvimento e os testes. A funcionalidade de descoberta de serviço opera fornecendo configurações no formato esperado pelo resolvedor de ponto de extremidade baseado em configuração do projeto .NET.NET Aspire AppHost, para que sejam utilizadas pelos projetos de serviço individuais adicionados ao modelo de aplicação. Para obter mais informações, consulte descoberta de serviços em .NET.
A configuração para descoberta de serviço só é adicionada para serviços referenciados por um determinado projeto. Por exemplo, considere o seguinte programa 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);
No exemplo anterior, o projeto de front-end
Alguns serviços expõem vários endpoints com nome. Os pontos de extremidade nomeados podem ser resolvidos especificando o nome do ponto de extremidade na parte de host do URI de solicitação HTTP, seguindo o formato scheme://_endpointName.serviceName
. Por exemplo, se um serviço chamado "basket" expor um ponto de extremidade chamado "dashboard", o URI https+http://_dashboard.basket
poderá ser usado para especificar esse ponto de extremidade, por exemplo:
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"));
No exemplo anterior, duas classes HttpClient são adicionadas, uma para o serviço de cesta básica e outra para o painel do serviço de cesta.
Com o resolvedor de ponto de extremidade baseado em configuração, os pontos de extremidade nomeados podem ser especificados na configuração prefixando o valor do ponto de extremidade com _endpointName.
, em que endpointName
é o nome do ponto de extremidade. Por exemplo, considere essa configuração appsettings.json que definiu um ponto de extremidade padrão (sem nome) e um ponto de extremidade chamado "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 */
}
}
}
No JSONanterior:
https://basket
, o ponto de extremidade padrão é 10.2.3.4:8080
.https://_dashboard.basket
é 10.2.3.4:9999
.var basket = builder.AddProject<Projects.BasketService>("basket")
.WithHttpsEndpoint(hostPort: 9999, name: "dashboard");
Ao implantar em Kubernetes, pode-se usar o resolvedor de endpoint de serviço SRV do DNS para resolver endpoints nomeados. Por exemplo, a definição de recurso a seguir resultará na criação de um registro SRV de DNS para um ponto de extremidade chamado "padrão" e um ponto de extremidade chamado "dashboard", ambos no serviço chamado "basket".
apiVersion: v1
kind: Service
metadata:
name: basket
spec:
selector:
name: basket-service
clusterIP: None
ports:
- name: default
port: 8080
- name: dashboard
port: 9999
Para configurar um serviço para resolver o endpoint "dashboard" no serviço "cesta", adicione o resolvedor de endpoint de serviço DNS SRV ao construtor de host da seguinte maneira:
builder.Services.AddServiceDiscoveryCore();
builder.Services.AddDnsSrvServiceEndpointProvider();
Para obter mais informações, consulte AddServiceDiscoveryCore e AddDnsSrvServiceEndpointProvider.
O nome da porta especial "padrão" é usado para especificar o ponto de extremidade padrão, determinado usando o URI https://basket
.
Como no exemplo anterior, adicione a descoberta de serviços a um HttpClient
para o serviço de cesta:
builder.Services.AddHttpClient<BasketServiceClient>(
static client => client.BaseAddress = new("https://basket"));
Da mesma forma, o endpoint "dashboard" pode ser direcionado da seguinte forma:
builder.Services.AddHttpClient<BasketServiceDashboardClient>(
static client => client.BaseAddress = new("https://_dashboard.basket"));
Comentários do .NET Aspire
O .NET Aspire é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
17 de mar., 23 - 21 de mar., 23
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Roteiro de aprendizagem
Criar aplicativos distribuídos com o .NET Aspire - Training
Saiba como criar aplicativos observáveis, prontos para produção e distribuídos com o .NET Aspire.
Documentação
padrões do serviço .NET.NET Aspire - .NET Aspire
Saiba mais sobre o projeto padrão do serviço .NET.NET Aspire.
visão geral da orquestração .NET.NET Aspire - .NET Aspire
Conheça os conceitos fundamentais de .NET.NET Aspire orquestração e explore as várias APIs para adicionar recursos e expressar dependências.
checagens de saúde .NET.NET Aspire - .NET Aspire
Explorar verificações de saúde .NET.NET Aspire