Wat is Middleware?
Middleware is software die wordt samengesteld in applicatiepijplijnen om verzoeken en antwoorden af te handelen. Elk onderdeel:
- Kies of je het verzoek doorgeeft aan de volgende component in de pijplijn.
- Werk kan worden uitgevoerd vóór en na het aanroepen van de volgende component in de pijplijn.
Requestdelegates worden gebruikt om een requestpipeline op te bouwen die elk HTTP-verzoek afhandelt.
Requestdelegates worden geconfigureerd met behulp van de extensiemethoden Run, Map en Use. Een aparte requestdelegate kan worden gespecificeerd in een inline anonieme methode (inline middleware genoemd), of het kan worden gedefinieerd in een herbruikbare klasse. Deze herbruikbare klassen en inline anonimisatiemethoden zijn middleware of middlewarecomponenten. Elke middlewarecomponent in de request flow is verantwoordelijk voor het aanroepen van de volgende component in de pipeline en, indien van toepassing, de kortsluiting van de link.
Het migreren van HTTP-modules naar middleware legt het verschil uit tussen ASP.NET Core en request pipelines in eerdere versies (ASP.NET) en biedt meer voorbeelden van middleware.
Gebruik IApplicationBuilder om een middleware-pipeline te maken
Het ASP.NET Core-verzoekproces bestaat uit een reeks verzoekdelegates, zoals weergegeven in de volgende figuur (het uitvoeringsproces volgt de zwarte pijl):
Elke afgevaardigde kan acties uitvoeren vóór en na de volgende afgevaardigde. De delegate kan ook besluiten het verzoek niet door te geven aan de volgende delegate, wat een kortsluiting in de request pipeline wordt genoemd. Een kortsluiting is meestal wenselijk omdat het onnodig werk voorkomt. Bijvoorbeeld, statische bestandsmiddleware kan een verzoek voor een statisch bestand teruggeven en de rest van de pijplijn kortsluiten. Uitzonderingsbehandelingsdelegates moeten vroeg in de pijplijn worden aangeroepen, zodat ze uitzonderingen in latere pijplijnen kunnen opvangen.
Het eenvoudigste is waarschijnlijk om een delegate ASP.NET de Core-applicatie in te stellen die alle verzoeken afhandelt. Dit scenario omvat niet de daadwerkelijke aanvraagpijplijn. In plaats daarvan wordt voor elk HTTP-verzoek een anonieme methode aangeroepen.
De eerste app. Run delegate beëindigt de pipeline.
Er is code zoals deze:
Via de browser wordt geraadpleegd en blijkt dat het inderdaad in de eerste app zit. Run beëindigt de pijplijn.
Je kunt meerdere verzoeken delegeren via de app. Gebruik is met elkaar verbonden. De volgende parameter vertegenwoordigt de volgende delegate in de pipeline. (Houd er rekening mee dat je de pijplijn kunt beëindigen door de volgende parameter niet aan te roepen.) Je kunt meestal acties uitvoeren vóór en na de volgende delegatie, zoals te zien is in het volgende voorbeeld:
Een browser gebruiken om resultaten te bekijken zoals:
Het is duidelijk dat de uitvoeringsvolgorde van de requestdelegate het bovenstaande stroomdiagram volgt.
Notitie:
Nadat het antwoord naar de klant is gestuurd, bel dan niet meer. Invoke。 Nadat de reactie is gestart, zullen wijzigingen in de HttpResponse een uitzondering opleveren. Bijvoorbeeld, het instellen van responsheaders, statuscodes, enzovoort zal een uitzondering geven. Schrijf de antwoordtekst nadat je daarna hebt gebeld.
kan leiden tot een schending van de overeenkomst. Bijvoorbeeld schrijven over meer dan de inhoudslengte die in inhoudslengte wordt beschreven.
De opmaak van responsieve inhoud kan defect zijn. Schrijf bijvoorbeeld een HTML-voettekst in een CSS-bestand.
httpResponse.HasStarted is een nuttige hint om aan te geven of er een responsheader is verzonden en/of de tekst is geschreven.
Ingebouwde middleware
ASP.NET Core wordt geleverd met de volgende middlewarecomponenten:
| Middleware | beschrijving | | Authenticatie | Authenticatieondersteuning is beschikbaar | | CORS | Configureer domeinoverschrijdende resource sharing | | Responscaching | Ondersteuning voor cache-respons is beschikbaar | | Responscompressie | Ondersteuning bieden voor responscompressie | | Routering | Definieer en beperk de routering van verzoeken | | Sessie | Biedt gebruikerssessiebeheer | | Statische bestanden | Biedt ondersteuning voor statisch zoeken in bestanden en mappen | | URL herschrijfmiddelware | Gebruikt om URL's te herschrijven en ondersteuning voor redirects aan te vragen |
|