Ce este Middleware-ul?
Middleware-ul este software asamblat în pipeline-uri de aplicații pentru a gestiona cererile și răspunsurile. Fiecare componentă:
- Alege dacă să treci cererea către următoarea componentă din pipeline.
- Lucrările pot fi efectuate înainte și după ce următoarea componentă din pipeline este invocată.
Delegații de solicitare sunt folosiți pentru a construi un pipeline de cereri care gestionează fiecare cerere HTTP.
Delegații de cerere sunt configurați folosind metodele de extensie Run, Map și Use. Un delegat de cerere separat poate fi specificat într-o metodă anonimă inline (numită middleware inline) sau poate fi definit într-o clasă reutilizabilă. Aceste clase reutilizabile și metode de anonimizare în linie sunt middleware sau componente middleware. Fiecare componentă middleware din fluxul de cereri este responsabilă pentru apelarea următoarei componente din conductă și, dacă este cazul, pentru scurtcircuitul legăturii.
Migrarea modulelor HTTP către middleware explică diferența dintre ASP.NET Core și pipeline-urile de cereri în versiunile anterioare (ASP.NET) și oferă mai multe exemple de middleware.
Folosește IApplicationBuilder pentru a crea un pipeline middleware
Procesul de cerere ASP.NET Core constă dintr-o serie de delegați de cerere, așa cum este ilustrat în figura următoare (procesul de execuție urmează săgeata neagră):
Fiecare delegat poate efectua acțiuni înainte și după următorul delegat. Delegatul poate decide, de asemenea, să nu transmită cererea către următorul delegat, ceea ce se numește scurtcircuite în pipeline-ul de solicitare. Un scurtcircuit este de obicei de dorit deoarece evită munca inutilă. De exemplu, middleware-ul pentru fișiere statice poate returna o cerere pentru un fișier static și poate scurtcircuita restul pipeline-ului. Delegații care gestionează excepțiile trebuie invocați devreme în pipeline, pentru a putea detecta excepțiile în pipeline-urile ulterioare.
Cel mai simplu lucru este probabil să configurezi un delegat ASP.NET aplicația Core pentru a gestiona toate cererile. Acest scenariu nu include pipeline-ul efectiv de solicitări. În schimb, pentru fiecare cerere HTTP este apelată o metodă anonimă.
Prima aplicație. Run delegate încheie pipeline-ul.
Există un cod de genul acesta:
Accesat prin browser, se constată că este într-adevăr în prima aplicație. Run termină conducta.
Poți delega mai multe cereri prin aplicație. Utilizarea este conectată între ele. Următorul parametru reprezintă următorul delegat din pipeline. (Ține cont că poți încheia pipeline-ul dacă nu apelezi următorul parametru.) De obicei poți efectua acțiuni înainte și după următoarea delegare, așa cum se arată în următorul exemplu:
Utilizarea unui browser pentru a accesa rezultate precum:
Se poate observa că ordinea de execuție a delegatului solicitării urmează diagrama de flux de mai sus.
Notă:
După ce răspunsul este trimis clientului, nu mai suna. Invoke。 După ce răspunsul începe, modificările aduse HttpResponse vor arunca o excepție. De exemplu, setarea anteturilor de răspuns, a codurilor de stare etc. va genera o excepție. Scrie corpul răspunsului după ce suni următorul.
poate duce la încălcarea acordului. De exemplu, scrierea mai mare decât lungimea conținutului descrisă în lungimea conținutului.
Formatarea conținutului responsive poate fi defectă. De exemplu, scrie un footer HTML într-un fișier CSS.
HttpResponse.HasStarted este un indiciu util pentru a indica dacă a fost trimis un antet de răspuns și/sau corpul a fost scris.
Middleware încorporat
ASP.NET Core vine cu următoarele componente middleware:
| Middleware | descriere | | Autentificare | Este disponibil suport pentru autentificare | | CORS | Configurarea partajării resurselor între domenii | | Caching de răspunsuri | Suportul pentru răspunsuri cache este disponibil | | Compresia răspunsului | Oferă suport pentru compresia răspunsului | | Rutare | Definirea și constrângerea rutării cererilor | | Sesiune | Oferă management al sesiunilor utilizatorului | | Fișiere statice | Oferă suport pentru navigarea statică a fișierelor și a directoarelor | | Middleware-ul pentru rescrierea URL-urilor | Folosit pentru a rescrie URL-uri și a solicita suport pentru redirecționări |
|