Kaj je vmesna programska oprema?
Middleware je programska oprema, ki se sestavi v aplikacijske cevovode za obdelavo zahtevkov in odgovorov. Vsaka komponenta:
- Izvolite, ali boste zahtevo posredovali naslednji komponenti v cevovodu.
- Delo je mogoče opraviti pred in po klicu naslednje komponente v cevovodu.
Delegati zahtevkov se uporabljajo za gradnjo cevovoda zahtev, ki obravnava vsak HTTP zahtevek.
Delegati zahtevkov se konfigurirajo z metodami razširitev Run, Map in Use. Ločenega delegata zahtev je mogoče določiti v anonimni metodi v inline (imenovani inline middleware) ali pa ga je mogoče definirati v ponovno uporabnem razredu. Ti ponovno uporabni razredi in metode inline anonimizacije so vmesna ali vmesna programska oprema. Vsaka komponenta vmesne programske opreme v toku zahtevkov je odgovorna za klic naslednje komponente v cevovodu in, če je primerno, za kratek stik v povezavi.
Migracija HTTP modulov v vmesno programsko opremo pojasnjuje razliko med ASP.NET Core in cevovoidi zahtev v prejšnjih različicah (ASP.NET) ter ponuja več primerov vmesne programske opreme.
Uporabite IApplicationBuilder za ustvarjanje pipeline middleware
Postopek zahtev ASP.NET Core je sestavljen iz serije delegatov zahtev, kot je prikazano na naslednji sliki (postopek izvajanja sledi črni puščici):
Vsak delegat lahko izvede dejanja pred in po naslednjem delegatu. Delegat se lahko tudi odloči, da zahteve ne posreduje naslednjemu delegatu, kar imenujemo kratki stik v cevovodu zahtev. Kratek stik je običajno zaželen, ker se izogne nepotrebnemu delu. Na primer, statična vmesna programska oprema za datoteke lahko vrne zahtevo za statično datoteko in povzroči kratek stik v preostalem cevovodu. Delegate za obravnavo izjem je treba poklicati zgodaj v cevovodu, da lahko ujamejo izjeme v kasnejših cevovodah.
Najpreprostejše je verjetno nastaviti delegata ASP.NET osnovno aplikacijo, ki bo obravnaval vse zahteve. Ta scenarij ne vključuje dejanskega toka zahtev. Namesto tega se za vsak HTTP zahtevek kliče anonimna metoda.
Prva aplikacija. Run delegate prekine cevovod.
Obstaja takšen kodeks:
Ko dostopamo prek brskalnika, ugotovimo, da je res v prvi aplikaciji. Run prekine cevovod.
Z aplikacijo lahko delegirate več zahtev. Uporaba je povezana. Naslednji parameter predstavlja naslednjega delegata v cevovodu. (Upoštevajte, da lahko cevovod zaključite tako, da ne kličete naslednjega parametra.) Običajno lahko izvedete dejanja pred in po naslednji delegaciji, kot je prikazano v naslednjem primeru:
Uporaba brskalnika za dostop do rezultatov, kot so:
Vidimo lahko, da vrstni red izvajanja delegata zahteve sledi zgornjemu diagramu poteka.
Opomba:
Ko je odgovor poslan stranki, ne kliči naslednjega. Invoke。 Ko se odgovor začne, spremembe v HttpResponse sprožijo izjemo. Na primer, nastavitev glav odzivov, statusnih kod itd. bo vrgla izjemo. Napišite odgovor po naslednjem klicu.
lahko privede do kršitve dogovora. Na primer, pisanje daljše od dolžine vsebine, opisane v dolžini vsebine.
Odzivno oblikovanje vsebin je lahko pokvarjeno. Na primer, zapišite HTML podnožje v CSS datoteko.
HttpResponse.HasStarted je uporaben namig, ki nakazuje, ali je bila glava odgovora poslana in/ali je telo napisano.
Vgrajena vmesna programska oprema
ASP.NET Core vsebuje naslednje komponente vmesne programske opreme:
| Middleware | opis | | Avtentikacija | Podpora za avtentikacijo je na voljo | | CORS | Konfiguracija izmenjave virov med domenami | | Predpomnjenje odziva | Podpora za odziv predpomnilnika je na voljo | | Odzivna kompresija | Zagotavljanje podpore za kompresijo odziva | | Usmerjanje | Definirajte in omejite usmerjanje zahtevkov | | Seja | Omogoča upravljanje uporabniških sej | | Statične datoteke | Omogoča podporo za brskanje po statičnih datotekah in mapah | | Vmesna programska oprema za prepisovanje URL-jev | Uporablja se za prepisovanje URL-jev in zahtevo po podpori preusmeritev |
|