ASP.NET Core paso a paso – Introducción

Es momento de empezar a hablar de ASP.NET Core, por lo que este es el primer post de una serie denominada “ASP.NET Core paso a paso” – bien Mostaza Merlo – en donde vamos a ir viendo en detalle las distintas características del mismo.

En esta primer entrega vamos a comentar de que se trata este framework y cuales son sus principales características. Luego, a partir de las siguientes entradas ya vamos a meternos en cuestiones técnicamente más puntuales.

Sigue leyendo

ASP.NET MVC Pipeline: Routing

Hace ya un tiempo que no escribo sobre el “tradicional” ASP.NET MVC y justamente la otra vez me cruce con esta excelente entrada en DotNet Tricks que me motivo a escribir sobre un tema que siempre posponía: el pipeline de ASP.NET MVC y sus puntos de extensión.

En esta primer entrega vamos hablar sobre la etapa de routing del pipeline, con una breve descripción de la función que cumple y las diferentes formas en que podemos extenderlo. En próximas entregas vamos a ir hablando de las siguientes faces: “Controller Initialization”, “Action Execution”, “Result Execution” y “View Initialization & Rendering”.

Routing

Routing

Routing

Esta es la primer etapa del pipeline y su función se centra en determinar quien será el encargado de manejar la petición.

Como ya todos saben el framework ASP.NET MVC nos provee de un motor de enrutamiento – routing engine – que se encarga de parsear la URL del request entrante y luego de machearla/mapearla contra alguna de las rutas – routes – almacenadas en la tabla de enrutamiento – route table –. A partir de la ruta coincidente podremos determinar que handler será el encargo de manejar la petición – el comportamiento por defecto es determinar el controlador y acción que deben ser invocados – pero como veremos más adelante podemos extendernos en este punto.

Sigue leyendo

ASP.NET 5 es ASP.NET Core

Y cuando pensamos que con el tema del versionado ya teníamos suficiente y estaba cerrado, anuncian que ASP.NET 5 ahora es ASP.NET Core… y se reivindican por completo. 🙂

Hace unos días Scott Hanselman anunció en su blog que hubo un “re-nombramiento” en cuanto al versionado del nuevo stack de tecnologías .NET (vNext). Las mismas pasan a llamarse Core y comenzarán desde cero.

Resumiendo:

  • ASP.NET 5 >> ASP.NET Core 1.0.
  • .NET Core 5 >> .NET Core 1.0.
  • Entity Framework 7 >> Entity Framework Core 1.0 or EF Core 1.0 colloquially.
ASP.NET Core 1.0

ASP.NET Core 1.0

Por un lado creo que ahora está más clara la separación entre ambas tecnologías (clásica y nueva) pero por otro lado coincido con José M. Aguilar en que lo hicieron demasiado tarde.

En fin, esperemos que no haya más sorpresas de aquí en adelante.

Pero que mareo con ASP.NET vNext

Hace tiempo que vengo trabajando con ASP.NET, en particular con su framework MVC, y si había algo con lo que estaba conforme era la forma en que se venía lanzando las versiones del mismo. La periodicidad con el que sacaban nuevas versiones permitía conocer “a fondo” el framework y estaba relativamente claro cuales eran las features introducidas como las dependencias con .NET. Estas y otras cosillas nos daban mayor confianza para dar el salto.

Todo bien hasta el anuncio de ASP.NET vNext. De entrada se habló de dos alternativas para trabajar en ASP.NET: la tradicional y una variante que correrá con .NET Core (este último para quien no lo conozca es una versión “ligth”, más rápida y multiplaforma del framework .NET).

Por lo tanto surgen “dos versiones” de nuestro querido framework web:

  • ASP.NET 4.6: sigue el curso “normal” del framework, es decir la misma forma de trabajo que ahora con la clásicas tecnologías ASP.NET MVC, Web API, WebForms, SignalR.
  • ASP.NET 5 o ASP.NET vNext: que esta pensado para trabajar sobre .NET Core y que deja afuera tecnologías como WebForms por ejemplo.

Conclusión, tenemos ASP.NET 4.6 que corre en la versión “completa” de .NET – .NET Full Framework 4.6 – y ASP.NET 5 que correrá en ambas versiones, la versión “full” y la “ligth” de .NET – .NET Core 5 -.

ASP.NET vNext

ASP.NET vNext

Y llegan los dolores de cabeza, porque si trabajamos con MVC en ASP.NET 4.6 estaremos trabajando con ASP.NET MVC 5.x y en cambio si lo hacemos sobre ASP.NET 5 sera ASP.NET MVC 6. Lo mismo pasa con otros frameworks como SignalR, en ASP.NET 4.6 es SignalR2 y en ASP.NET 5 tenemos SignalR3.

No perdamos de vista que ASP.NET 5 esta siendo escrito desde cero para la tecnología .NET Core, por lo que será incompatible con ASP.NET 4.6 y anteriores.

Para quienes no lo tengan presente .NET Full Framework 4.6 se presentó en el lanzamiento de Visual Studio 2015 mientras que la versión Release Candidate de .NET Core 5 estaría a finales de año. Es decir que, ya podemos trabajar con una de las alternativas pero debemos esperar – ¿mucho? – para trabajar con tranquilidad en la otra (y eso que llevan un largo tiempo anunciándolo).

Ahora bien, ¿qué se trae de nuevo ASP.NET MVC 6?. Rápidamente comentarles que tiene una nueva estructura de los proyectos, desaparece el archivo global.asax y aparece la clase Startup, desaparece nuestro viejo y querido web.comnfig y aparecen nuevos archivos de configuración JSON (global.json, bower.json, config.json, package.json y project.json), nuevos folders como “wwwroot”, integración con nuevos gestores de paquetes, desacoplamiento de IIS lo que nos permite tener nuestra aplicación auto hosteada en múltiples plataformas, etc. Pronto estaré escribiendo sobre el tema.

Resumiendo, creo anunciar vNext de forma tan temprana hizo que los desarrolladores nos confundamos más de la cuenta, más aún si tenemos en consideración toda esta tramoya de versiones. Esperemos que con el tiempo todo esto se normalice y haya más novedades al respecto. Mi opinión personal, arrancar con ASP.NET 4.6 y de paso ya ir “jugando” cada vez más con ASP.NET 5 hasta su lanzamiento.

Para mayor información sobre el tema recomiendo absolutamente el siguiente articulo: Descifrando el lío de ASP.NET vNext: versiones, disponibilidad, Visual Studio…