.NET Core – Cuando Sí y cuando NO

En esta “primera edición oficial” del ASP.NET Community Standup LATAM – del cual les voy a hablar más adelante – comenté acerca de cuales son los escenarios en donde conviene arrancar con .NET Core y en los cuales hay que evaluar con mayor cuidado su implementación y tal vez optar por alguno de sus frameworks “hermanos”.

.NET Family

Voy aprovechar este post para resumir estos escenarios y les comparto documentación donde se explica en mayor detalle los motivos de cada uno.

Sigue leyendo

Deployment Continuo de webapp ASP.NET Core en Azure trabajando en entorno Linux

Esta semana junto a mis compañeros @francoferrari86 y @camboris estuvimos jugando un poquito con .NET Core y terminamos configurando el deployment continuo – en Azure – de una aplicación ASP.NET Core desde un entorno Linux. A partir de esto pensé escribir este post por si le sirve de referencia a alguien.

Dicidí dividir este post en secciones para que sea más sencillo el seguimiento.

Preparar el entorno de desarrollo

El primer paso fue instalar .NET Core y Visual Studio Core. Paso siguiente procedimos a crear un proyecto ASP.NET Core con Yeoman utilizando el template “Empty Web Application“:

Creando proyecto ASP.NET Core con Yeoman

Creando proyecto ASP.NET Core con Yeoman

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

Ya se viene #Build2016 :)

Falta cada vez menos para el evento  que organiza MS y en donde se presentan las últimas herramientas y tecnologías que hacen más simple y productivo el trabajo de los desarrolladores. Seguramente nos enteraremos de novedades respecto a los servicios de Azure, Visual Studio, Visual Studio Code, .NET, .NET Core… etc.

#Build2016

#Build2016

Si al igual que yo se te complica viajar hasta San Francisco🙂 tenes dos alternativas: o te acercas a una subsidiaria de Microsoft o participas por live streaming desde build.microsoft.com.

Agendate el evento: 30/03 a las 13.30 hs.

Introducción a .NET Core 1.0

En post anteriores estuvimos hablando de .NET Core y toda esta confusión de branding que se armo al respecto. Hoy vamos a hablar de como está compuesto .NET Core y que ventajas trae sobre el clásico .NET Framework que todos conocemos.

¿Qué es .NET Core?

Comencemos con la definición de MSDN:

.NET Core es una versión modular de .NET Framework diseñada para que sea portátil entre plataformas.

.NET Core es el nuevo framework de .NET – escrito desde cero -que incluye un subconjunto de la versión completa de .NET Framework y cuyas principales características es que fue desarrollado de forma modular, multi-plataforma y es open source.

Esta vez fue diseñado de forma modular, lo que nos permite ir agregando paquetes de ensamblado Nuget a medida que lo necesitemos. .NET Core por defecto contiene las características básicas , lo que lo hace más “liviano” que el clásico framework monolítico que contenía infinidad de funcionalidad, mucha de ella obsoleta. Por lo tanto en lugar de tener una gran librería con funcionalidad que no vamos a utilizar, .NET Core está disponible como paquetes más pequeños centrados en las características.

Este esquema no solo nos permite incrementar la performance de nuestras aplicaciones sino que nos permite mayor agilidad en nuestros desarrollos, ya que tenemos la posibilidad de elegir las bibliotecas que realmente vamos a utilizar.

También es multi-plataforma (en Linux y OSX aún hay características en progreso) y lo realmente importante es que nos permite reutilizar código independientemente de la plataforma destino.

Las partes que componen .NET podríamos resumirla de la siguiente manera:

.NETCore

.NETCore

Sigue leyendo

ASP.NET Core en Linux

Hace un tiempo comencé a usar Linux como SO en mi trabajo y como .netero de larga data extrañaba un poco a mi viejo y querido ASP.NET.

Por lo tanto me decidí a instalar y configurar .NET Core y levantar un proyecto ASP.NET Core. Con la ayuda de mi compañero @camboris nos pusimos manos a la obra y decidí documentar el paso a paso para quienes tengan intención de trabajar fuera de Windows. No quiero dejar de mencionar a @ealsur que me dio una mano como siempre.

Importante

La instalación la realice sobre Ubuntu, por lo tanto vamos a usar el comando apt-get que es una herramienta de Debian (la distro en la que se basa ubuntu). Si usan una derivada de Redhat tendrán que usar rpm o yum y si usan Arch (como @camboris) esta pacman.

Sigue leyendo

Creando alias y swicheando entre DNX Rutimes [Linux]

En este mini-post simplemente voy a explicarles como crear alias y “swichear” entre los diferentes runtimes de .NET que tengamos en nuestro equipo utilizando dnvm.

DNVM nos proporciona un conjunto de utilidades de línea de comandos que nos permiten configurar nuestro entorno de ejecución .NET (DNX) posibilitándonos el desarrollo de aplicaciones .NET Core en otro tipo de plataformas (en nuestro caso Linux).

Veamos la lista de runtimes disponibles en mi equipo (podemos ver que el runtime activo corresponde a la versión 1.0.0-rc2-16357 de Mono):

dnvm list

Si quiero swichear al DNX correspondiente a la versión 1.0.0-rc1 del rutime .NET Core debo utilizar el siguiente comando:

dnvm use 1.0.0-rc1-update1 -r coreclr -arch x64

Luego de ejecutar el comando podemos validar que efectivamente haya cambiado el DNX Runtime activo:

swiching-runtimes

Ahora bien, si queremos simplificar la cosa podemos usar “alias”, en nuestro caso vamos a crear el alias “default-coreclr” para el DNX Rutime de .NET Core utilizando el siguiente comando:

dnvm alias default-coreclr 1.0.0-rc1-update1 -r coreclr -arch x64

Resultado:

dnvm-alias Finalmente podemos swichear usando el alias:

dnvm use default-coreclr

Espero que les sea de utilidad.🙂