다음을 통해 공유


자습서: 기존 .NET 앱에 .NET Aspire 추가

기존 마이크로 서비스 및 .NET 웹앱이 있는 경우 .NET Aspire 추가하고 포함된 모든 기능과 이점을 얻을 수 있습니다. 이 기사에서는 .NET Aspire 오케스트레이션을 간단하고 기존의 .NET 9 프로젝트에 추가하는 법을 설명합니다. 다음 방법을 알아봅니다.

  • 기존 마이크로 서비스 앱의 구조를 이해합니다.
  • .NET .NET Aspire 오케스트레이션에 기존 프로젝트를 등록합니다.
  • 프로젝트의 등록 변경 사항을 이해한다.
  • .NET .NET Aspire 프로젝트를 시작합니다.

필수 구성 요소

.NET .NET Aspire작업하려면 다음을 로컬에 설치해야 합니다.

자세한 내용은 .NET.NET Aspire 설정 및 도구.NET.NET Aspire SDK참조하세요.

시작

먼저 솔루션에 대한 코드를 가져와 보겠습니다.

  1. 명령 프롬프트를 열고 코드를 저장할 위치로 디렉터리를 변경합니다.

  2. .NET 9 예제 솔루션에 복제하려면 다음 git clone 명령을 사용합니다.

    git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
    

샘플 앱 살펴보기

이 문서에서는 세 개의 프로젝트와 함께 .NET 9 솔루션을 사용합니다.

  • 데이터 엔터티: 이 프로젝트는 예제 클래스 라이브러리입니다. Web App 및 Web API에서 사용되는 Product 클래스를 정의합니다.
  • 제품: 이 예제 Web API는 카탈로그의 제품 목록과 해당 속성을 반환합니다.
  • 스토어: 웹앱이 웹 사이트 방문자에게 제품 카탈로그를 표시하는 Blazor 예제입니다.

프로젝트를 열고 디버깅을 시작하여 기본 동작을 검사합니다.

  1. Visual Studio 시작한 다음 파일>>프로젝트/솔루션엽니다.

  2. 복제한 솔루션의 상위 폴더로 이동한 후, eShopLite.sln를 선택하고 열기를 선택합니다.

  3. 솔루션 탐색기eShopLite 솔루션을 마우스 오른쪽 단추로 클릭한 다음 시작 프로젝트구성 선택합니다.

  4. 여러 시작 작업 선택하십시오.

  5. 작업 열에서 제품스토어 프로젝트 모두에 대해 시작을(를) 선택합니다.

  6. 확인선택합니다.

  7. 솔루션 디버깅을 시작하려면 F5 누르거나 시작선택합니다.

  8. 브라우저에서 두 페이지가 열립니다.

    • 페이지에는 Products Web API 호출을 통해 JSON 형식으로 된 제품이 표시됩니다.
    • 페이지에는 웹 사이트의 홈페이지가 표시됩니다. 왼쪽 메뉴에서 제품 선택하여 Web API에서 가져온 카탈로그를 확인합니다.
  9. 디버깅을 중지하려면 브라우저를 닫습니다.

  1. Visual Studio Code을 시작하고 복제한 폴더를 엽니다. 리포지토리를 복제한 터미널에서 다음 명령을 실행합니다.

    code .
    
  2. 실행 및 디버그 메뉴 항목을 선택하거나 Ctrl+Shift+D키를 누릅니다.

  3. 출시에 필요한 링크를 생성하려면 을 선택합니다. 파일json 링크.

    Visual Studio Code: 실행 및 디버그 시작.json 파일.

  4. 다음 복사하여 이 파일에 붙여넣고 저장.

    {
        "version": "0.2.0",
        "compounds": [
            {
                "name": "Run all",
                "configurations": [
                    "Run products",
                    "Run store",
                ]
            }
        ],
        "configurations": [
            {
                "name": "Run products",
                "type": "dotnet",
                "request": "launch",
                "projectPath": "${workspaceFolder}/Products/Products.csproj"
            },
            {
                "name": "Run store",
                "type": "dotnet",
                "request": "launch",
                "projectPath": "${workspaceFolder}/Store/Store.csproj"
            }
        ]
    }
    
  5. 솔루션 디버깅을 시작하려면 F5 누르거나 시작선택합니다.

  6. 브라우저에서 두 페이지가 열립니다.

    • 페이지에는 Products Web API를 호출하여 JSON 형태로 제품이 표시됩니다.
    • 페이지에는 웹 사이트의 홈페이지가 표시됩니다. 왼쪽 메뉴에서 제품 선택하여 Web API에서 가져온 카탈로그를 확인합니다.
  7. 디버깅을 중지하려면 브라우저를 닫은 다음 중지 단추를 두 번 선택합니다(실행 중인 디버그 인스턴스마다 한 번).


  1. 터미널 창을 열고 디렉터리를 새로 복제된 리포지토리로 변경합니다.

  2. Products 앱을 시작하려면 다음 명령을 실행합니다.

    dotnet run --project ./Products/Products.csproj
    
  3. 제품의 JSON을 표시하는 브라우저 페이지가 열립니다.

  4. 별도의 터미널 창에서 디렉터리를 복제된 리포지토리로 다시 변경합니다.

  5. 다음 명령을 실행하여 Store 앱을 시작합니다.

    dotnet run --project ./Store/Store.csproj
    
  6. 브라우저에서 웹 사이트의 홈페이지를 표시하는 페이지를 엽니다. 왼쪽 메뉴에서 제품 선택하여 Web API에서 가져온 카탈로그를 확인합니다.

  7. 디버깅을 중지하려면 브라우저를 닫고 두 터미널에서 Ctrl+C 누릅니다.

