.NETRAF 2017 – Corriendo aplicaciones ASP.NET Core en Linux

El sábado pasado junto a @camboris en el marco del evento .NETRAF 2017 dimos una charla donde contamos como correr aplicaciones ASP.NET Core en Linux (y en debo reconocer que me divertí muchísimo).

Próximamente voy a contar más acerca de lo que dejo este gran evento.

A continuación comparto los slides utilizados en la misma.

¡Muchas gracias a todos por participar!

.NETRAF 2017

.NETRAF 2017

Corriendo nuestras web apps en Kestrel usando Apache como servidor proxy

Hablando la otra vez con los muchachos del ASP.NET Latam StandUp surgió la idea de correr nuestras web apps en Kestrel  usando Apache como servidor proxy. Por lo tanto con mi compañero @camboris – al cual le agradezco que comparta su tiempo y su conocimiento conmigo – nos pusimos una tarde a jugar un poco y logramos publicar nuestra aplicación en ese escenario.

Antes que nada vamos a dejar que la documentación oficial de ASP.NET nos cuente muy brevemente que es Kestrel:

Kestrel is a cross-platform web server based on libuv, a cross-platform asynchronous I/O library.

Pero ojo…

Kestrel is designed to be run behind a proxy (for example IIS or Nginx) and should not be deployed directly facing the Internet.

No voy a entrar en detalles técnicos, con esto solo quiero recordarles que Kestrel no fue diseñado para estar expuesto a Internet, por lo que debemos configurar un server proxy que le sirva los requests a Kestrel y que además ofrezca características que este último no tiene, como capacidad para virtual hosts, security y logging.

Si nos vamos al mundo Linux las dos opciones clásicas a la hora de elegir servidores son Nginx y Apache. En la documentación oficial y otros enlaces, como el que menciono a continuación, podemos encontrar como configurar Nginx para esta función.

En este post vamos a explicar como configurar Apache para que funcione como reverse server proxy y voy a usar como guía el post Publishing an ASP.NET Core website to a cheap Linux VM host del gran Scott Hanselman.

Sigue leyendo

.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

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. 🙂