ASP.NET Core의 요청 기능
- 본 번역문서의 원문은 Request Features in ASP.NET Core docs.microsoft.com 입니다.
HTTP 요청 및 응답과 관련된 웹 서버의 세부 구현 정보는 인터페이스를 통해서 정의됩니다. 이 인터페이스들은 응용 프로그램의 호스팅 파이프라인을 만들거나 수정하기 위해 서버 구현 및 미들웨어에 의해서 사용됩니다.
기능 인터페이스
ASP.NET Core는 서버가 지원하는 기능을 식별하기 위해 사용되는 HTTP 기능 인터페이스를 Microsoft.AspNetCore.Http.Features
네임스페이스에 다수 정의하고 있습니다.
다음 기능 인터페이스들은 요청을 처리하고 응답을 반환합니다:
IHttpRequestFeature
인터페이스는 프로토콜, 경로, 쿼리 문자열, 헤더 및 본문을 비롯한 HTTP 요청 구조를 정의합니다.
IHttpResponseFeature
인터페이스는 상태 코드, 헤더 및 응답 본문을 비롯한 HTTP 응답 구조를 정의합니다.
IHttpAuthenticationFeature
인터페이스는 ClaimsPrincipal
에 기반한 사용자 식별 및 인증 처리기 지정을 위한 지원을 정의합니다.
IHttpUpgradeFeature
인터페이스는 서버가 프로토콜을 전환하고자 할 때, 클라이언트가 사용할 추가 프로토콜을 지정할 수 있는 HTTP 업그레이드 지원을 정의합니다.
IHttpBufferingFeature
인터페이스는 요청 또는 응답, 혹은 둘 모두의 버퍼링을 비활성화시키는 메서드들을 정의합니다.
IHttpConnectionFeature
인터페이스는 로컬 및 원격의 주소와 포트 속성을 정의합니다.
IHttpRequestLifetimeFeature
인터페이스는 연결 중단 및 요청이 중간에 종료되었는지 (클라이언트가 연결을 끊은 경우 등) 감지하기 위한 지원을 정의합니다.
IHttpSendFileFeature
인터페이스는 비동기적으로 파일을 전송하는 메서드를 정의합니다.
IHttpWebSocketFeature
인터페이스는 웹 소켓을 지원하기 위한 API를 정의합니다.
IHttpRequestIdentifierFeature
인터페이스는 요청을 고유하게 식별하고자 할 때 구현할 수 있는 속성을 추가합니다.
ISessionFeature
인터페이스는 사용자 세션을 지원하기 위한 ISessionFactory
및 ISession
추상화를 정의합니다.
ITlsConnectionFeature
인터페이스는 클라이언트 인증서를 조회하기 위한 API를 정의합니다.
ITlsTokenBindingFeature
TLS 토큰 바인딩 매개 변수를 이용해서 작업하기 위한 메서드를 정의합니다.
노트
ISessionFeature
인터페이스는 서버 기능은 아니지만 SessionMiddleware
로 구현됩니다 (ASP.NET Core의 세션 및 응용 프로그램 상태 문서 참고).
기능 컬렉션
HttpContext
의 Features
속성은 현재 요청에서 사용 가능한 HTTP 기능을 가져오거나 설정할 수 있는 인터페이스를 제공합니다.
기능 컬렉션은 요청 컨텍스트 내에서도 변경이 가능하기 때문에, 미들웨어를 통해서 컬렉션을 수정하거나 추가 기능에 대한 지원을 추가할 수 있습니다.
미들웨어 및 요청 기능
미들웨어는 서버가 기능 컬렉션을 생성하는 동안 컬렉션에 기능을 추가할 수도 있고 반대로 컬렉션의 기능을 사용할 수도 있습니다.
예를 들어서, StaticFileMiddleware
는 IHttpSendFileFeature
기능에 접근합니다.
만약 이 기능이 컬렉션에 존재하면 이를 이용해서 요청된 정적 파일을 파일의 물리적 경로로부터 전송합니다.
그러나 기능이 존재하지 않으면, 보다 느린 대안을 사용해서 파일을 전송합니다.
IHttpSendFileFeature
를 사용하면 운영 체제가 파일을 열고 직접 네트워크 카드에 커널 모드 복사를 수행할 수 있습니다.
또한 미들웨어는 서버가 설정한 기능 컬렉션에 기능을 추가할 수도 있습니다. 이때 기존 기능을 미들웨어로 대체할 수도 있기 때문에, 미들웨어로 서버의 기능을 향상시킬 수도 있습니다. 컬렉션에 추가된 기능은 요청 파이프라인의 이후 다른 미들웨어나 기반 응용 프로그램 자체에서 그 즉시 사용 가능합니다.
사용자 지정 서버 구현과 특정 미들웨어 확장을 결합해서 응용 프로그램이 요구하는 정확한 기능 모음을 구성할 수 있습니다. 이 기능을 활용하면 서버를 변경하지 않고도 누락된 기능을 추가할 수 있으며, 최소한의 기능만 노출되도록 구성함으로써 공격 영역을 제한하고 성능을 향상시킬 수 있습니다.
요약
기능 인터페이스는 특정 요청이 지원 가능한 특정 HTTP 기능을 정의합니다. 서버는 기능 컬렉션 및 해당 서버가 지원하는 초기 기능 모음을 정의하지만, 미들웨어를 사용해서 해당 기능을 향상시킬 수 있습니다.
추가 자료
- ASP.NET Core 기본 개요 2017-05-30 08:00
- ASP.NET Core와 응용 프로그램 Startup 클래스 2017-05-31 08:00
- ASP.NET Core 미들웨어의 기초 2017-06-01 08:00
- ASP.NET Core에서 정적 파일 서비스하기 2017-06-02 08:00
- ASP.NET Core의 오류 처리 살펴보기 2017-06-14 08:00
- 다양한 환경에서 작업하기 2017-08-21 08:00
- ASP.NET Core 구성하기 2017-08-28 08:00
- ASP.NET Core 파일 공급자 2017-09-04 08:00
- ASP.NET Core의 세션 및 응용 프로그램 상태 2017-09-11 08:00
- ASP.NET Core의 호스팅 살펴보기 2017-09-18 08:00
- ASP.NET Core의 웹 서버 구현 2017-09-25 08:00
- ASP.NET Core의 Kestrel 웹 서버 구현 살펴보기 2017-10-02 08:00
- ASP.NET Core 모듈 살펴보기 2017-10-09 08:00
- ASP.NET Core의 WebListener 웹 서버 구현 2017-10-16 08:00
- ASP.NET Core의 HTTP.sys 웹 서버 구현 2017-10-23 08:00
- ASP.NET Core의 요청 기능 2017-10-30 08:00
- ASP.NET Core와 URL 재작성 미들웨어 2018-05-07 08:00