스토어 웹앱에 .NET.NET Aspire 추가

이제 웹 사용자 인터페이스를 구현하는 Store 프로젝트를 .NET.NET Aspire 오케스트레이션에 등록해 보겠습니다.

  1. Visual Studio 솔루션 탐색기에서 스토어 프로젝트를 우클릭한 후, 추가를 선택하고, 그리고 .NET.NET Aspire Orchestrator 지원을 선택합니다.

  2. .NET .NET Aspire Orchestrator 지원 대화 상자에서 확인선택합니다.

    .NET.NET Aspire Orchestrator 지원 추가 대화 상자의 스크린샷

이제 솔루션에 두 개의 새 프로젝트가 추가되었습니다.

  • eShopLite.AppHost: 앱의 다양한 프로젝트와 서비스를 연결하고 구성하도록 설계된 오케스트레이터 프로젝트입니다. 오케스트레이터는 시작 프로젝트로 설정되며, eShopLite.Store 프로젝트에 의존합니다.
  • eShopLite.ServiceDefaults: 복원력, 서비스 검색원격 분석관련된 솔루션의 프로젝트에서 다시 사용하는 구성을 관리하는 공유 프로젝트입니다.

eShopLite.AppHost 프로젝트에서 Program.cs 파일을 엽니다. .NET .NET Aspire 오케스트레이션에 Store 프로젝트를 등록하는 이 코드 줄을 확인합니다.

builder.AddProject<Projects.Store>("store");

자세한 내용은 AddProject참조하세요.

Products 프로젝트를 .NET.NET Aspire추가하려면 다음을 수행합니다.

  1. Visual Studio 솔루션 탐색기에서 제품 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 선택한 다음, .NET.NET Aspire Orchestrator 지원을 선택합니다.

  2. .NET .NET Aspire Orchestrator 프로젝트가 이미 있음을 나타내는 대화 상자에서 확인선택합니다.

    .NET .NET Aspire Orchestrator가 이미 추가되었음을 나타내는 스크린샷

eShopLite.AppHost 프로젝트에서 Program.cs 파일을 엽니다. .NET .NET Aspire 오케스트레이션에서 Products 프로젝트를 등록하는 이 코드 줄을 확인합니다.

