es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué se implementa WelcomePage de esa manera?

Tomemos como ejemplo un middleware muy simple, que es el WelcomePageMiddleWare. Si queremos utilizarlo, necesitamos agregar la línea app.UseWelcomePage() al método Configure de la clase Startup.
Al analizar el código fuente de ASP.NET Core, descubrí que el método UseWelcomePage() es un método de extensión de IApplicationBuilder como se muestra aquí: https://github.com/dotnet/aspnetcore/blob/a450cb69b5e4549f5515cdb057a68771f56cefd7/src/Middleware/Diagnostics/src/WelcomePage/WelcomePageExtensions.cs#L79

Ese método llama a otro método de extensión: app.UseMiddleware<welcomepagemiddleware>(), y UseMiddleware<t> es otro método de extensión más.

Pregunta: ¿Por qué tenemos estos dos niveles? ¿Por qué no simplemente tener un solo método de extensión en IApplicationBuilder que contenga toda la implementación?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Tener dos niveles de métodos de extensión permite una mejor modularidad y reutilización. El método de nivel superior UseWelcomePage() sirve como una abstracción de alto nivel que proporciona una API más legible y amigable para que los desarrolladores agreguen el middleware a su canalización. Mientras tanto, el método de nivel inferior UseMiddleware<t>() proporciona una implementación más de bajo nivel que se puede reutilizar en otros middleware.

    Por ejemplo, otros middleware pueden querer usar el método UseMiddleware<t>() pero con una implementación diferente de T. Al tener un método separado y reutilizable UseMiddleware<t>(), la implementación de WelcomePageMiddleware se puede mantener separada y no interferir con otras implementaciones de middleware.

    Además, el método UseMiddleware<t>() también puede aceptar parámetros adicionales para personalizar la canalización de middleware, como opciones para configurar el comportamiento del middleware. Esto permite una canalización de middleware más flexible y extensible.

    En resumen, los dos niveles de métodos de extensión proporcionan una mejor modularidad, reutilización y flexibilidad para construir middleware en ASP.NET Core.

Comments are closed.