programing

Kestrel이란 무엇입니까(vs IIS / Express)

bestprogram 2023. 5. 7. 12:05

Kestrel이란 무엇입니까(vs IIS / Express)

kestrel 웹 서버란 무엇이며 IIS/IIS Express와 어떤 관계입니까?

저는 IIS Express에서 앱을 개발하고 IIS 웹 서버에서 호스팅하는 사람입니다.ASP와 함께.는 NET Core에 .Microsoft.AspNetCore.Server.Kestrel그리고 내 스타트업은..UseServer("Microsoft.AspNetCore.Server.Kestrel")그러나 웹 사이트를 실행할 때 시스템 트레이에 IIS Express 아이콘이 표시됩니다.누군가가 나에게 IIS Express를 사용하는지 Kestrel을 사용하는지 물었고 나는 무슨 말을 해야 할지 몰랐습니다!

플랫폼 애저라도 needKestrel, 하지만 대안이 없는 것처럼 보입니다. 가장 간단한 샘플도 Kestrel을 사용합니다.

Windows와 IIS만 사용하더라도 Kestrel이 왜 오는지 이해할 수 있도록 몇 가지 역사와 함께 대안적인 답변을 제공하고자 합니다.

ASP의 맨 처음에.2000년 이전의 NET 개발은 분명히 Microsoft가 ASP를 호스팅하기 위해 두 가지를 만들었습니다.NET WebForms 앱,

  • 나중에 ASP가 된 카시니.Visual Studio 개 NET 발버서의.C#으로 작성된 완전히 관리되는 웹 서버로, 다음을 기반으로 합니다.HttpListener물론 개발 전용이었기 때문에 많은 기능이 구현되지 않았습니다.마이크로소프트가 카시니의 소스 코드를 대중에게 제공함에 따라, 코드 기반을 포크하고 더 많은 기능을 추가한 제3자가 있으며, 이것이 카시니 제품군을 시작했습니다.
  • IIS(개정판 1)에서 ASP.NET. 는 4이었기 때문에 풀과 것이 . ASPIIS 는 4.0 및 5.0/5.1이었기 때문에 ASP와 같은 애플리케이션 풀이 없습니다.NET에는 자체적인 작업자 프로세스도 있습니다.aspnet_wp.exe).

웹 앱을 개발하기 위해서는 Cassini를 사용하고 IIS를 사용합니다.

  • IIS 6에서 응용 프로그램 풀을 도입하려면 ASP를 몇 가지 변경해야 했습니다. NET쪽.aspnet_wp.exe되지 않게 이되로대습다니었되체어구식다▁became니▁by습었으로 대체되었습니다.aspnet_isapi.dll그것은 ASP로 볼 수 있습니다.IIS 버전 2에서 NET 지원.그래서 ASP. processes NET IIS에서 .w3wp.exe.

  • 7인 변경이 는 IIS 7 이서통합인의도추며했다으, 이대되습니었체는로를 대체했습니다.aspnet_isapi.dll와 함께webengine4.dll그것은 ASP로 볼 수 있습니다.IIS 개정판 3. ASP에 대한 NET 지원.NET 및 IIS 파이프라인이 통합됩니다.

ASP를 볼 수 있습니다.NET은 훨씬 더 복잡해지고 IIS와 긴밀하게 통합되었기 때문에 Cassini는 나이를 나타내기 시작했고, 점차 IIS Express(사용자 모델라이트 IIS)로 대체되었습니다.

따라서 많은 경우 IIS가 느리다고 비난할 때 ASP를 비난해야 합니다.사실 NET.ASP가 없는 IIS 자체입니다.NET은 상당히 빠르고 안정적인 반면 ASP는 매우 빠릅니다.NET은 충분한 성능 메트릭을 염두에 두고 개발되지 않았습니다(WebForms가 생산성과 RAD에 상당히 집중함에 따라).

그리고 2014년 11월에 ASP.NET 5(이후 ASP로 이름 변경).NET Core)가 발표되어 크로스 플랫폼 기술이 되었습니다.분명히 Microsoft는 Windows, macOS 및 Linux를 지원하기 위한 새로운 설계가 필요했습니다. 여기서 IIS 외에 모든 주요 웹 서버, nginx/Apache(또는 기타 웹 서버)를 고려해야 합니다.

그 후 하고 개발했다는 합니다.JS로부터 많은 것을 배웠고, 그 다음 Kestrel을 설계하고 개발했다는 것에 동의할 것이라고 생각합니다.libuv처음에는 다른 기술로 이동할 수도 있습니다.처음에는 Cassini와 같은 경량 웹 서버였지만 나중에는 더 많은 기능이 추가되고 있습니다(다른 답변처럼 전체 웹 서버로 취급할 수 있는 훨씬 더 많은 기능).완전히 관리되지만(일부 기본 종속성이 있음), 더 이상 Cassini와 같은 장난감 웹 서버가 아닙니다.

