Desarrollo de aplicaciones ASP .NET multiplataforma

Desde que MS anunció que el código de ASP .NET iba a ser liberado y subido a github, en la comunidad de desarrollo se extendió una sensación de expectación, pero cuando MS confirmó que se iba a convertir en una solución multiplataforma fue cuando realmente la comunidad se dio cuenta de la gran cantidad de posibilidades que se abrían.

Este nuevo enfoque, junto con la plataforma Azure (una de las mayores plataformas de computación en la nube actualmente disponibles) ha llevado a compañías que habitualmente estaban enfocadas en tecnologías MS a colaborar cada vez más y más en proyectos alojados en entornos Linux o Mac OS. De la misma manera, compañías que no solían trabajar con tecnologías MS se han sentido atraídas por la promesa del soporte en sus desarrollos por una compañía como MS, siempre enfocada en los desarrolladores, a la vez que las grandes trabas que antes las mantenían lejos de MS se van eliminando.

En Solid GEAR compartimos este sentimiento de expectación por los cambios que se están produciendo dentro de MS y en esta entrada os presentamos este nuevo entorno de desarrollo:

ASP .NET vNext

Como hemos dicho anteriormente, ASP .NEt vNext es el nuevo web stack de MS, opensource, publicado en Github y multiplataforma.

Las principales características se pueden resumir en:

  • Totalmente modular: Por defecto no tenemos nada. Los módulos se van añadiendo de acuerdo a las necesidades
  • Ciclo de desarrollo más rápido
  • Transición desde instancias locales dedicadas a la nube mucho más suave.
  • Open source con contribuciones de la comunidad
  • Editores de texto y herramientas a tu elección
  • Cross platform
  • FAST

En estos momentos estarás pensando: «Vale, muy bien, ¡pero quiero programar algo!». Vale, de acuerdo, déjanos que te mostremos lo que actualmente nosotros llevamos a cabo para iniciar un proyecto desde cero usando o Linux o Mac OS, lo que tu prefieras, sólo continua leyendo:

  • Primer paso, instalar Sublime Text 3 (lo puedes encontrar en el siguiente enlace: http://www.sublimetext.com/3)
  • Instala Package Manager. Para esto simplemente navega de la siguiente forma:

View > Show Console (o ctrl+`)

Y escribe el siguiente comando:

import urllib.request,os,hashlib; h = 'eb2297e1a458f27d836c04bb0cbaf282' + 'd0e7a3098092775ccb37ca9d6b2e4b7d'; pf = 'Package Control.sublime-package'; ipp =sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
  • Lanza Package Control:

Cmd + Shift + P (Mac Os) o Ctrl + Shift + P (Linux)

y  escribe «Install Package». La opción «Package Control: Install Package» se seleccionará. Usando esta herramienta instalamos un par de plugins muy útiles que nos ayudarán en nuestro desarrollo:

  • Kulture: añade características como F5 para ejecutar el código
  • OmniSharp: habilita características para C# (Intellisense, resalatado, etc)
  • Instala Yeoman (http://yeoman.io/). Básicamente esta herramienta nos proporciona plantillas para nuevos proyectos.
sudo npm install -g yo
  • Instala aspnet generator para yo:
sudo npm install -g generator-aspnet (this generator has been created by Kulture authors)

En este momento ya estamos listos para crear una nueva aplicación web en blanco: ooooooohhhh. Simplemente lanza yeoman con aspnet generator:

yo aspnet

Y selecciona «Web Application». Podrás ver:

Your project is now created, you can use the following commands to get going
    kpm restore
    kpm build
    k run for console projects
    k kestrel or k web for web projects

Para poder lanzar estos comandos necesitarás “K Runtime Environment” o KRE. KRE es el entorno de línea de comandos que compilará y ejecutará los proyectos usando el fichero project.json.

La instalación de KRE es gestionada por “K Version Manager” (KVM). KVM es una simple aplicación que nos permite instalar múltiples versiones de KRE y que permite facilmente pasar de una a otra.

  • Simplemente ejecuta:
curl https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.k/kvm/kvm.sh && kvm upgrade

Este comando hará:

  • descarga kvm.sh y lo guarda en ~/.k/kvm/kvm.sh
  • añade el comando kvm para poder ejecutarlo desde zsh
  • añade el comando kvm al shell actual
  • ejecuta kvm upgrade. Este descargará el último paquete de KRE, lo extraerá en .kre/packages y lo añade al directorio bin de tu path.

También puedes instalar kvm siguiendo las intrucciones descritas en https://github.com/aspnet/home#os-xhttps://github.com/aspnet/home#linux

  • Ejecuta
sudo kpm restore

desde el directorio del projecto. Descargará y enlazará todas las referencias pendientes listadas en project.json.

Ya casi lo tenemos, simplemente ejecuta:

k kestrel

Esto lanzaraá el servidor web. Cómo? Dónde? Veamos, Kestrel es un servidor web multiplataforma especialmente desarrollador para ASP .NET vNext. Si echamos un vistazo a fichero project.json, debajo de la sección «commands» veremos una entrada llamada «kestrel». Este es el comando ejecutado por KRE. Como puedes ver, por defecto es:

"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"

Lo que significa que lanzará la aplicación en localhost:5004. Navega a esa dirección y Ahí lo tienes!

Breve introducción a la nuevas Web Application ASP .NET 5

Los principales ficheros de configuración con los que tendrás que entenderte son:

  • project.json: dependencias de la aplicación (entity Framework, diagnostics, iis, security.cookies, etc.)
  • config.json: configuraciones varias como connection strings

Todo ha sido migrado a json, pero si te gusta sufrir, todavía puedes continuar usando ficheros xml si quieres.

La clase de inicio se ha movido al fichero Startup.cs:

  • Startup.cs:  Esta clase lee el fichero config.json y variables de entorno si es necesario. En esta clase es donde se añaden los diferentes módulos o servicioes (entity framework, identity o incluso MVC). Por defecto no tiene añadido nada.
services.AddEntityFramework(configuration).AddSqlServer()

services.AddIdentity()

services.AddMvc()

Esto minimiza los recursos necesarios en un despliegue y también incremente la escalabiliddad. Además alivia el dolor de actualizar a una nueva versión de las viejas aplicaciones .NET.

Plugin Kulture para Sublime Text 3

Además, como un pequeño regalo, aquí van unos pocos pasos para utilizar kulture en sublime text 3:

  • Save Project As… para crear el fichero .sublime-project y definir el espacio de trabajo.. Kulture lo necesita para encontrar el fichero project.json.
  • Cmd + Shift + P (o Ctrl + Shift + P)  > Run  K Commands (o F5) > kvm restore, k kestrel
  • Si da error:
    • Ve a project.json y elimina todas las lineas con /* */
    • «No such file or directory kvm.sh» in source kvm.sh command: Ve a «/Users/<user>/Library/Application Support/Sublime Text 3/Packages/Kulture» y cambia «source kvm.sh» por «source ~/.k/kvm/kvm.sh»

¡Ahora te toca a ti! ¿A qué esperas para crear una increible aplicación web usando ASP .NET vNext?

Deja un comentario

¿Necesitas una estimación?

Calcula ahora