Funzionalità di richiesta in ASP.NET CoreRequest Features in ASP.NET Core

Di Steve SmithBy Steve Smith

I dettagli dell'implementazione di server Web relativi alle richieste e alle risposte HTTP vengono definiti nelle interfacce.Web server implementation details related to HTTP requests and responses are defined in interfaces. Le interfacce vengono usate dalle implementazioni del server e dal middleware per creare e modificare la pipeline di hosting dell'applicazione.These interfaces are used by server implementations and middleware to create and modify the application's hosting pipeline.

Interfacce di funzionalitàFeature interfaces

ASP.NET Core definisce diverse interfacce di funzionalità HTTP in Microsoft.AspNetCore.Http.Features che vengono usate dai server per identificare le funzionalità supportate.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. Le interfacce di funzionalità seguenti gestiscono le richieste e restituiscono le risposte:The following feature interfaces handle requests and return responses:

IHttpRequestFeature Definisce la struttura di una richiesta HTTP, inclusi protocollo, percorso, stringa di query, intestazioni e corpo.IHttpRequestFeature Defines the structure of an HTTP request, including the protocol, path, query string, headers, and body.

IHttpResponseFeature Definisce la struttura di una risposta HTTP, inclusi codice di stato, intestazioni e corpo della risposta.IHttpResponseFeature Defines the structure of an HTTP response, including the status code, headers, and body of the response.

IHttpAuthenticationFeature Definisce il supporto per identificare gli utenti in base a un oggetto ClaimsPrincipal e specificare un gestore di autenticazione.IHttpAuthenticationFeature Defines support for identifying users based on a ClaimsPrincipal and specifying an authentication handler.

IHttpUpgradeFeature Definisce il supporto per gli aggiornamenti HTTP, che consentono al client di specificare protocolli aggiuntivi da usare se il server vuole cambiare i protocolli.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 Definisce metodi per la disattivazione del buffering di richieste e/o risposte.IHttpBufferingFeature Defines methods for disabling buffering of requests and/or responses.

IHttpConnectionFeature Definisce le proprietà per porte e indirizzi locali e remoti.IHttpConnectionFeature Defines properties for local and remote addresses and ports.

IHttpRequestLifetimeFeature Definisce il supporto per l'interruzione delle connessioni o per rilevare se una richiesta è stata terminata in modo anomalo, ad esempio da una disconnessione del client.IHttpRequestLifetimeFeature Defines support for aborting connections, or detecting if a request has been terminated prematurely, such as by a client disconnect.

IHttpSendFileFeature Definisce un metodo per l'invio di file in modo asincrono.IHttpSendFileFeature Defines a method for sending files asynchronously.

IHttpWebSocketFeature Definisce un'API per il supporto di WebSocket.IHttpWebSocketFeature Defines an API for supporting web sockets.

IHttpRequestIdentifierFeature Aggiunge una proprietà che può essere implementata per identificare le richieste in modo univoco.IHttpRequestIdentifierFeature Adds a property that can be implemented to uniquely identify requests.

ISessionFeature Definisce le astrazioni ISessionFactory e ISession per supportare le sessioni utente.ISessionFeature Defines ISessionFactory and ISession abstractions for supporting user sessions.

ITlsConnectionFeature Definisce un'API per il recupero dei certificati client.ITlsConnectionFeature Defines an API for retrieving client certificates.

ITlsTokenBindingFeature Definisce i metodi per l'uso di parametri di associazione dei token TLS.ITlsTokenBindingFeature Defines methods for working with TLS token binding parameters.

Nota

ISessionFeature non è una funzionalità server, ma viene implementato da SessionMiddleware. Vedere Stato di sessioni e app.ISessionFeature isn't a server feature, but is implemented by the SessionMiddleware (see Managing Application State).

Raccolte di funzionalitàFeature collections

La proprietà Features di HttpContext specifica un'interfaccia per ottenere e impostare le funzionalità HTTP disponibili per la richiesta corrente.The Features property of HttpContext provides an interface for getting and setting the available HTTP features for the current request. Poiché l'insieme di funzionalità è modificabile anche all'interno del contesto di una richiesta, è possibile usare il middleware per modificare la raccolta e aggiungere il supporto di altre funzionalità.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 funzionalità di richiestaMiddleware and request features

Anche se sono i server a creare la raccolta di funzionalità, il middleware può sia aggiungere che togliere funzionalità alla raccolta.While servers are responsible for creating the feature collection, middleware can both add to this collection and consume features from the collection. Ad esempio, l'elemento StaticFileMiddleware accede alla funzionalità IHttpSendFileFeature.For example, the StaticFileMiddleware accesses the IHttpSendFileFeature feature. Se la funzionalità è presente, viene usata per inviare il file statico richiesto dal percorso fisico relativo.If the feature exists, it's used to send the requested static file from its physical path. In caso contrario, per inviare il file viene usato un metodo alternativo più lento.Otherwise, a slower alternative method is used to send the file. Quando è disponibile, IHttpSendFileFeature consente al sistema operativo di aprire il file ed eseguire una copia in modalità kernel diretta alla scheda di rete.When available, the IHttpSendFileFeature allows the operating system to open the file and perform a direct kernel mode copy to the network card.

Il middleware può anche eseguire aggiunte alla raccolta di funzionalità impostata dal server.Additionally, middleware can add to the feature collection established by the server. Il middleware può anche sostituire funzionalità esistenti, aumentando così la funzionalità del server.Existing features can even be replaced by middleware, allowing the middleware to augment the functionality of the server. Le funzionalità aggiunte alla raccolta sono disponibili immediatamente per un altro middleware o per l'applicazione sottostante in un secondo momento nella pipeline della richiesta.Features added to the collection are available immediately to other middleware or the underlying application itself later in the request pipeline.

Combinando implementazioni server personalizzate e miglioramenti specifici del middleware, è possibile costruire il set di funzionalità preciso richiesto da un'applicazione.By combining custom server implementations and specific middleware enhancements, the precise set of features an application requires can be constructed. In questo modo è possibile aggiungere le funzionalità mancanti senza che siano necessarie modifiche nel server e garantire che venga esposta solo una quantità minima di funzionalità, limitando in tal modo la superficie di attacco e migliorando le prestazioni.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.

SummarySummary

Le interfacce di funzionalità definiscono funzionalità HTTP specifiche supportate da una data richiesta.Feature interfaces define specific HTTP features that a given request may support. I server definiscono le raccolte di funzionalità e il set iniziale di funzionalità supportato dal server, ma è possibile usare il middleware per migliorare tali funzionalità.Servers define collections of features, and the initial set of features supported by that server, but middleware can be used to enhance these features.

Risorse aggiuntiveAdditional resources