Cos'è il Middleware?
Il middleware è software assemblato nelle pipeline applicative per gestire richieste e risposte. Ogni componente:
- Scegli se passare la richiesta al componente successivo della pipeline.
- Il lavoro può essere eseguito prima e dopo che il componente successivo della pipeline viene invocato.
I delegati di richiesta vengono utilizzati per costruire una pipeline di richieste che gestisce ogni richiesta HTTP.
I delegati delle richieste sono configurati utilizzando i metodi di estensione Run, Map e Use. Un delegato di richiesta separato può essere specificato in un metodo anonimo inline (chiamato middleware inline), oppure può essere definito in una classe riutilizzabile. Queste classi riutilizzabili e metodi di anonimizzazione inline sono middleware o componenti middleware. Ogni componente middleware nel flusso di richieste è responsabile di chiamare il componente successivo nella pipeline e, se opportuno, del corto circuito del collegamento.
La migrazione dei moduli HTTP al middleware spiega la differenza tra ASP.NET Core e le pipeline di richieste nelle versioni precedenti (ASP.NET) e fornisce altri esempi di middleware.
Usa IApplicationBuilder per creare una pipeline middleware
Il processo di richiesta ASP.NET Core consiste in una serie di delegati di richiesta, come mostrato nella figura seguente (il processo di esecuzione segue la freccia nera):
Ogni delegato può eseguire azioni prima e dopo il successivo. Il delegato può anche decidere di non passare la richiesta al delegato successivo, che viene chiamato cortocircuito nella pipeline di richiesta. Un cortocircuito è solitamente auspicabile perché evita lavori superflui. Ad esempio, un middleware di file statico può restituire una richiesta per un file statico e corcorcircuitare il resto della pipeline. I delegati di gestione delle eccezioni devono essere invocati nelle prime fasi della pipeline, così da poter individuare eccezioni nelle pipeline successive.
La cosa più semplice probabilmente è configurare un delegato ASP.NET applicazione Core per gestire tutte le richieste. Questo scenario non include la pipeline effettiva di richieste. Invece, viene chiamato un metodo anonimo per ogni richiesta HTTP.
La prima app. Run delegate termina la pipeline.
Esiste un codice come questo:
Accessibile tramite il browser, si scopre che è effettivamente presente nella prima app. Run termina la pipeline.
Puoi delegare più richieste con l'app. L'uso è collegato tra loro. Il parametro successivo rappresenta il delegato successivo nella pipeline. (Tieni presente che puoi terminare la pipeline non chiamando il parametro successivo.) Di solito puoi eseguire azioni prima e dopo la prossima delega, come mostrato nel seguente esempio:
Utilizzare un browser per accedere a risultati come:
Si può vedere che l'ordine di esecuzione del delegato della richiesta segue il diagramma di flusso sopra.
Nota:
Dopo che la risposta è stata inviata al cliente, non chiamare dopo. Evocare. Dopo l'inizio della risposta, le modifiche all'HttpResponse lancieranno un'eccezione. Ad esempio, impostare intestazioni di risposta, codici di stato, ecc. farà sparire un'eccezione. Scrivi il corpo della risposta dopo aver chiamato dopo.
può comportare una violazione dell'accordo. Ad esempio, scrivere più della lunghezza del contenuto descritta in lunghezza del contenuto.
La formattazione dei contenuti responsive può essere difettosa. Ad esempio, scrivi un footer HTML in un file CSS.
HttpResponse.HasStarted è un suggerimento utile per indicare se è stata inviata un'intestazione di risposta e/o se il corpo è stato scritto.
Middleware integrato
ASP.NET Core è dotato dei seguenti componenti middleware:
| Middleware | descrizione | | Autenticazione | È disponibile il supporto per l'autenticazione | | CORS | Configurare la condivisione delle risorse tra domini | | Cache di risposta | Il supporto per la risposta cache è disponibile | | Compressione di risposta | Fornire supporto per la compressione della risposta | | Instradamento | Definire e limitare l'instradamento delle richieste | | Sessione | Fornisce la gestione delle sessioni utente | | File statici | Fornisce supporto per la navigazione statica di file e directory | | Middleware di riscrittura degli URL | Usato per riscrivere URL e richiedere il supporto ai redirect |
|