Solicitar recursos no ASP.NET CoreRequest Features in ASP.NET Core

Por Steve SmithBy Steve Smith

Os detalhes de implementação de servidor Web relacionados a solicitações HTTP e respostas são definidos em interfaces.Web server implementation details related to HTTP requests and responses are defined in interfaces. Essas interfaces são usadas pelas implementações de servidor e pelo middleware para criar e modificar o pipeline de hospedagem do aplicativo.These interfaces are used by server implementations and middleware to create and modify the application's hosting pipeline.

Interfaces de recursoFeature interfaces

O ASP.NET Core define várias interfaces de recurso HTTP em Microsoft.AspNetCore.Http.Features, que são usadas pelos servidores para identificar os recursos para os quais eles dão suporte.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. As seguintes interfaces de recurso manipulam solicitações e respostas de retorno:The following feature interfaces handle requests and return responses:

IHttpRequestFeature Define a estrutura de uma solicitação HTTP, incluindo o protocolo, o caminho, a cadeia de caracteres de consulta, os cabeçalhos e o corpo.IHttpRequestFeature Defines the structure of an HTTP request, including the protocol, path, query string, headers, and body.

IHttpResponseFeature Define a estrutura de uma resposta HTTP, incluindo o código de status, os cabeçalhos e o corpo da resposta.IHttpResponseFeature Defines the structure of an HTTP response, including the status code, headers, and body of the response.

IHttpAuthenticationFeature Define o suporte para identificar os usuários com base em um ClaimsPrincipal e especificando um manipulador de autenticação.IHttpAuthenticationFeature Defines support for identifying users based on a ClaimsPrincipal and specifying an authentication handler.

IHttpUpgradeFeature Define o suporte para Upgrades de HTTP, que permitem ao cliente especificar quais protocolos adicionais ele desejará usar se o servidor quiser mudar os protocolos.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 Define métodos para desabilitar o buffer de solicitações e/ou respostas.IHttpBufferingFeature Defines methods for disabling buffering of requests and/or responses.

IHttpConnectionFeature Define propriedades para portas e endereços locais e remotos.IHttpConnectionFeature Defines properties for local and remote addresses and ports.

IHttpRequestLifetimeFeature Define o suporte para anular conexões ou detectar se uma solicitação foi encerrada prematuramente, como por uma desconexão do cliente.IHttpRequestLifetimeFeature Defines support for aborting connections, or detecting if a request has been terminated prematurely, such as by a client disconnect.

IHttpSendFileFeature Define um método para enviar arquivos de forma assíncrona.IHttpSendFileFeature Defines a method for sending files asynchronously.

IHttpWebSocketFeature Define uma API para dar suporte a soquetes da Web.IHttpWebSocketFeature Defines an API for supporting web sockets.

IHttpRequestIdentifierFeature Adiciona uma propriedade que pode ser implementada para identificar as solicitações de forma exclusiva.IHttpRequestIdentifierFeature Adds a property that can be implemented to uniquely identify requests.

ISessionFeature Define abstrações ISessionFactory e ISession para dar suporte a sessões de usuário.ISessionFeature Defines ISessionFactory and ISession abstractions for supporting user sessions.

ITlsConnectionFeature Define uma API para recuperar os certificados de cliente.ITlsConnectionFeature Defines an API for retrieving client certificates.

ITlsTokenBindingFeature Define métodos para trabalhar com parâmetros de associação de token de TLS.ITlsTokenBindingFeature Defines methods for working with TLS token binding parameters.

Observação

ISessionFeature não é um recurso de servidor, mas é implementado por SessionMiddleware (consulte Gerenciando o estado do aplicativo).ISessionFeature isn't a server feature, but is implemented by the SessionMiddleware (see Managing Application State).

Coleções de recursosFeature collections

A propriedade Features de HttpContext fornece uma interface para obter e definir os recursos HTTP disponíveis para a solicitação atual.The Features property of HttpContext provides an interface for getting and setting the available HTTP features for the current request. Como a coleção de recursos é mutável, mesmo no contexto de uma solicitação, o middleware pode ser usado para modificar a coleção e adicionar suporte para recursos adicionais.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 e recursos de solicitaçãoMiddleware and request features

Embora os servidores sejam responsáveis por criar a coleção de recursos, o middleware pode adicionar recursos a essa coleção e consumi-los.While servers are responsible for creating the feature collection, middleware can both add to this collection and consume features from the collection. Por exemplo, o StaticFileMiddleware acessa o recurso IHttpSendFileFeature.For example, the StaticFileMiddleware accesses the IHttpSendFileFeature feature. Se o recurso existir, ele será usado para enviar o arquivo estático solicitado de seu caminho físico.If the feature exists, it's used to send the requested static file from its physical path. Caso contrário, um método alternativo mais lento será usado para enviar o arquivo.Otherwise, a slower alternative method is used to send the file. Quando disponível, o IHttpSendFileFeature permite que o sistema operacional abra o arquivo e faça uma cópia direta de modo kernel para a placa de rede.When available, the IHttpSendFileFeature allows the operating system to open the file and perform a direct kernel mode copy to the network card.

Além disso, o middleware pode adicionar recursos à coleção de recursos estabelecida pelo servidor.Additionally, middleware can add to the feature collection established by the server. Os recursos existentes podem até mesmo ser substituídos pelo middleware, permitindo que o middleware aumente a funcionalidade do servidor.Existing features can even be replaced by middleware, allowing the middleware to augment the functionality of the server. Os recursos adicionados à coleção ficam disponíveis imediatamente para outro middleware ou para o próprio aplicativo subjacente posteriormente no pipeline de solicitação.Features added to the collection are available immediately to other middleware or the underlying application itself later in the request pipeline.

Combinando implementações personalizadas de servidor e melhorias específicas de middleware, o conjunto preciso de recursos exigido por um aplicativo pode ser construído.By combining custom server implementations and specific middleware enhancements, the precise set of features an application requires can be constructed. Isso permite que os recursos ausentes sejam adicionados, sem a necessidade de uma alteração no servidor, além de garantir que somente a quantidade mínima de recursos seja exposta, limitando a área da superfície de ataque e melhorando o desempenho.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.

ResumoSummary

As interfaces de recurso definem recursos HTTP específicos para os quais uma solicitação específica pode dar suporte.Feature interfaces define specific HTTP features that a given request may support. Os servidores definem coleções de recursos e o conjunto inicial de recursos compatíveis com o servidor, mas o middleware pode ser usado para aprimorar esses recursos.Servers define collections of features, and the initial set of features supported by that server, but middleware can be used to enhance these features.

Recursos adicionaisAdditional resources