Middleware en su aplicación .NET Core

Hola desarrolladores de .NET, para que todos conozcan el middleware de la aplicación .NET principal. En el mundo de .NET Core, el middleware actúa como un asistente detrás de escena, administrando el flujo de solicitudes y respuestas a través de una canalización dinámica, lo que garantiza que su aplicación impresione con velocidad y precisión. Resumen ¿Qué es el middleware? El middleware es un componente que se ejecuta automáticamente con cada solicitud. .NET Core ofrece middleware integrado, le permite agregar más a través de paquetes NuGet e incluso crear middleware personalizado. Básicamente, es un tipo de solicitud de filtro en el contexto de una aplicación web. El middleware se puede utilizar para varios propósitos, incluido el filtrado de solicitudes. Puede filtrar solicitudes según varios criterios. Por ejemplo, es posible que tenga middleware que verifique si un usuario está autenticado antes de permitirle el acceso a determinadas URL o ubicaciones. Al examinar estos atributos de las solicitudes entrantes, el middleware puede decidir si las permite, las rechaza, las modifica o las redirige antes de pasarlas a la lógica de la aplicación principal. Cada middleware se ejecuta secuencialmente y maneja colectivamente las solicitudes entrantes en el orden especificado. En versiones anteriores de .NET Core, la configuración del middleware se realizaba en el archivo Startup.cs. Sin embargo, en versiones posteriores, como .NET 6.0 y posteriores, se eliminó el archivo Startup.cs. En cambio, la configuración del middleware y otras tareas de configuración de la aplicación se combinaron en el archivo Program.cs para una mejor organización y claridad. Creemos una aplicación .NET Core. Cree un proyecto .NET Core. En el proyecto .NET Core, la estructura de carpetas se organiza con el archivo Startup.cs que contiene el método Configure, que incluye configuraciones para varios componentes de middleware integrados. public void Configure (aplicación IApplicationBuilder, entorno IWebHostEnvironment) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler(«/Inicio/Error»); aplicación.UseHsts(); } aplicación.UseHttpsRedirection(); aplicación.UseStaticFiles(); aplicación.UseRouting(); aplicación.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( nombre: «predeterminado», patrón: «{controller=Home}/{action=Index}/{id?}»); }); } Orden del middleware Los componentes del middleware se ejecutan en el orden en que se agregan. Es como crear una lista de tareas pendientes para su aplicación, asegurándose de que cada tarea se realice en el momento adecuado y en la secuencia correcta. El orden es importante porque cada middleware juega un papel específico y afecta el resultado de la respuesta. El primer middleware recibió la solicitud, la actualizó según fuera necesario y luego entregó el control al siguiente middleware. Del mismo modo, el primer middleware se ejecuta en último lugar durante el procesamiento de la respuesta. Por eso es importante contar primero con controladores de errores (middleware de manejo de excepciones) que puedan detectar cualquier problema y mostrarlo de una manera que sea fácil de entender para el usuario. Middleware personalizado Hablaremos sobre cómo crear middleware personalizado. ¿Cómo utilizar middleware personalizado en la canalización HTTP? Aunque ASP.NET tiene muchos middleware prediseñados, a veces necesitamos crear middleware personalizado para satisfacer nuestras necesidades específicas. Aquí estamos creando middleware personalizado para registrar solicitudes, por lo que no necesitamos escribir el registrador en cada acción. Pasos para crear middleware personalizado Crearemos una clase separada para implementar middleware personalizado. .NET core proporciona una clase de middleware para crear middleware personalizado, o puede crear una clase normal. En nuestra demostración usaremos la clase Middleware para la implementación. Primero, creamos una carpeta para el middleware de nuestro proyecto para mantener la estructura del proyecto. Haga clic derecho en esa carpeta> Agregar> Nuevo elemento como se muestra a continuación. Esto abrirá un nuevo modo para seleccionar elementos o plantillas, seleccione Clase de middleware y agregue. Una vez agregado, creará una clase con el siguiente código: usando Microsoft.AspNetCore.Builder; utilizando Microsoft.AspNetCore.Http; usando System.Threading.Tasks; namespace MiddlewareChecking.Middleware { // Es posible que necesites instalar el paquete Microsoft.AspNetCore.Http.Abstractions en tu proyecto public class RequestLogMiddleware { private readonly RequestDelegate _next; public RequestLogMiddleware(siguiente RequestDelegate) { _siguiente = siguiente; } Invocación de tarea pública (HttpContext httpContext) { return _next(httpContext); } } // Método de extensión utilizado para agregar middleware a la canalización de solicitudes HTTP. clase estática pública RequestLogMiddlewareExtensions { IApplicationBuilder estática pública UseRequestLogMiddleware (este constructor IApplicationBuilder) { constructor de retorno.UseMiddleware(); } } } En esta demostración, estoy creando un middleware personalizado para solicitudes de registro. El código actualizado incluye la implementación para registrar métodos de solicitud únicamente, excluyendo archivos CSS, imágenes y JS. usando Microsoft.AspNetCore.Builder; utilizando Microsoft.AspNetCore.Http; usando Microsoft.Extensions.Logging; usando System.Threading.Tasks; espacio de nombres MiddlewareChecking.Middleware { clase pública RequestLogMiddleware { solo lectura privada RequestDelegate _next; ILogger privado de solo lectura _logger; RequestLogMiddleware público (siguiente RequestDelegate, ILogger registrador) { _siguiente = siguiente; _logger = grabador; } Obtener tarea asíncrona pública (HttpContext httpContext) { if (!IsStaticFileRequest(httpContext.Request.Path)) { _logger.LogInformation(«Solicitud recibida: {Método} {Ruta}», httpContext.Request.Method, httpContext.Request.Path ); await_next(httpContext); _logger.LogInformation(«Respuesta enviada: {StatusCode}», httpContext.Response.StatusCode); } } private bool IsStaticFileRequest(PathString ruta) { cadena[] staticFileExtensions = { «.css», «.js», «.jpg», «.jpeg», «.png», «.gif», «.ico» }; cadena rutaCadena = ruta.Value.ToLower(); foreach (var de extensión en staticFileExtensions) { if (pathString.EndsWith(extensión)) { return true; } } falso retorno; } } // Método de extensión utilizado para agregar middleware a la canalización de solicitudes HTTP. clase estática pública RequestLogMiddlewareExtensions { IApplicationBuilder estática pública UseRequestLogMiddleware (este constructor IApplicationBuilder) { constructor de retorno.UseMiddleware(); } } } Arriba está el código para middleware personalizado, puede crear cualquier tipo de middleware personalizado como manejo de excepciones, middleware de sesión según el requisito. Usar middleware personalizado en la canalización HTTP Puede usar este middleware personalizado en la canalización HTTP en el archivo Startup.cs. Como se muestra a continuación, Conclusión ASP.NET Core Middleware es una característica poderosa que permite a los desarrolladores manejar solicitudes y respuestas HTTP en el orden correcto. Al crear componentes de Middleware personalizados, podemos agregar lógica personalizada según los requisitos, modificar solicitudes y procesar respuestas para que la aplicación web funcione tal como ellos desean. Después de leer esta publicación, si desea experimentar el potencial del middleware ASP.NET Core, nuestro equipo de desarrolladores .NET capacitados se especializa en la creación de componentes de middleware personalizados adaptados a sus necesidades específicas. Por lo tanto, contrate desarrolladores .NET de The One Technologies y simplifique el manejo de solicitudes HTTP, mejore la experiencia del usuario y optimice el rendimiento. Se pueden encontrar más ejemplos en este enlace: https://blog.stackademic.com/how-to-create-and-use-the-custom-middleware-in-net-core-8516e9884abf Acerca del autor Pratiksha Pansara es un experto sr. Desarrollador .NET con pasión por el aprendizaje y el crecimiento continuo. Desde mayo de 2019, ha emprendido un viaje de superación personal, perfeccionando constantemente sus habilidades y ampliando su base de conocimientos para servir mejor a sus clientes. Con un gran interés en el marco .NET y las tecnologías relacionadas, Pratiksha aspira a elevar su experiencia y profundizar en el mundo del desarrollo Angular. Con amplia experiencia en .NET, está lista para liderar proyectos impactantes e impulsar la innovación en el campo.

About Francisco

Check Also

Apollo GraphQL anuncia una importante actualización de GraphOS, que mejora la observabilidad y el rendimiento de la federación GraphQL a escala empresarial

Hoy en PlatformCon, Apollo GraphQL, el creador de la federación GraphQL, anunció que las nuevas …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *