.NET 앱 게시

완료됨

ASP.NET Core로 앱을 코딩하는 것은 HTML, CSS, JavaScript로 정적 웹 사이트를 설계하는 것과 다릅니다. 정적 웹 사이트는 정적 파일을 지원하는 모든 웹 서버에 배포될 수 있습니다. 웹 서버는 정적 파일을 처리할 필요가 없으며, 단순히 HTTP를 통해 정적 파일을 제공합니다. 웹 브라우저가 리소스를 요청하면, 웹 서버는 단순히 파일을 브라우저로 다시 보냅니다.

반면, ASP.NET Core 앱은 동적 웹 애플리케이션입니다. 이는 웹 서버에서 프로그램으로 실행됩니다. 사용자의 웹 브라우저가 웹 서버에 요청을 보내면 웹 서버는 앱을 실행하여 응답을 생성한 다음, 웹 서버는 응답을 브라우저로 다시 보냅니다.

.NET 앱을 게시하는 것은 앱을 서버에 배포할 수 있도록 준비하는 프로세스입니다. .NET 앱을 게시하면 앱과 해당 종속성을 쉽게 배포할 수 있는 폴더에 패키지할 수 있습니다. 게시된 앱에는 소스 코드 파일이 포함되어 있지 않지만 컴파일된 어셈블리(DLL), 구성 파일, 앱에 필요한 다른 자산 등 앱을 실행하는 데 필요한 모든 파일이 포함되어 있습니다. 그런 다음 앱을 웹 서버, 클라우드 서비스 또는 기타 호스팅 환경에 배포할 수 있습니다.

배포 유형

.NET 앱을 게시할 때는 프레임워크 종속형과 독립형이라는 두 가지 배포 형식 중에서 선택할 수 있습니다. 선택한 배포 형식은 앱이 패키지되고 배포되는 방식에 영향을 미칩니다.

프레임워크 종속 배포

프레임워크에 따라 배포되는 방식이 대상 컴퓨터에 .NET 런타임이 있는지 여부에 따라 달라지는 방식을 보여 주는 애니메이션입니다.

프레임워크 종속 배포에는 앱 파일과 종속성만 포함됩니다. .NET 런타임은 포함되지 않습니다. 대신, 앱을 실행하려면 대상 컴퓨터에 .NET 런타임이 설치되어 있어야 합니다. 이 형식의 배포는 .NET 앱의 기본 배포입니다.

자체 포함 배포

앱에 .NET 런타임을 포함하는 자체 포함 배포 방식을 보여 주는 애니메이션입니다.

독립형 배포에는 앱 파일, 종속성 및 .NET 런타임이 포함됩니다. .NET 런타임은 앱에 포함되어 있으므로 앱을 실행하기 위해 대상 컴퓨터에 .NET 런타임을 설치할 필요가 없습니다. 런타임을 포함하면 자체 포함 배포의 크기가 프레임워크에 의존하는 배포보다 커지지만, 이동성도 높아집니다. 또한 동일한 컴퓨터에서 여러 버전의 .NET 런타임을 나란히 실행하는 것이 더 쉬워집니다.

배포 유형 선택

선택하는 배포 유형은 앱 요구 사항과 대상 환경에 따라 달라집니다. 배포 유형을 선택할 때 다음 요소를 고려합니다.

배포 유형

장점

단점

프레임워크 종속

  • 더 작은 배포 크기
  • 더 빠른 배포 시간
  • 운영 체제에 관계없이 대상 컴퓨터에 설치된 .NET 런타임을 사용합니다.
  • 대상 컴퓨터에 .NET 런타임이 설치되어 있어야 합니다.
  • 대상 컴퓨터에 설치된 .NET 런타임 버전을 관리해야 합니다.

자체 포함

  • 대상 컴퓨터에 .NET 런타임을 설치할 필요가 없습니다.
  • 여러 버전의 .NET을 나란히 실행하는 것이 더 쉬워졌습니다.
  • 더 큰 배포 크기
  • 배포 시간이 더 느림
  • .NET 런타임 업데이트는 앱과 함께 배포되어야 함

앱을 배포할 위치

앱을 게시한 후에는 ASP.NET Core를 지원하는 모든 환경에 배포할 수 있습니다. 다음은 몇 가지 옵션입니다.

Kestrel

기본적으로 ASP.NET Core 앱은 ASP.NET Core의 기본 제공 웹 서버인 Kestrel에서 실행됩니다. Kestrel은 여러 플랫폼에서 사용 가능하며 고성능을 위해 조정되었습니다. HTTPS, HTTP/2, HTTP/3, 웹소켓을 포함한 모든 최신 웹 서버 기능을 지원합니다. 또한 사용자 지정 및 확장이 가능하므로 앱의 필요에 맞게 구성할 수 있습니다. Kestrel은 ASP.NET Core 앱에 권장되는 웹 서버입니다.

Kestrel은 ASP.NET Core에 기본 제공되어 있으므로 Windows, macOS, Linux 등 .NET을 실행할 수 있는 모든 컴퓨터에 앱을 배포할 수 있습니다. Kestrel 자체는 잘 작동하지만, Kestrel에서 실행되는 앱은 종종 IIS(인터넷 정보 서비스), Nginx, Apache와 같은 역방향 프록시 서버 뒤에 배포됩니다. 역방향 프록시 서버는 인터넷에서 수신 요청을 처리하여 Kestrel로 전달합니다. 이를 통해 부하 분산, 캐싱, SSL 종료와 같은 역방향 프록시 서버의 기능을 활용할 수 있습니다.

IIS(인터넷 정보 서비스)

Windows에 배포하는 경우 IIS에서 ASP.NET Core 앱을 호스팅할 수 있습니다. 이렇게 하려면 IIS용 ASP.NET Core 모듈을 설치해야 합니다. 모듈은 IIS의 요청을 앱을 실행하는 Kestrel로 전달합니다. 이를 통해 프로세스 관리, 로깅, 보안과 같은 IIS의 기능을 활용할 수 있습니다.

컨테이너

컨테이너화된 환경에 배포하는 경우 ASP.NET Core 앱을 Docker 컨테이너로 패키지할 수 있습니다. 이를 통해 Docker Desktop, Docker Enterprise, Kubernetes 등 Docker를 지원하는 모든 컨테이너 런타임에서 앱을 실행할 수 있습니다. 컨테이너는 이식성과 확장성이 뛰어나므로 기본 운영 체제에 관계없이 Docker를 지원하는 모든 컴퓨터에서 앱을 실행할 수 있습니다.

Azure

Azure에 배포하는 경우 Azure App Service 또는 Azure Container Apps에서 ASP.NET Core 앱을 호스팅할 수 있습니다. 다양한 도구를 사용하면 명령줄에서 Azure에 앱을 쉽게 배포할 수 있습니다. 이러한 도구에는 다음이 포함됩니다.

  • Visual Studio Code용 Azure 도구 확장
  • Visual Studio
  • Azure CLI
  • Azure 개발자 CLI(azd)