웹 응용 프로그램에서 Asp.Net 핵심 호스팅 모델을 어떻게 사용합니까?



Asp.net 코어는 호스팅 모델이 크게 향상되었습니다. 이전 버전에서는 Windows의 IIS, Apache 또는 NGINX와 같은 프록시 웹 서버를 통해 Asp.net Core 웹 응용 프로그램을 호스팅해야했습니다. 그러나 새로운 Asp.net 코어 2.2를 사용하면 외부 서버 요구 사항없이 IIS 내의 Windows에서 Asp.net 응용 프로그램을 직접 호스팅 할 수 있습니다. 따라서 간단한 In-Process 호스팅 메커니즘을 사용하여 처리량을 증가시킵니다.

ASP.NET Core에서 호스팅 모델

ASP.NET은 Microsoft의 기술로 웹 서버 측에서 동적 페이지를 만들 수 있습니다.

호스팅 ASP.NET은 Windows 기반 소프트웨어 및 운영 체제 자체와 완전히 통합되어 있습니다. 이 기술은 매우 안전하고 신뢰할 수 있으며 사용하기 쉽습니다. 주로 인앱 제품 개발에 사용됩니다.

ASP.NET Core의 호스팅 모델은 두 가지 유형, 즉 In-process Hosting과 Out-of-process Hosting입니다. ASP.Net Core 2.2 이전에는 Out-of-process 호스팅이지만 성능으로 인해 Asp.net core 2.2 버전의 In-Process Hosting Model이 도입되었습니다.

Asp.net Core에서 프로세스 내 호스팅 모델 소개

이전 버전의 ASP.NET Core에서는 IIS를 통해 프록시되는 Out-of-Process 호스팅 모델을 사용하여 IIS에서 응용 프로그램을 호스팅해야했습니다. IIS 또는 IIS Express에 도달 한 요청은 Kestrel Web Server 내에서 실행되는 ASP.NET Core 웹 응용 프로그램으로 전달됩니다. 그러나 새로운 In-process 호스팅에서는 IIS, Nginx 또는 Linux와 같은 호스팅에 하나의 서버 만 사용됩니다. 이는 요청을 Kestrel로 전달하는 대신 새로운 웹 서버 구현 (IISHttpServer)이 IIS 응용 프로그램 풀 내에서 직접 호스팅되어 요청을 처리한다는 것을 의미합니다. ASP.NET Core 3.1에서는 기존 템플릿을 사용하여 새 응용 프로그램을 개발할 때마다 In-process 호스팅 모델이 기본 모델로 사용됩니다.

분명히이 호스팅 모델은 Out-of-Process 호스팅 모델과 비교할 때 처리량이 많고 성능이 향상되었습니다.

프로세스 외부 호스팅 모델

Out-of-process 호스팅 모델에서 Kestrel 서버를 사용자 요청에 대한 서버로 직접 사용하거나 프록시 서버 역할을하고 내부 Kestrel 서버에 요청을 보내는 IIS에 응용 프로그램을 배포 할 수 있습니다. 이러한 종류의 호스팅 모델에는 Kestrel 및 Proxy Server를 사용하는 두 가지 옵션이 있습니다.

1. Kestrel 사용

여기서 Kestrel 자체는 사용자 요청을 직접 서버하는 에지 서버 역할을하므로 Kestrel 서버 만 응용 프로그램에 사용할 수 있습니다.

2. 프록시 서버 사용

Kestrel 서버의 한계로 인해 모든 응용 프로그램에서이를 사용할 수는 없습니다. 이러한 경우 IIS, Apache 또는 NGINX와 같은 강력한 서버를 사용해야합니다. 따라서이 상황에서이 서버는 모든 요청을 애플리케이션이 실행중인 내부 Kestrel 서버로 경로 재지 정하는 예약 프록시 서버 역할을합니다. 여기서 IIS와 Kestrel과 같은 두 개의 서버가 실행 중입니다.

이 호스팅 모델은 이전 .NET Core 2.2 버전으로 구현 된 모든 응용 프로그램의 기본 모델입니다. 성능 저하와 같은이 유형의 사용 제한 중 하나입니다.

마지막 생각들:

사실 대부분의 ASP.Net 웹 개발 회사는 확실히 In-Process 호스팅 모델을 사용하려고합니다. 적은 자원을 소비하고 우수한 성능을 제공하기 때문입니다. Kestrel에 대한 추가 프로세스가 필요하지 않으며 IIS와 Kestrel 간의 추가 통신을 피할 수 있습니다. 그러나 Windows 및 Linux에서 동일한 웹 응용 프로그램을 호스팅하는 경우와 같이 Out-Of-Process 호스팅을 선택하려는 경우가 있습니다. Kestrel은 다른 플랫폼에서 애플리케이션을 호스팅 할 때 모든 플랫폼에서 HTTP 요청을 처리하는 데 사용되는 기본 메커니즘입니다.

그러나 Kestrel에 대한 특정 요구 사항이 없으면 IIS에서 In-Process를 실행하는 것이 가장 좋습니다.

주요 사진 신용 : Unsplash에 Farzad Nazifi에 의해 사진




코멘트 (0)

코멘트를 남겨주세요