ASP.NET Core의 요청 기능Request Features in ASP.NET Core

작성자 Steve SmithBy Steve Smith

웹 서버 구현은 HTTP 요청과 관련하여 설명되고 응답은 인터페이스에서 정의됩니다.Web server implementation details related to HTTP requests and responses are defined in interfaces. 이러한 인터페이스는 서버 구현 및 미들웨어에서 응용 프로그램의 호스팅 파이프라인을 만들고 수정하는 데 사용됩니다.These interfaces are used by server implementations and middleware to create and modify the application's hosting pipeline.

기능 인터페이스Feature interfaces

ASP.NET Core는 Microsoft.AspNetCore.Http.Features에서 서버가 지원하는 기능을 식별하기 위해 사용하는 다수의 HTTP 기능 인터페이스를 정의합니다.ASP.NET Core defines a number of HTTP feature interfaces in Microsoft.AspNetCore.Http.Features which are used by servers to identify the features they support. 다음 기능 인터페이스는 요청을 처리하고 응답을 반환합니다.The following feature interfaces handle requests and return responses:

IHttpRequestFeature는 프로토콜, 경로, 쿼리 문자열, 헤더 및 본문을 포함하여 HTTP 요청의 구조를 정의합니다.IHttpRequestFeature Defines the structure of an HTTP request, including the protocol, path, query string, headers, and body.

IHttpResponseFeature는 상태 코드, 헤더 및 응답 본문을 포함하여 HTTP 응답 구조를 정의합니다.IHttpResponseFeature Defines the structure of an HTTP response, including the status code, headers, and body of the response.

IHttpAuthenticationFeatureClaimsPrincipal을 기반으로 사용자를 식별하고 인증 처리기를 지정하기 위한 지원을 정의합니다.IHttpAuthenticationFeature Defines support for identifying users based on a ClaimsPrincipal and specifying an authentication handler.

IHttpUpgradeFeature는 서버가 프로토콜을 전환하려는 경우 사용할 추가 프로토콜을 지정하는 클라이언트를 허용하는 HTTP 업그레이드에 대한 지원을 정의합니다. IHttpUpgradeFeature Defines support for HTTP Upgrades, which allow the client to specify which additional protocols it would like to use if the server wishes to switch protocols.

IHttpBufferingFeature는 요청 및/또는 응답의 버퍼링을 사용하지 않도록 메서드를 정의합니다.IHttpBufferingFeature Defines methods for disabling buffering of requests and/or responses.

IHttpConnectionFeature는 로컬과 원격 주소 및 포트에 대한 속성을 정의합니다.IHttpConnectionFeature Defines properties for local and remote addresses and ports.

IHttpRequestLifetimeFeature는 연결을 중단하는 기능 또는 클라이언트 연결 끊김과 같이 요청이 너무 일찍 종료되었는지를 감지하는 기능에 대한 지원을 정의합니다.IHttpRequestLifetimeFeature Defines support for aborting connections, or detecting if a request has been terminated prematurely, such as by a client disconnect.

IHttpSendFileFeature는 파일을 비동기적으로 보내는 메서드를 정의합니다.IHttpSendFileFeature Defines a method for sending files asynchronously.

IHttpWebSocketFeature는 웹 소켓을 지원하기 위한 API를 정의합니다.IHttpWebSocketFeature Defines an API for supporting web sockets.

IHttpRequestIdentifierFeature는 요청을 고유하게 식별하기 위해 구현할 수 있는 속성을 추가합니다.IHttpRequestIdentifierFeature Adds a property that can be implemented to uniquely identify requests.

ISessionFeature는 사용자 세션을 지원하기 위한 ISessionFactoryISession 추상화를 정의합니다.ISessionFeature Defines ISessionFactory and ISession abstractions for supporting user sessions.

ITlsConnectionFeature는 클라이언트 인증서를 검색하기 위한 API를 정의합니다.ITlsConnectionFeature Defines an API for retrieving client certificates.

