Kestrel은 ASP.NET Core를 위한 크로스 플랫폼(cross-platform) 웹 서버입니다. .NET Core가 지원하는 모든 플랫폼과 버전에서 동작하며, ASP.NET Core에는 기본적으로 내장 웹 서버로 포함되어 있어 별도의 설치 없이 바로 사용할 수 있습니다.
Kestrel의 주요 특징
Kestrel은 단독으로 엣지 서버(edge server), 즉 인터넷에 직접 노출되어 클라이언트로부터 들어오는 HTTP 요청을 직접 처리하는 웹 서버로 활용할 수 있습니다. Kestrel 환경에서 앱을 호스팅하는 프로세스는 dotnet.exe입니다.
다만 Kestrel은 InProcess 호스팅 모델에서는 사용되지 않습니다. Out of Process 호스팅 모델에서는 아래 두 가지 방식 중 하나로 Kestrel을 활용할 수 있습니다.
- Kestrel을 인터넷 연결(internet-facing) 웹 서버로 단독 사용
- 역방향 프록시(reverse proxy) 서버와 함께 조합하여 사용
.NET Core CLI로 Kestrel 실행하기
.NET Core CLI를 사용해 ASP.NET Core 애플리케이션을 실행하면, Kestrel이 들어오는 HTTP 요청을 처리하는 유일한 웹 서버로 동작합니다.
.NET Core CLI는 지정된 템플릿을 기반으로 새 프로젝트, 구성 파일, 솔루션을 생성할 수 있으며, 프로젝트에 필요한 종속성과 도구를 복원(restoer)하고, 프로젝트와 모든 종속성을 빌드한 뒤 실행하는 등의 작업을 수행합니다.
실행 절차
- Windows 명령 프롬프트(또는 터미널)를 실행합니다.
- ASP.NET Core 프로젝트가 있는 폴더로 디렉터리를 이동합니다.
dotnet run명령을 입력합니다.
.NET Core CLI가 프로젝트를 빌드하고 실행하면, 애플리케이션에 접속할 수 있는 URL이 화면에 표시됩니다. 일반적으로 https://localhost:5000 주소로 애플리케이션에 접근할 수 있습니다.
호스팅 프로세스 확인
Kestrel 환경에서는 앱을 호스팅하고 실행하는 프로세스가 dotnet.exe입니다. 따라서 브라우저에서 https://localhost:5000에 접속한 후 작업 관리자 등에서 프로세스 목록을 확인하면, 해당 앱이 dotnet 프로세스로 실행 중인 것을 확인할 수 있습니다.