Quantcast
Channel: Planeta Código
Viewing all articles
Browse latest Browse all 2713

Variable not found: AddMvc(), AddControllers(), AddControllersWithViews(), AddRazorPages()... ¿qué es todo eso?

$
0
0
ASP.NET Core Como sabemos, hasta ASP.NET Core 2.2, registrábamos los servicios de MVC y Razor Pages en el método ConfigureServices() de la clase Startup con una línea como la siguiente:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
...
}
Esto era todo lo que necesitábamos para poder utilizar cualquiera de estas tecnologías en nuestra aplicación. Sin embargo, a partir de ASP.NET Core 3.0, nuestro intellisense se vio inundado de opciones adicionales como AddControllers(), AddRazorPages() AddControllersWithViews().

¿Para qué sirven, y por qué ha sido necesario introducir estos nuevos extensores?

En busca de la modularidad

Desde sus comienzos, ASP.NET Core fue presentado como un framework modular, huyendo de monolitos como ASP.NET "clásico", en el que todas las funcionalidades estaban incrustadas en System.Web y no había forma de utilizarlas de forma separada.

Sin embargo, la forma de registrar los servicios que hemos visto arriba, llamando a services.AddMvc(), no parecía demasiado alineada con esa intención inicial. Esta llamada registraba todos los servicios relativos a la gestión de vistas MVC, así como a las páginas Razor. Aunque nuestra aplicación fuera únicamente en una API y no tuviese vistas, estábamos registrando bastantes servicios que no íbamos a necesitar.

Lo mismo ocurría si nuestra aplicación era MVC puro. Estábamos registrando servicios de Razor Pages que tampoco necesitaríamos. Y viceversa, en aplicaciones en cuya presentación usábamos únicamente páginas Razor estábamos introduciendo servicios propios de MVC.

Este aspecto es el que se solventa mediante la inclusión de esos nuevos extensores de IServiceCollection.
  • AddControllers() registra los servicios absolutamente necesarios para que funcionen los controladores, y nada relativo a vistas o páginas Razor. Esto incluye los servicios de autorización, soporte para formateadores, CORS, anotaciones de datos, el application model, mecanismos de selección de acciones, servicios de binding, etc.
    Este el método de registro ideal para backends que sólo actúan como API.
  • AddControllersWithViews() registra adicionalmente los servicios requeridos para poder ejecutar vistas MVC. Aparte de los servicios añadidos por AddControllers(), registra el soporte para vistas, helpers, view engines, Razor y algunos tag helpers básicos.
    Este es el extensor que debemos elegir si nuestra aplicación utiliza todas las piezas del MVC "tradicional".
  • AddRazorPages() introduce en el contenedor de dependencias los servicios necesarios para ejecutar Razor Pages, pero no vistas MVC. Curiosamente, también registra los servicios de controladores porque internamente Razor Pages está montado sobre MVC y se basa en algunas de sus funcionalidades.
    Es la opción ideal si vamos a programar las páginas de nuestro sitio web utilizando esta tecnología.
Estos métodos pueden combinarse de forma que sumemos posibilidades. Por ejemplo, el siguiente código registraría los servicios para una aplicación en la que utilizaremos vistas MVC y Razor Pages:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews()
.AddRazorPages();
...
}
Por último, es importante saber que AddMvc() sigue funcionando como en versiones anteriores. De hecho, internamente llama consecutivamente a AddControllersWithViews() y a AddRazorPages(), por lo que sería equivalente al código anterior. Milagros de la retrocompatibilidad ;)

Publicado en Variable not found.

Viewing all articles
Browse latest Browse all 2713

Trending Articles


OFW quotes : Pinoy Tagalog Quotes


Sapos para colorear


Break up Quotes Tagalog Love Quote – Broken Hearted Quotes Tagalog


Long Distance Relationship Tagalog Love Quotes


5 Tagalog Relationship Rules


INUMAN QUOTES


Re:Mutton Pies (lleechef)


FORECLOSURE OF REAL ESTATE MORTGAGE


Girasoles para colorear


Tagalog Quotes About Crush – Tagalog Love Quotes


Patama Quotes : Tagalog Inspirational Quotes


Tagalog Quotes To Move on and More Love Love Love Quotes


BARKADA TAGALOG QUOTES


Best Crush Tagalog Quotes And Sayings 2017


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.