.NET Aspire은 특정 방향성이 있는, 클라우드에 대응 가능한 스택으로 관찰 가능하고, 프로덕션 환경에 대응하는 분산형 애플리케이션을 빌드하기 위한 것입니다. .NET을 기반으로 하며 웹 애플리케이션을 빌드하기 위한 최신의 빠르고 확장 가능한 플랫폼을 제공합니다.
.NET Aspire 애플리케이션에서 개발자 프록시를 사용하려면 DevProxy.Hosting NuGet 패키지를 사용합니다. 이 패키지는 .NET Aspire 애플리케이션에 개발자 프록시를 편리하게 통합할 수 있는 개발 프록시 .NET Aspire 확장을 제공합니다.
개발 프록시 .NET Aspire 확장 NuGet 패키지 설치
개발 프록시 .NET Aspire 확장 NuGet 패키지를 설치하려면 .NET Aspire 애플리케이션의 루트 폴더에서 다음 명령을 실행합니다.
dotnet add package DevProxy.Hosting
개발 프록시 .NET Aspire 확장 패키지를 사용하여 로컬로 설치된 실행 파일 또는 Docker 컨테이너에서 Dev Proxy를 통합할 수 있습니다.
로컬로 설치된 실행 파일에서 Dev Proxy 통합
개발자 프록시를 로컬로 설치한 경우 .NET Aspire 애플리케이션에 통합하는 가장 편리한 방법은 로컬 실행 파일을 참조하는 것입니다. 다음 코드 조각에서는 로컬로 설치된 실행 파일에서 Dev Proxy를 .NET Aspire 시작 애플리케이션과 통합하는 방법을 보여 있습니다.
중요합니다
로컬 실행 파일을 사용하도록 개발 프록시를 구성하는 경우 애플리케이션을 실행하는 모든 컴퓨터에서 실행 파일을 사용할 수 있는지 확인합니다. 컨테이너화된 환경에서 개발 프록시를 사용하려면 Docker 컨테이너를 대신 사용하는 것이 좋습니다.
using DevProxy.Hosting;
var builder = DistributedApplication
.CreateBuilder(args);
// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
.WithHttpsHealthCheck("/health");
var devProxy = builder.AddDevProxyExecutable("devproxy")
.WithConfigFile(".devproxy/config/devproxy.json")
.WithUrlsToWatch(() => [$"{apiService.GetEndpoint("https").Url}/*"]);
// Add a web frontend project and configure it to use Dev Proxy
builder.AddProject<Projects.AspireStarterApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpsHealthCheck("/health")
.WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
.WithReference(apiService)
.WaitFor(apiService)
.WaitFor(devProxy);
// Build and run the application
builder.Build().Run();
먼저 개발 프록시 .NET Aspire 확장을 사용하여 애플리케이션에 개발자 프록시 서비스를 추가합니다. 이 메서드는 AddDevProxyExecutable
개발 프록시 실행 파일의 이름을 지정합니다. 이 메서드를 WithConfigFile
사용하여 개발 프록시 구성 파일의 경로를 지정합니다. 이 메서드를 WithUrlsToWatch
사용하여 감시할 URL 목록을 지정합니다. 이 예제에서는 개발자 프록시가 웹앱이 API 서비스에 대해 만드는 요청을 가로채려고 합니다.
중요합니다
이 메서드는 WithUrlsToWatch
감시할 URL 목록을 반환하는 함수를 허용합니다. 개발자 프록시를 구성할 때 API 서비스 엔드포인트를 사용할 수 없으므로 URL을 직접 전달할 수 없기 때문입니다. 대신 사용할 수 있을 때 API 서비스의 URL을 반환하는 람다 식을 사용합니다.
다음으로, 웹앱에서 환경 변수를 HTTPS_PROXY
사용하여 개발 프록시를 사용하도록 웹앱을 구성합니다. 이 메서드를 WaitFor
사용하여 시작하기 전에 개발자 프록시를 사용할 수 있을 때까지 기다리도록 웹앱에 지시합니다.
Docker 컨테이너에서 Dev Proxy 통합
또는 Docker 컨테이너에서 .NET Aspire 애플리케이션에 Dev Proxy를 통합할 수 있습니다. .NET Aspire는 로컬에서 사용할 수 없는 경우 이미지를 자동으로 끌어오기 때문에 개발자 프록시 Docker 이미지를 사용하는 것이 편리합니다. 단점은 애플리케이션에서 개발자 프록시를 구성하는 몇 가지 단계가 더 있다는 것입니다.
다음 코드 조각에서는 Docker 컨테이너의 Dev Proxy를 .NET Aspire 스타터 애플리케이션과 통합하는 방법을 보여 있습니다.
using DevProxy.Hosting;
var builder = DistributedApplication
.CreateBuilder(args);
// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
.WithHttpsHealthCheck("/health");
// Add Dev Proxy as a container resource
var devProxy = builder.AddDevProxyContainer("devproxy")
// specify the Dev Proxy configuration file; relative to the config folder
.WithConfigFile("./devproxy.json")
// mount the local folder with PFX certificate for intercepting HTTPS traffic
.WithCertFolder(".devproxy/cert")
// mount the local folder with Dev Proxy configuration
.WithConfigFolder(".devproxy/config")
// let Dev Proxy intercept requests to the API service
.WithUrlsToWatch(() => [$"{apiService.GetEndpoint("https").Url}/*"]);
// Add a web frontend project and configure it to use Dev Proxy
builder.AddProject<Projects.AspireStarterApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpsHealthCheck("/health")
// set the HTTPS_PROXY environment variable to the Dev Proxy endpoint
.WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
.WithReference(apiService)
.WaitFor(apiService)
.WaitFor(devProxy);
// Build and run the application
builder.Build().Run();
기본 단계는 로컬로 설치된 실행 파일을 사용하는 경우와 동일합니다. 주요 차이점은 HTTPS 트래픽을 가로채기 위해 구성 파일 및 인증서를 지정하는 방법입니다.
Docker 컨테이너에서 개발 프록시를 통합하는 경우 로컬 폴더를 구성 파일 및 인증서와 함께 컨테이너에 탑재해야 합니다. 이 예제에서 .NET Aspire 솔루션에는 다음과 같은 폴더 구조가 있습니다.
AspireStarterApp
├── .devproxy
│ ├── cert
│ │ └── rootCert.pfx
│ └── config
│ └── devproxy.json
├── Projects
│ ├── AspireStarterApp_ApiService
│ └── AspireStarterApp_Web
└── AspireStarterApp.sln
폴더 cert
에는 개발자 프록시가 HTTPS 트래픽을 가로채는 데 사용하는 PFX(개인 정보 교환) 인증서가 포함되어 있습니다.
중요합니다
컴퓨터의 폴더에 있는 인증서를 cert
신뢰해야 합니다. 그렇지 않으면 API 서비스에 대한 요청이 실패합니다. 또한 개발자 프록시가 인증서를 로드하려면 PFX 형식이어야 하고 이름을 지정 rootCert.pfx
해야 하며 암호로 보호해서는 안 됩니다.
폴더 config
에는 개발 프록시 구성 파일 및 기타 개발 프록시 파일(예: 모의 또는 오류)이 포함됩니다.
인증서 및 구성 파일을 컨테이너의 개별 볼륨에 탑재하기 때문에 별도의 폴더에 저장해야 합니다.
.NET Aspire 시작 애플리케이션에서 개발 프록시 사용
애플리케이션을 시작한 후 개발자 프록시는 애플리케이션에 리소스로 표시됩니다.
웹 애플리케이션을 사용하여 API 서비스에 대한 요청을 만드는 경우 개발자 프록시는 구성에 따라 요청을 가로채고 처리합니다. .NET Aspire 대시보드의 콘솔 섹션에서 개발 프록시 출력을 볼 수 있습니다.
Dev Proxy