jueves, 28 de enero de 2016

Asp.net Web Api en Mac - VsCode - DNX - net Core

Hace unas semanas estuve probando a ver si se ya podía crear una web api con asp.net y Visual Studio Code alias VsCode en un mac y tras un rato de ponerme al día comparto las conclusiones.

¿Qué es VsCode?


IDE open source enfocado aplicaciones web y cloud disponible para Mac, Windows y Linux. Producto de la familia de Visual Studio. Soporta gran variedad de lenguajes, permite depurar javascript, intelisense.. Hay un set de extensiones y plugins considerable y a día de hoy ya es un producto interesante aunque el soporte concreto que yo busco en asp.net core todavía está en fase beta (ha cambiado el nombre de asp.net hace poco días de asp.net 5 a asp.net core).

Puedes desarrollar una web o web api y subirla a Azure con asp.net y net core pero están en modo preview y todavía no soporta depuración de asp.net. Sin embargo ya podrías depurar una aplicación de consola con net core y vscode. No creo que tarden demasiado dado que voy siguiendo las novedades y esto va como un tiro. También puedes hacer correr la web en local con kestrel. Si quieres montar el proyecto asp.net en Visual Studio Code y la instalación de Yeoman da problemas prueba a lanzar el comando con privilegios.
sudo npm install -g yo --allow-root
A raíz de esta incursión comparto algunas lecturas que me han ayudado a aclarar algunos conceptos y dudas sobre el futuro que nos depara a los desarrolladores que usamos frameworks de Microsoft.

¿Que es net core?


Es una versión “ligera”, basada en el .net framework de tipo open source promocionado por Microsoft.

¿Está net core basado en mono?


No, mono es una implementación también basada en .net framework, también open source pero promocionado por Xamarin. Por decirlo de algun modo vendrían a ser competencia (sana y colaborativa…)

¿Entonces para desarrollar proyectos c# en un mac con visual studio code tengo que usar Net Core?


No, también podrías usar mono con Visual Studio Code para desarrollar un proyecto C# en un mac o linux.

¿asp.net pasa a ser cross platform?


Sí, Microsoft abre net core y asp.net core como proyectos open source pero mantiene el framework nativo .net (el de toda la vida). Un proyecto asp.net core soporta o soportará ambos (y también mono). No tengo claro si .net core se alineará con el framework nativo, es decir, si podrás usar todas las clases y utilidades que dispones en nativo en multiplataforma o dependiendo del dispositivo donde corra no podrás usar según qué características (a día de hoy en mutiplataforma encontrarás limitaciones respecto a nativo). Entiendo que hay partes del .net framework que no se pasarán a core aunque no lo sé seguro. De echo tengo que confesar que este articulo lo escribí hace tres semanas y desde entonces han cambiado el nombre del producto asp.net 5 asp.net core así que hay que ver como evoluciona, lo mejor es seguir el github del proyecto.

¿Cómo es posible que un proyecto asp.net core pueda correr en nativo .net y en core (cross platform)?


Aquí entra en juego DNX. Resumiendo mucho, DNX es el nuevo entorno de ejecución de .net. El futuro enfoque del .net framework (tanto net core como “el clásico”) es que sea modular. En un fichero Project.json especificaremos los frameworks sobre los que puede correr la aplicación (dnxcore50, dnx451, …), las librerías que usamos de cada plataforma y sus dependencias. DNX tiene mecanismos para restaurar los paquetes vía nuget, gestionar sus dependencias y hacer la build del proyecto. (Dnu restore, dnx web..). Con esto se podrán hacer aplicaciones portables ya que DNX contiene el CLR. También resumiendo mucho, no será necesario instalar el framework en la máquina.

En estas páginas puedes encontrar más información sobre DNX, DNX Core…
Asp.net - choosing the right dot net
Asp.net - dnx overview
Simple Talk: What is DNX

¿Dónde podría obtener más info sobre la evolución de core y asp.net?


Puedes seguir el GitHub oficial de net core y asp.net.

¿Hay alguna página oficial donde se resuma todo de forma clara en una especie de tabla donde digan que características soportará cada framework, y sobre que plataformas puede correr?


No la he encontrado, posiblemente esté al caer. De momento si te has quedado con más ganas de leer te recomiendo echar un ojo a estos posts:

Oren Codes: Pcls net core dnx and uwp
Oren Codes: Desmitifying pcls net core dnx and uwp redux
Oren Codes: Targeting net core

Si aún tienes más ganas de leer, en msdn encontrarás información sobre uwp el cual no he mencionado en el post y ya es una realidad en Windows 10.

Hasta aquí el artículo de hoy, más y mejor en breve en areaTIC. Recuerda que puedes seguirnos en las redes sociales y participar en la medida que te apetezca (comentarios, propuesta de post, contenido..., etc). Que vaya bien!

No hay comentarios:

Publicar un comentario