Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
miércoles, 14 de mayo de 2014
Microsoft ASP.NETHace un par de días, en el marco del TechEd Norte América, además de presentar la RTM de Visual Studio 2013 Update 2, cambios en Azure y muchos otros productos,  se anunciaron las principales novedades que se incluirán en ASP.NET vNext, la próxima versión de la pila de tecnologías de desarrollo para la web de Microsoft. Y como no podía ser de otra forma, han provocado un revuelo importante en la comunidad por el calado y trascendencia de algunas de estas novedades.

Aunque todavía no se conocen todos los detalles, sí tenemos ya bastantes datos sobre hacia dónde se va  encaminando ASP.NET y en qué están trabajando los distintos equipos de desarrollo en Redmond. Pero antes que nada, un pequeño disclaimer: Todo lo que os voy a contar a continuación no es definitivo, ni completo, ni probablemente correcto al 100%, pero al menos os puede servir como idea de por dónde van los tiros ;-)


Hasta ahora, las aplicaciones ASP.NET se ejecutaban sobre el mismo CLR que el resto de aplicaciones .NET. En vNext, se añadirá un CLR optimizado y específico para la nube (y servidores en general) llamado “cloud optimized” que ocupa menos memoria y es más eficiente. Ideal para servidores, donde la memoria y capacidad de proceso son habitualmente recursos compartidos y, muy especialmente, donde se requiere un gran rendimiento por la carga de usuarios a soportar.

Como consecuencia, las aplicaciones ASP.NET no usarán el tradicional System.Web, al que ya se le notaban los años, serán más rápidas tanto al iniciar como en tiempo de ejecución, ocuparán menos memoria, y sólo incluirán los componentes que necesiten para su funcionamiento.

El framework optimizado completo, es decir, tanto el núcleo del CLR como las bibliotecas optimizadas para el mismo, puede ser desplegado con las aplicaciones, de forma que en el mismo servidor podrán convivir distintas versiones sin pelearse entre sí. Para facilitar la gestión y uso, existirán herramientas de línea de comando que permitirán, por ejemplo, controlar las versiones de .NET a utilizar, o ejecutar aplicaciones ASP.NET (de cualquier tipo) en modo self-hosting.

El gestor de paquetes Nuget toma bastante protagonismo. Primero, porque tanto CLR como bibliotecas serán distribuidos como paquetes Nuget, lo que permitirá actualizaciones individuales de forma sencilla y “empaquetar” las soluciones de forma completa.

Archivo de proyecto JSONPero la entrada de Nuget va más allá: hasta ahora, las dependencias de los proyectos se establecían exclusivamente en base a referencias a bibliotecas. Ahora nuestros proyectos incluirán directamente referencias/dependencias  a paquetes Nuget, que se incluirán en un nuevo archivo de proyecto fácilmente editable (inicialmente en formato JSON, con ayudas de intellisense) . Además, al tomar Nuget esta importancia, se incorporarán herramientas para la construcción de paquetes directamente desde el entorno de desarrollo.

Gracias a la magia de Roslyn, será posible disfrutar de compilación sobre la marcha del código fuente, es decir, podremos retocar el archivo .cs de un controlador y los cambios estarán visibles al refrescar el navegador, sin necesidad de recompilar el proyecto completo. Esto es posible porque los binarios pueden ser guardados en memoria, y no tienen por qué ser guardados en disco, como hasta ahora. Se puede modificar, por tanto, el workflow habitual del desarrollador "editar-compilar-ejecutar" eliminando, si así lo queremos, el paso central.

Por otra parte, como era de esperar, ASP.NET vNext incluirá nuevas versiones de MVC, Web API, WebPages, SignalR y Entity Framework, que podrán funcionar sobre la versión de .NET “tradicional” o la optimizada para cloud, siendo este último entorno en el que serán más eficientes.

Por su parte, Entity framework ha sido reescrito desde cero y será más liviano, multiplataforma y ampliará su ámbito de aplicación también a bases de datos no relacionales.

MVC, Web API y Web Pages se unen bajo un único modelo de programación con objeto de unificar la experiencia del desarrollador al crear aplicaciones y servicios, y con la ventaja adicional de compartir aspectos como controladores  y routing. Por ejemplo, ahora podremos tener un mismo controlador que retorne vistas MVC y respuestas negociadas al estilo Web API. Esto pondría fin a los paralelismos arquitecturales y duplicación de componentes que veíamos hasta ahora al usar estas plataformas y que provocaban bastante confusión.

También se cubre un aspecto bastante molesto en las versiones actuales: la inyección de dependencias se introduce a nivel de plataforma, evitando lo que ocurre en este momento, que cada framework tiene su propio mecanismo de resolución de dependencias. Por supuesto, podremos seguir utilizando nuestro contenedor IoC favorito, aunque no habrá que crear adaptadores para cada framework.

Por cierto, no he visto nombrar WebForms en ninguna parte, pero supongo que por razones históricas este framework seguirá ligado a ASP.NET "tradicional" y, por tanto, no podrá beneficiarse de la nueva infraestructura optimizada.

ASP.NET vNext se lanzará como proyecto Open Source a través de la Fundación .NET, aceptando contribuciones. Por supuesto, los nuevos componentes optimizados para cloud funcionarán directamente sobre Mono en Mac y Linux al tratarse de código nuevo y no dependiente del muro infranqueable en que se había convertido System.Web.

Proyecto ASP.NET vNext
¿Y para cuándo tendremos esto listo para producción? Pues de momento no hay fechas, pero seguro que tarda unos meses porque las versiones que han mostrado en el TechEd (y que podemos descargar con los enlaces de algo más abajo) son bastante iniciales todavía.

Y para acabar, van unos enlaces para leer un rato sobre el tema:
En fin, que, como de costumbre, parece que tenemos tiempos revueltos a la vista… :-)

¡Seguiremos informando!

Publicado en: Variable not found.

1 comentario:

Anónimo dijo...

Bufff, que buena pinta tiene, esto promete.