ITlsTokenBindingFeature는 TLS 토큰 바인딩 매개 변수 작업을 위한 메서드를 정의합니다.ITlsTokenBindingFeature Defines methods for working with TLS token binding parameters.

참고

ISessionFeature는 서버 기능이 아니지만 SessionMiddleware로 구현됩니다(응용 프로그램 상태 관리 참조).ISessionFeature isn't a server feature, but is implemented by the SessionMiddleware (see Managing Application State).

기능 컬렉션Feature collections

HttpContextFeatures 속성은 현재 요청에 사용 가능한 HTTP 기능을 가져오고 설정하기 위한 인터페이스를 제공합니다.The Features property of HttpContext provides an interface for getting and setting the available HTTP features for the current request. 기능 컬렉션은 요청 컨텍스트 내에서도 변경할 수 있기 때문에, 미들웨어를 사용하여 콜렉션을 수정하고 추가 기능에 대한 지원을 추가할 수 있습니다.Since the feature collection is mutable even within the context of a request, middleware can be used to modify the collection and add support for additional features.

미들웨어 및 요청 기능Middleware and request features

서버가 기능 컬렉션을 만드는 동안 미들웨어는 이 컬렉션에 추가할 수 있고 컬렉션의 기능을 사용할 수 있습니다.While servers are responsible for creating the feature collection, middleware can both add to this collection and consume features from the collection. 예를 들어 StaticFileMiddlewareIHttpSendFileFeature 기능에 액세스합니다. For example, the StaticFileMiddleware accesses the IHttpSendFileFeature feature. 이는 해당 기능이 존재하는 경우 실제 경로에서 요청된 고정 파일을 보내는 데 사용됩니다.If the feature exists, it's used to send the requested static file from its physical path. 그렇지 않으면 느린 대체 메서드를 사용하여 파일을 보냅니다.Otherwise, a slower alternative method is used to send the file. 사용 가능한 경우 IHttpSendFileFeature는 운영 체제가 파일을 열고 네트워크 카드로 직접 커널 모드 복사를 수행할 수 있게 해줍니다.When available, the IHttpSendFileFeature allows the operating system to open the file and perform a direct kernel mode copy to the network card.

또한 미들웨어는 서버에 의해 설정된 기능 컬렉션에 추가할 수 있습니다.Additionally, middleware can add to the feature collection established by the server. 기존 기능을 미들웨어로 대체할 수 있으므로, 미들웨어가 서버의 기능을 향상할 수 있습니다.Existing features can even be replaced by middleware, allowing the middleware to augment the functionality of the server. 컬렉션에 추가된 기능은 다른 미들웨어에서 즉시 사용하거나 나중에 요청 파이프라인의 기본 응용 프로그램 자체에서 사용할 수 있습니다.Features added to the collection are available immediately to other middleware or the underlying application itself later in the request pipeline.

사용자 지정 서버 구현 및 특정 미들웨어의 향상 기능을 결합하면 응용 프로그램에 필요한 정확한 기능 집합을 구성할 수 있습니다.By combining custom server implementations and specific middleware enhancements, the precise set of features an application requires can be constructed. 이를 통해 서버를 변경하지 않고 누락된 기능을 추가할 수 있으며, 최소한의 기능만 노출되도록 하여 공격 영역을 제한하고 성능을 개선할 수 있습니다.This allows missing features to be added without requiring a change in server, and ensures only the minimal amount of features are exposed, thus limiting attack surface area and improving performance.

요약Summary

기능 인터페이스는 특정 요청이 지원할 수 있는 특정 HTTP 기능을 정의합니다.Feature interfaces define specific HTTP features that a given request may support. 서버는 기능 컬렉션 및 해당 서버에서 지원하는 초기 기능 집합을 정의하지만, 미들웨어를 사용하여 이러한 기능을 향상할 수 있습니다.Servers define collections of features, and the initial set of features supported by that server, but middleware can be used to enhance these features.

추가 리소스Additional resources