.NET .NET Aspire 서비스 검색
이 문서에서는 .NET.NET Aspire 프로젝트 내에서 서비스 검색이 작동하는 방식을 알아봅니다.
.NET
.NET Aspire 개발 및 테스트 시 서비스 검색을 구성하는 기능을 포함합니다. 서비스 검색 기능은
참조별 암시적 서비스 검색
서비스 검색에 대한 구성은 지정된 프로젝트에서 참조하는 서비스에 대해서만 추가됩니다. 예를 들어 다음 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);
앞의 예제에서 프런트 엔드 프로젝트는 카탈로그 프로젝트 및 장바구니 프로젝트를 참조합니다. 두 WithReference 호출은 참조된 프로젝트(.NET및 .NET Aspire)에 대한 서비스 검색 정보를 프런트 엔드 프로젝트에 전달하도록 프로젝트에 지시합니다.
명명된 엔드포인트
일부 서비스는 명명된 여러 엔드포인트를 노출합니다. 명명된 엔드포인트는 scheme://_endpointName.serviceName
형식에 따라 HTTP 요청 URI의 호스트 부분에 엔드포인트 이름을 지정하여 확인할 수 있습니다. 예를 들어 "basket"이라는 서비스가 "대시보드"라는 엔드포인트를 노출하는 경우 URI https+http://_dashboard.basket
사용하여 이 엔드포인트를 지정할 수 있습니다. 예를 들면 다음과 같습니다.
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"));
앞의 예제에서는 코어 바스켓 서비스와 장바구니 서비스의 대시보드에 하나씩 두 개의 HttpClient 클래스가 추가되었습니다.
구성을 통해 명명된 엔드포인트
구성 기반 엔드포인트 확인자를 사용하면 엔드포인트 값 앞에 _endpointName.
접두사를 지정하여 구성에서 명명된 엔드포인트를 지정할 수 있습니다. 여기서 endpointName
엔드포인트 이름입니다. 예를 들어 기본 엔드포인트(이름 없음)와 "대시보드"라는 엔드포인트를 정의한 이 appsettings.json 구성을 고려합니다.
{
"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 */
}
}
}
이전의 JSON:
-
https://basket
확인할 때 기본 엔드포인트는10.2.3.4:8080
. -
https://_dashboard.basket
통해 확인된 "대시보드" 엔드포인트는10.2.3.4:9999
.
.NET .NET Aspire 명명된 엔드포인트
var basket = builder.AddProject<Projects.BasketService>("basket")
.WithHttpsEndpoint(hostPort: 9999, name: "dashboard");
Kubernetes의 명명된 엔드포인트를 DNS SRV를 사용하여 설정합니다.
Kubernetes에 배포할 때, DNS SRV 서비스 엔드포인트 해석기를 사용하여 명명된 엔드포인트를 확인할 수 있습니다. 예를 들어, 다음 리소스 정의는 "basket"이라는 서비스에 포함된 "default" 및 "dashboard"라는 엔드포인트에 대해 DNS SRV 레코드를 생성합니다.
apiVersion: v1
kind: Service
metadata:
name: basket
spec:
selector:
name: basket-service
clusterIP: None
ports:
- name: default
port: 8080
- name: dashboard
port: 9999
"basket" 서비스에서 "대시보드" 엔드포인트를 확인하도록 서비스를 구성하려면 다음과 같이 DNS SRV 서비스 엔드포인트 확인자를 호스트 작성기에 추가합니다.
builder.Services.AddServiceDiscoveryCore();
builder.Services.AddDnsSrvServiceEndpointProvider();
자세한 내용은 AddServiceDiscoveryCore 및 AddDnsSrvServiceEndpointProvider참조하세요.
특수 포트 이름 "default"는 URI https://basket
를 사용하여 해결되는 기본 엔드포인트를 지정하는 데 사용됩니다.
이전 예제와 마찬가지로, HttpClient
에 장바구니 서비스의 서비스 검색 기능을 추가합니다.
builder.Services.AddHttpClient<BasketServiceClient>(
static client => client.BaseAddress = new("https://basket"));
마찬가지로 다음과 같이 "대시보드" 엔드포인트를 대상으로 지정할 수 있습니다.
builder.Services.AddHttpClient<BasketServiceDashboardClient>(
static client => client.BaseAddress = new("https://_dashboard.basket"));
더 보기
에서 서비스 검색 - HttpClient 클래스 사용하여 HTTP 요청을 만듭니다.
- IHttpClientFactory .NET 사용하여
.NET Aspire