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…

SignalR – Introducción

SignalRHace tiempo que tengo intenciones de comenzar a escribir sobre este tema, pero por una cosa u otra lo fui postergando. Para quienes no lo conozcan, SignalR es un framework de la pila de tecnologías web de Microsoft pensado para la construcción de aplicaciones en tiempo real. Las aplicaciones web con funcionalidad en tiempo real son aquellas que tienen la capacidad de enviar – desde el servidor – notificaciones al instante a los clientes conectados, en lugar de esperar que ellos vuelvan a solicitarlos ya sea por medio de polling o requests.

Ejemplos de este tipo de aplicaciones son los juegos “online” multi-usuarios, herramientas colaborativas como por ejemplo Google Docs u Office Web Apps, servicios de notificaciones en vivo, chats y otros tipos de servicios que actualmente son muy comunes de ver en aplicaciones como Facebook y Twiter.

La definición para SignalR que nos da el sitio oficial es la siguiente:

ASP.NET SignalR is a new library for ASP.NET developers that makes it incredibly simple to add real-time web functionality to your applications. What is “real-time web” functionality? It’s the ability to have your server-side code push content to the connected clients as it happens, in real-time.

SignalR es el marco de trabajo perfecto para el desarrollo de aplicaciones en Internet que soporten múltiples usuarios colaborando al mismo tiempo.  Y para que esto sea posible nos provee de una API que abstrae al desarrollador de las cuestiones de bajo nivel y nos brinda componentes para ambos extremos de la comunicación – cliente y servidor – tema que ya veremos más adelante.

Es importante saber que es una librería que se monta sobre el stack de tecnologías para la web ASP.NET y se encuentra al mismo nivel de otros frameworks bien conocidos por nosotros como Web API o MVC:

SignalR

SignalR

Como bien lo muestra el gráfico tanto SignalR como Web API están pensados para resolver implementaciones orientadas a servicios mientras que Web Forms y MVC fueron diseñados para la construcción de aplicaciones web.

Siguiendo la movida que implementó Microsoft en los últimos años, SignalR es open source – licencia Apache 2.0 – lo que nos permite estudiar sus fuentes y colaborar a través de GitHub. La versión 1.0 salio en Febrero de 2013 y la versión 2.0 unos meses más tarde en Octubre del mismo año. Al momento de escribir esto se encuentra en la versión 2.2.0 que se lanzo en Enero de este año y es la que utilizaremos en los próximos post.

Para finalizar con esta pequeña introducción contarles que SignalR está siendo utilizado en muchos proyectos reales como ser Web Apps de Office, SkyDrive y Office 365 entre otras, lo que habla de un marco de trabajo estable. Otro ejemplo es el juego Shootr construido en su totalidad con esta tecnología.

En las próximas entregas vamos a contar algunas de las características que hacen de este framework una opción perfecta para la creación de aplicaciones multi-usuarios en tiempo real de una manera realmente sencilla para los desarrolladores.

¡Nos vemos!