그럼 왜 그냥 케스트렐을 사용할 수 없는 겁니까?IIS Express 및 잠재적으로 IIS, nginx 또는 Apache가 여전히 필요한 이유는 무엇입니까?그것은 주로 오늘날의 인터넷 관행의 결과입니다.대부분의 웹 사이트는 역방향 프록시를 사용하여 웹 브라우저에서 요청을 받은 다음 백그라운드의 응용 프로그램 서버로 전달합니다.

  • IIS Express/IIS/nginx/Apache는 역방향 프록시 서버입니다.
  • Kestrel/NodeJS/Tomcat 등이 애플리케이션 서버입니다.

다른 답변에는 이미 Microsoft 설명서에 대한 링크가 표시되어 있으므로 확인할 수 있습니다.

Microsoft는 IIS를 Java/Python 등을 위한 충분한 역방향 프록시로 만들기 위해 HttpPlatformHandler를 처음에 개발하여 ASP에 사용하기로 계획했습니다.NET 코어.개발 중에 문제가 발생하기 시작하여 나중에 마이크로소프트에서 ASP를 만들었습니다.ASP용 NET 코어 모듈입니다.NET 코어.ASP입니다.IIS 버전 4에서 NET 지원.

ASP부터 시작합니다.NET Core 2.2, ASP.NET Core Module for IIS(NET Core Module for IIS)는 다음과 같습니다.process Core (IIS는 NET Core ()w3wp.exe), ASP와 상당히 유사합니다.NET 2.x/4.x.이 모드를 "라고 합니다.IIS 호스팅 중"입니다.ASP라고 볼 수 있습니다.IIS 버전 5에서 NET 지원.

글쎄요, 꽤 길지만, 제가 필요한 모든 작품들을 모아서 당신이 그것을 읽는 것을 즐겼으면 좋겠어요.

최근 업데이트(2023년 1월) 중 하나는 ASP입니다.오픈 소스 YARP 프로젝트에서 밝혔듯이 NET Core/Kestrel은 역방향 프록시 기능 자체를 호스팅하는 데 사용될 수 있습니다.

이제 Kestrel/YARP는 Microsoft Azure 내부에서 보고된 것과 같은 많은 시나리오에서 IISARR을 대체하기 위해 널리 사용되므로, 이제 문자 그대로 Kestrel/YARP를 사용하여 다른 웹 서버(IIS/nginx/Apache) 없이도 운영 웹 애플리케이션을 호스팅할 수 있습니다.

케스트렐이란?

완전한 웹 서버입니다.ASP를 실행할 수 있습니다.Kestrel만 사용하는 NET Core 애플리케이션.

그러나 웹 사이트를 실행할 때 시스템 트레이에 IIS Express 아이콘이 표시됩니다.

ASP에 있습니다.NET NET 플케아도마에 입니다.wwwroot디렉토리에는 다음이 포함된 web.config가 표시됩니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
    <handlers>
    <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>

이것은 HttpPlatformHandler입니다.기본적으로, 이것이 하는 일은 모든 요청을 케스트렐에게 전달하는 것입니다.IIS Express(및 해당 IIS)는 ASP를 실행하지 않습니다.더 이상 그들 자신을 NET.대신, 그들은 Kestrel의 요청과 응답을 주고 받는 프록시 역할을 할 것입니다.IIS를 사용하면 보안 구성, 커널 수준 캐싱 등의 이점이 있습니다.

ms 문서에서: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x

Kestrel은 ASP용 크로스 플랫폼 웹 서버입니다.크로스 플랫폼 비동기 I/O 라이브러리인 libuv를 기반으로 하는 NET Core.Kestrel은 기본적으로 ASP에 포함된 웹 서버입니다.NET Core 프로젝트 템플릿.

Kestrel을 단독으로 사용하거나 IIS, Nginx 또는 Apache와 같은 역방향 프록시 서버와 함께 사용할 수 있습니다.역방향 프록시 서버는 인터넷에서 HTTP 요청을 수신하여 예비 처리 후 Kestrel로 전달합니다.


업데이트: .net core 2.1, Kestrel은 libuv 대신 관리 소켓을 사용합니다.

asp.net core 2.1 문서에서: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1#transport-configuration

ASP의 출시와 함께.NET Core 2.1, Kestrel의 기본 전송은 더 이상 Libuv를 기반으로 하지 않고 대신 관리 소켓을 기반으로 합니다.

  1. Kestrel에서는 동일한 포트에 있는 여러 앱이 지원되지 않습니다.
  2. Kestrel에 Windows 인증이 없습니다.
  3. 요청 필터링은 IIS에서 훨씬 더 완벽하게 기능합니다.
  4. MIME 유형 매핑은 IIS에서 훨씬 더 좋습니다.
  5. HTTP 액세스 로그는 Kestrel에서 수집되지 않습니다.

언급URL : https://stackoverflow.com/questions/35639205/what-is-kestrel-vs-iis-express