Fonctionnalités de requête dans ASP.NET CoreRequest Features in ASP.NET Core

Par Steve SmithBy Steve Smith

Les détails d’implémentation d’un serveur web relatifs aux requêtes HTTP et aux réponses sont définis dans les interfaces.Web server implementation details related to HTTP requests and responses are defined in interfaces. Ces interfaces sont utilisées par les implémentations de serveur et les intergiciels (middleware) pour créer et modifier le pipeline d’hébergement de l’application.These interfaces are used by server implementations and middleware to create and modify the application's hosting pipeline.

Interfaces de fonctionnalitésFeature interfaces

ASP.NET Core définit un certain nombre d’interfaces de fonctionnalités HTTP dans Microsoft.AspNetCore.Http.Features. Ces interfaces sont utilisées par les serveurs pour identifier les fonctionnalités prises en charge.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. Les interfaces de fonctionnalités suivantes gèrent les requêtes et retournent des réponses :The following feature interfaces handle requests and return responses:

IHttpRequestFeature Définit la structure d’une requête HTTP, notamment le protocole, le chemin, la chaîne de requête, les en-têtes et le corps.IHttpRequestFeature Defines the structure of an HTTP request, including the protocol, path, query string, headers, and body.

IHttpResponseFeature Définit la structure d’une réponse HTTP, notamment le code d’état, les en-têtes et le corps de la réponse.IHttpResponseFeature Defines the structure of an HTTP response, including the status code, headers, and body of the response.

IHttpAuthenticationFeature Définit la prise en charge de l’identification des utilisateurs basée sur un ClaimsPrincipal et de la spécification d’un gestionnaire d’authentification.IHttpAuthenticationFeature Defines support for identifying users based on a ClaimsPrincipal and specifying an authentication handler.

IHttpUpgradeFeature Définit la prise en charge des mises à niveau HTTP, qui permettent au client de spécifier des protocoles supplémentaires qu’il veut utiliser si le serveur souhaite changer de protocole.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 Définit les méthodes permettant de désactiver la mise en mémoire tampon des requêtes et/ou des réponses.IHttpBufferingFeature Defines methods for disabling buffering of requests and/or responses.

IHttpConnectionFeature Définit les propriétés des adresses et ports locaux et distants.IHttpConnectionFeature Defines properties for local and remote addresses and ports.

IHttpRequestLifetimeFeature Définit la prise en charge de l’abandon de connexions, ou de la détection de l’arrêt prématuré d’une requête, par exemple en raison de la déconnexion d’un client.IHttpRequestLifetimeFeature Defines support for aborting connections, or detecting if a request has been terminated prematurely, such as by a client disconnect.

IHttpSendFileFeature Définit une méthode d’envoi de fichiers de façon asynchrone.IHttpSendFileFeature Defines a method for sending files asynchronously.

IHttpWebSocketFeature Définit une API pour la prise en charge de sockets web.IHttpWebSocketFeature Defines an API for supporting web sockets.

IHttpRequestIdentifierFeature Ajoute une propriété qui peut être implémentée pour identifier de façon unique des requêtes.IHttpRequestIdentifierFeature Adds a property that can be implemented to uniquely identify requests.

ISessionFeature Définit les abstractions ISessionFactory et ISession pour prendre en charge les sessions utilisateur.ISessionFeature Defines ISessionFactory and ISession abstractions for supporting user sessions.

ITlsConnectionFeature Définit une API pour la récupération de certificats clients.ITlsConnectionFeature Defines an API for retrieving client certificates.

ITlsTokenBindingFeature Définit des méthodes permettant d’utiliser des paramètres de liaison de jeton TLS.ITlsTokenBindingFeature Defines methods for working with TLS token binding parameters.

Notes

ISessionFeature n’est pas une fonctionnalité de serveur, mais est implémentée par SessionMiddleware (consultez Gestion de l’état de l’application).ISessionFeature isn't a server feature, but is implemented by the SessionMiddleware (see Managing Application State).

Collections de fonctionnalitésFeature collections

La propriété Features de HttpContext fournit une interface permettant d’obtenir et de définir les fonctionnalités HTTP disponibles pour la requête actuelle.The Features property of HttpContext provides an interface for getting and setting the available HTTP features for the current request. Étant donné que la collection de fonctionnalités est mutable même dans le contexte d’une requête, il est possible d’utiliser un intergiciel (middleware) pour modifier la collection et ajouter la prise en charge de fonctionnalités supplémentaires.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.

Intergiciel (middleware) et fonctionnalités de requêteMiddleware and request features

Alors que les serveurs sont chargés de créer la collection de fonctionnalités, l’intergiciel peut aussi bien ajouter des fonctionnalités à cette collection et consommer des fonctionnalités de celle-ci.While servers are responsible for creating the feature collection, middleware can both add to this collection and consume features from the collection. Par exemple, StaticFileMiddleware accède à la fonctionnalité IHttpSendFileFeature.For example, the StaticFileMiddleware accesses the IHttpSendFileFeature feature. Si la fonctionnalité existe, elle est utilisée pour envoyer le fichier statique demandé à partir de son chemin physique.If the feature exists, it's used to send the requested static file from its physical path. Sinon, une autre méthode plus lente est utilisée pour envoyer le fichier.Otherwise, a slower alternative method is used to send the file. Quand l’interface IHttpSendFileFeature est disponible, elle permet au système d’exploitation d’ouvrir le fichier et d’effectuer une copie directe en mode noyau sur la carte réseau.When available, the IHttpSendFileFeature allows the operating system to open the file and perform a direct kernel mode copy to the network card.

De plus, l’intergiciel peut effectuer des ajouts à la collection de fonctionnalités établie par le serveur.Additionally, middleware can add to the feature collection established by the server. Il est même possible de remplacer des fonctionnalités existantes par un intergiciel, ce qui permet à ce dernier d’augmenter les fonctionnalités du serveur.Existing features can even be replaced by middleware, allowing the middleware to augment the functionality of the server. Les fonctionnalités ajoutées à la collection sont disponibles immédiatement pour les autres intergiciels ou l’application sous-jacente elle-même plus loin dans le pipeline de requête.Features added to the collection are available immediately to other middleware or the underlying application itself later in the request pipeline.

La combinaison d’implémentations de serveurs personnalisées et d’améliorations spécifiques de l’intergiciel permet de construire l’ensemble précis de fonctionnalités qu’exige une application.By combining custom server implementations and specific middleware enhancements, the precise set of features an application requires can be constructed. Cela permet d’ajouter les fonctionnalités manquantes sans nécessiter un changement de serveur, et de s’assurer que seule la quantité minimale de fonctionnalités sont exposées, ce qui limite la zone de surface d’attaque et améliore les performances.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.

RécapitulatifSummary

Les interfaces de fonctionnalités définissent des fonctionnalités HTTP spécifiques qu’une requête donnée peut prendre en charge.Feature interfaces define specific HTTP features that a given request may support. Les serveurs définissent des collections de fonctionnalités et l’ensemble initial de fonctionnalités prises en charge par ce serveur, mais il est possible d’utiliser un intergiciel pour améliorer ces fonctionnalités.Servers define collections of features, and the initial set of features supported by that server, but middleware can be used to enhance these features.

Ressources supplémentairesAdditional resources