builder.AddProject<Projects.Products>("products");

또한 eShopLite.AppHost 프로젝트는 이제 Store 프로젝트와 Products 프로젝트에 의존하게 되었습니다.

앱 호스트 프로젝트 만들기

기존 프로젝트를 오케스트레이션하려면 새 앱 호스트 프로젝트를 만들어야 합니다. 사용 가능한 .NET Aspire 템플릿에서 새 앱 호스트 프로젝트 만들려면 다음 .NET CLI 명령을 사용합니다.

dotnet new aspire-apphost -o eShopLite.AppHost

앱 호스트 프로젝트를 기존 솔루션에 추가합니다.

dotnet sln ./eShopLite.sln add ./eShopLite.AppHost/eShopLite.AppHost.csproj

다음 .NET CLI 명령을 사용하여 스토어 프로젝트를 앱 호스트 프로젝트에 대한 프로젝트 참조로 추가합니다.

dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Store/Store.csproj

서비스 기본 프로젝트 만들기

앱 호스트 프로젝트를 만든 후 새 서비스 기본값 프로젝트를 만들어야 합니다. 새 서비스를 만들려면 사용 가능한 템플릿에서 프로젝트 기본적으로 다음 CLI 명령을 사용합니다.

dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults

솔루션에 프로젝트를 추가하려면 다음 .NET CLI 명령을 사용합니다.

dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

앱 호스트 프로젝트를 업데이트하여 Products 프로젝트에 프로젝트 참조를 추가합니다.

dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Products/Products.csproj

스토어제품 프로젝트는 모두 서비스 기본 프로젝트를 참조하여 서비스 검색을 쉽게 포함할 수 있도록 해야 합니다. Store 프로젝트에서 서비스 기본값이 있는 프로젝트에 참조를 추가하려면 다음 .NET CLI 명령을 사용합니다.

dotnet add ./Store/Store.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

경로가 약간 다른 동일한 명령을 사용하여 Products 프로젝트의 서비스 기본 프로젝트에 대한 참조를 추가해야 합니다.

dotnet add ./Products/Products.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

Store상품 프로젝트에서 Program.cs 파일을 업데이트하고 var builder = WebApplication.CreateBuilder(args); 줄 바로 다음에 다음 줄을 추가합니다.

builder.AddServiceDefaults();

앱 호스트 프로젝트 업데이트

앱 호스트 프로젝트의 Program.cs 파일을 열고 해당 내용을 다음 C# 코드로 바꿉니다.

var builder = DistributedApplication.CreateBuilder(args);

builder.AddProject<Projects.Store>("store");

builder.AddProject<Projects.Products>("products");

builder.Build().Run();

앞의 코드는 다음과 같습니다.

  • DistributedApplicationBuilder 인스턴스를 만듭니다.
  • 오케스트레이터에 Store 프로젝트를 추가합니다.
  • Products 프로젝트를 오케스트레이터에 추가합니다.
  • 오케스트레이터를 빌드하고 실행합니다.

서비스 검색

이 시점에서 두 프로젝트는 모두 .NET.NET Aspire 오케스트레이션의 일부이지만, Store.NET.NET Aspire의 서비스 검색를 통해 Products 백엔드 주소를 검색할 수 있어야 합니다. 서비스 검색을 활성화하려면 eShopLite.AppHostProgram.cs 파일을 열어 StoreProducts 프로젝트에 대한 참조를 추가하도록 코드를 업데이트하십시오.

var builder = DistributedApplication.CreateBuilder(args);

var products = builder.AddProject<Projects.Products>("products");

builder.AddProject<Projects.Store>("store")
       .WithExternalHttpEndpoints()
       .WithReference(products);

builder.Build().Run();

