¿Qué es el Middleware?
El middleware es software que se ensambla en canales de aplicaciones para gestionar solicitudes y respuestas. Cada componente:
- Elige si pasas la petición al siguiente componente de la pipeline.
- El trabajo puede realizarse antes y después de invocar el siguiente componente en la pipeline.
Los delegados de petición se utilizan para construir una tubería de solicitudes que gestiona cada solicitud HTTP.
Los delegados de petición se configuran usando los métodos de extensión Run, Map y Use. Un delegado de solicitud separado puede especificarse en un método anónimo en línea (llamado middleware en línea), o puede definirse en una clase reutilizable. Estas clases reutilizables y métodos de anonimización en línea son middleware o componentes middleware. Cada componente middleware en el flujo de solicitudes es responsable de llamar al siguiente componente de la tubería y, si corresponde, de hacer un cortocircuito al enlace.
Migrar módulos HTTP a middleware explica la diferencia entre ASP.NET Core y las canalizaciones de peticiones en versiones anteriores (ASP.NET) y proporciona más ejemplos de middleware.
Utiliza IApplicationBuilder para crear una tubería de middleware
El proceso de solicitud ASP.NET Core consiste en una serie de delegados de solicitud, como se muestra en la siguiente figura (el proceso de ejecución sigue la flecha negra):
Cada delegado puede realizar acciones antes y después del siguiente delegado. El delegado también puede decidir no pasar la solicitud al siguiente delegado, lo que se denomina cortocircuito en la tubería de solicitudes. Un cortocircuito suele ser deseable porque evita trabajos innecesarios. Por ejemplo, el middleware de archivo estático puede devolver una petición para un archivo estático y hacer un cortocircuito en el resto de la canalización. Los delegados de gestión de excepciones deben ser invocados temprano en la pipeline, para que puedan detectar excepciones en pipelines posteriores.
Lo más sencillo probablemente sea configurar un delegado ASP.NET la aplicación Core para gestionar todas las solicitudes. Este escenario no incluye la pipeline de solicitudes en sí. En su lugar, se llama a un método anónimo para cada solicitud HTTP.
La primera app. Run delegate termina la pipeline.
Hay un código así:
Accedido desde el navegador, se descubre que efectivamente está en la primera aplicación. Run termina la canalización.
Puedes delegar varias solicitudes con la app. El uso está conectado. El siguiente parámetro representa al siguiente delegado en la pipeline. (Ten en cuenta que puedes terminar la tubería no llamando al siguiente parámetro.) Normalmente puedes realizar acciones antes y después de la siguiente delegación, como se muestra en el siguiente ejemplo:
Utilizar un navegador para acceder a resultados como:
Se puede ver que el orden de ejecución del delegado de la solicitud sigue el diagrama de flujo anterior.
Nota:
Después de enviar la respuesta al cliente, no llames después. Invoke。 Una vez que comienza la respuesta, los cambios en HttpResponse lanzarán una excepción. Por ejemplo, establecer encabezados de respuesta, códigos de estado, etc., generará una excepción. Escribe el cuerpo de la respuesta después de llamar después.
puede suponer un incumplimiento del acuerdo. Por ejemplo, escribir más de la longitud del contenido descrita en longitud de contenido.
El formato de contenido responsivo puede estar defectuoso. Por ejemplo, escribe un pie de página HTML en un archivo CSS.
HttpResponse.HasStarted es una pista útil para indicar si se ha enviado un encabezado de respuesta y/o si el cuerpo ha sido escrito.
Middleware integrado
ASP.NET Core incluye los siguientes componentes de middleware:
| Middleware | descripción | | Autenticación | Se ofrece soporte para autenticación | | CORS | Configurar el intercambio de recursos entre dominios | | Caché de respuesta | El soporte para respuesta en caché está disponible | | Compresión de respuesta | Proporcionar soporte para la compresión de respuesta | | Enrutamiento | Definir y restringir el enrutamiento de solicitudes | | Sesión | Proporciona gestión de sesiones de usuario | | Archivos estáticos | Proporciona soporte para la navegación estática de archivos y directorios | | Middleware de reescritura de URL | Se usaba para reescribir URLs y solicitar soporte para redirecciones |
|