.NET Core 크로스 플랫폼 특성상 ASP.NET Core 프로젝트는 Windows와 Linux 모두에서 실행할 수 있으며, Windows에 배포될 경우 ASP.NET Core에 Kestrel 컨테이너가 포함되어 있어 IIS 서비스와 독립적으로 IIS에서 배포하거나 명령줄을 통해 직접 실행할 수 있습니다.
ASP.NET Core 애플리케이션을 IIS 서비스에 배포하는 방법에 대한 자세한 내용은 다음 항목을 참고하실 수 있습니다:
ASP.NET 코어는 IIS에 배포됩니다진행 중그리고절차 종료두 가지 호스팅 모델
리소스:
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
공정 중 모델
Core 3.0 이후 ASP.NET,IIS에 배포된 모든 애플리케이션에 대해 기본적으로 프로세스 내 호스팅이 활성화되어 있습니다, web.config 파일은 다음과 같습니다:
볼 수 있습니다hostingModel="inprocess", 진행 중인 모델Kestrel은 사용되지 않습니다대신 IISHttpServer()를 사용하여 IIS 애플리케이션 풀 내에 직접 호스팅된 새로운 웹 서버를 구현하는데, 이는 전통적인 ASP.NET 가 IIS에 도입된 방식과 다소 유사합니다.
다음 도표는 IIS, ASP.NET Core 모듈, 그리고 진행 중인 호스팅 애플리케이션 간의 관계를 보여줍니다:
웹사이트에 접속하려고 하면 아래 이미지에서 보이는 응답 헤더를 통해 서버를 볼 수 있습니다:
작업 관리자를 통해 프로세스를 살펴보면, 아래 그림과 같이 두 개의 프로세스만 있습니다:
프로세스 외 모델
이 모델 IIS는 역방향 프록시 역할을 하며, 요청을 받으면 ASP.NET Core 애플리케이션에 내장된 크로스 플랫폼 웹 서버인 케스트렐 서비스로 전달해야 합니다.
다음 도표는 IIS, ASP.NET Core 모듈, 그리고 프로세스 외 호스팅 애플리케이션 간의 관계를 보여줍니다:
우리는 web.config 파일을 다음과 같이 수정합니다:
브라우저를 통해 웹사이트에 접속하면, 응답 헤더의 서버 값이 아래 그림에서 볼 수 있듯이 Kestrel로 변환된 것을 볼 수 있습니다:
작업 관리자를 동시에 살펴보니, 아래 그림에서 보듯이 세 가지 프로세스가 있습니다:
요약
InProcess 관리 모델에서는 요청과 응답이 w3wp.exe 또는 IISExpress를 통해 제공되지만, OutOfProcess 작업자 프로세스에서는 dotnet.exe InProcess 관리 모델에서는 단일 웹 서버를 사용하며, OutOfProcess는 두 개의 웹 서버를 사용할 수 있습니다.
새로운 In-Process 모델을 사용하는 명백한 이유는 더 빠르고 자원을 덜 사용하기 때문입니다.InProcess 관리 모델은 더 나은 성능을 제공합니다왜냐하면 이 과정이 IIS 애플리케이션 풀 내에서 직접 실행되기 때문입니다. 내부 HTTP 트래픽과 오버헤드가 없으며, 요청은 즉시 처리됩니다.
|