앞의 코드는 Store 프로젝트가 Products 프로젝트에 종속되어 있음을 표시합니다. 자세한 내용은 .NET.NET Aspire 앱 호스트:참조 리소스를 참조하세요. 이 참조는 Products 프로젝트의 주소를 검색하는 데 사용됩니다. 또한 Store 프로젝트는 외부 HTTP 엔드포인트를 사용하도록 구성됩니다. 나중에 이 앱을 배포하도록 선택하는 경우 외부 세계에 공개되도록 WithExternalHttpEndpoints 호출이 필요합니다.

다음으로, Store 프로젝트에서 appsettings.json을 다음 JSON으로 업데이트합니다.

{
  "DetailedErrors": true,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ProductEndpoint": "http://products",
  "ProductEndpointHttps": "https://products"
}

두 엔드포인트의 주소는 이제 앱 호스트오케스트레이터에 추가된 "제품" 이름을 사용합니다. 이러한 이름은 Products 프로젝트의 주소를 검색하는 데 사용됩니다.

등록된 앱 탐색

솔루션을 시작하고 .NET.NET Aspire 제공하는 새 동작을 살펴보겠습니다.

메모

eShopLite.AppHost 프로젝트는 새 시작 프로젝트입니다.

  1. Visual Studio디버깅을 시작하려면 F5 키를 누릅니다.프로젝트 빌드는Visual Studio에서 수행됩니다.
  2. 시작 Docker 바탕 화면 대화 상자가 나타나면 선택합니다. Visual Studio Docker 엔진을 시작하고 필요한 컨테이너를 만듭니다. 배포가 완료되면 .NET.NET Aspire 대시보드가 표시됩니다.
  3. 대시보드에서 제품 프로젝트의 엔드포인트를 선택합니다. 새 브라우저 탭이 나타나고 제품 카탈로그가 JSON 형식으로 표시됩니다.
  4. 대시보드에서 저장소 프로젝트의 엔드포인트를 선택합니다. 새 브라우저 탭이 나타나고 웹앱의 홈페이지가 표시됩니다.
  5. 왼쪽 메뉴에서 제품 선택합니다. 제품 카탈로그가 표시됩니다.
  6. 디버깅을 중지하려면 브라우저를 닫습니다.

시작을 삭제합니다. 이전에 만든json 파일은 더 이상 용도로 사용할 수 없습니다. 대신 다른 프로젝트를 오케스트레이션하는 앱 호스트 프로젝트를 시작합니다.

  1. 솔루션 탐색기eShopLite.AppHost 프로젝트를 마우스 오른쪽 단추로 클릭하고 디버그>새 인스턴스 시작선택하여 앱 호스트 프로젝트를 시작합니다.

    Visual Studio Code: 솔루션 탐색기에서 디버그를 선택하고 새 인스턴스 시작 >.

    메모

    Docker Desktop(또는 Podman)이 실행되고 있지 않으면 오류가 발생합니다. OCI 규격 컨테이너 엔진을 시작하고 다시 시도합니다.

  1. 다음 명령을 실행하여 앱 호스트 프로젝트를 시작합니다.

    dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
    

    메모

    Docker Desktop(또는 Podman)이 실행되고 있지 않으면 오류가 발생합니다. OCI 규격 컨테이너 엔진을 시작하고 다시 시도합니다.

  1. 대시보드에서 제품 프로젝트의 엔드포인트를 선택합니다. 새 브라우저 탭이 나타나고 제품 카탈로그가 JSON 형식으로 표시됩니다.
  2. 대시보드에서 저장소 프로젝트의 엔드포인트를 선택합니다. 새 브라우저 탭이 나타나고 웹앱의 홈페이지가 표시됩니다.
  3. 왼쪽 메뉴에서 제품선택합니다. 제품 카탈로그가 표시됩니다.
  4. 디버깅을 중지하려면 브라우저를 닫습니다.

축하합니다. 기존 웹 애플리케이션에 .NET.NET Aspire 오케스트레이션을 추가했습니다. 이제 .NET Aspire 통합을 추가하고 .NET Aspire 도구를 사용하여 클라우드 네이티브 웹앱 개발을 간소화할 수 있습니다.