Co je to middleware?
Middleware je software, který je sestaven do aplikačních pipeline pro zpracování požadavků a odpovědí. Každá složka:
- Zvolit, zda požadavek předat další komponentě v pipeline.
- Práce může být provedena před i po spuštění další komponenty v pipeline.
Delegáti požadavků se používají k vytvoření pipeline požadavků, která zpracovává každý HTTP požadavek.
Delegáti požadavků jsou konfigurováni pomocí metod rozšíření Run, Map, and Use. Samostatný delegát požadavků může být specifikován v anonymní metodě (nazývané inline middleware), nebo může být definován v opakovaně použitelné třídě. Tyto znovupoužitelné třídy a metody inline anonymizace jsou middleware nebo middleware komponenty. Každá middleware komponenta v toku požadavků je odpovědná za volání další komponenty v pipeline a v případě potřeby za zkrat linky.
Migrace HTTP modulů do middleware vysvětluje rozdíl mezi ASP.NET Core a požadovými pipeline v předchozích verzích (ASP.NET) a poskytuje více příkladů middleware.
Použijte IApplicationBuilder k vytvoření middleware pipeline
Proces požadavků ASP.NET Core se skládá ze série delegátů požadavků, jak je znázorněno na následujícím obrázku (proces vykonání následuje černou šipku):
Každý delegát může provádět akce před a po dalším delegátovi. Delegát se také může rozhodnout, že požadavek nepředá dalšímu delegátovi, což se nazývá zkrat v pipeline požadavků. Zkrat je obvykle žádoucí, protože se vyhne zbytečné práci. Například statický souborový middleware může vrátit požadavek na statický soubor a zkratovat zbytek pipeline. Delegáti pro zpracování výjimek je třeba volat brzy v pipeline, aby mohli zachytit výjimky v pozdějších pipeline.
Nejjednodušší je pravděpodobně nastavit delegáta ASP.NET hlavní aplikaci, který bude zpracovávat všechny požadavky. Tento scénář nezahrnuje samotný požadavkový pipeline. Místo toho je pro každý HTTP požadavek volána anonymní metoda.
První aplikace. Run Delegate ukončí pipeline.
Existuje kód jako tento:
Po přístupu přes prohlížeč se zjistilo, že je skutečně v první aplikaci. Run ukončí pipeline.
V aplikaci můžete delegovat více požadavků. Užití je propojené. Další parametr představuje dalšího delegáta v pipeline. (Mějte na paměti, že pipeline můžete ukončit tím, že nevoláte další parametr.) Obvykle můžete provádět akce před a po další delegaci, jak je ukázáno v následujícím příkladu:
Používání prohlížeče pro přístup k výsledkům, jako jsou:
Je vidět, že pořadí vykonávání delegáta požadavku odpovídá výše uvedenému diagramu.
Poznámka:
Poté, co je odpověď odeslána klientovi, nevolejte příště. Invoke。 Po zahájení odpovědi změny v HttpResponse vyhodí výjimku. Například nastavení hlaviček odpovědí, stavových kódů atd. vyhodí výjimku. Po dalším volání napište tělo odpovědi.
může vést k porušení dohody. Například psaní delší než délka obsahu popsaná v obsahové délce.
Responzivní formátování obsahu může být rozbité. Například napište HTML patu do CSS souboru.
HttpResponse.HasStarted je užitečná nápověda, která ukazuje, zda byla odeslána hlavička odpovědi a/nebo zda bylo napsáno tělo odpovědi.
Vestavěný middleware
ASP.NET Core obsahuje následující middleware komponenty:
| Middleware | popis | | Autentizace | Podpora autentizace je k dispozici | | CORS | Konfigurace sdílení zdrojů napříč doménami | | Cache odezvy | Podpora cache response je k dispozici | | Komprese odezvy | Podpora komprese odezvy | | Směrování | Definujte a omezte směrování požadavků | | Zasedání | Poskytuje správu uživatelských relací | | Statické soubory | Poskytuje podporu pro prohlížení statických souborů a adresářů | | Middleware pro přepisování URL | Používá se k přepsání URL a žádosti o podporu přesměrování |
|