ASP.NET Core es la nueva apuesta de Microsoft por una solución multiplataforma de desarrollo web.
Soporta tanto Windows como Mac come Linux, y permite una transición de páginas web desarrolladas con ASP.NET MVC a su versión
multiplataforma ASP.NET MVC Core. Esta nueva tecnología además, destaca por ser una de las soluciones con mejor rendimiento a
la hora de desarrollar aplicaciones web.
Instalando el SDK
Para poder trabajar con ASP.NET Core, necesitamos descargarnos el runtime de .NET Core. Estos son los pasos a seguir para instalarlo sobre Ubuntu 16.04 LTS.
Seguimos los pasos para instalar .NET Core a través de los repositorios de Microsoft. https://www.microsoft.com/net/core#linuxubuntu Para ejecutar estos pasos basta con abrir una consola y ejecutar:
Si queremos usar un IDE para desarrollar, podemos usar Visual Studio Code, el IDE multiplataforma de Microsoft.
Crear un proyecto web
Una vez instalado todo lo necesario, pasamos a crear nuestro proyecto web con las siguientes instrucciones.
Tras ejecutar estos comandos, podremos abrir un navegador a la URL http://localhost:5000
donde podremos ver la web plantilla creada por el comando dotnet new -t web.
Este proyecto plantilla ya viene con ASP.NET Core MVC y
Entity Framework Core.
Es recomendable echar un ojo al código con el editor que más nos guste para ver ejemplos de controladores, vistas y modelos que nos puedan luego
ayudar en como utilizar todas las herramientas ofrecidas por la plataforma ASP.NET Core MVC.
Un caso práctico, TodoList CRUD.
Vamos a empezar a añadir código propio a la aplicación plantilla. Crearemos un listado de todos y un formulario para añadirlos. Para ello
vamos a poner el código necesario para hacer un ejemplo funcional básico.
También puedes bajarte el proyecto completo desde este repositorio de Github.
También añadiremos las vistas que se cargaran desde el controlador TodoController.
Tras añadir los modelos, controladores y vistas necesarios para ejecutar nuestro ejemplo, vamos a tener que actualizar la base de datos
de nuevo. Podemos hacerlo fácilmente con la herramienta de consola de Entity Framework Core.
Tras estos pasos podemos volver a ejecutar dotnet run y abrir un navegador a la URL http://localhost:5000/Todo.
Ya tenemos nuestro listado de Todos y un formulario para poder añadir Todos nuevos.
Dándole más sabor a Linux a nuestra aplicación web
Ahora ya tenemos una aplicación web que corre sobre Linux y usa .NET Core. La plantilla que viene con ASP.NET Core está configurada para usar Sqlite, opción
multiplataforma y muy útil para desarrollo, pero que pudiendo usar MySQL como motor de bases de datos queda un poco floja. Por ese motivo, vamos a
modificar nuestra aplicación para usar MySQL como gestor de bases de datos.
También tendremos que hacerle saber al servicio ApplicationDbContext que ahora debe usar MySQL como motor y actualizar la cadena de conexión en el fichero appsettings.json.
Tras esto va a ser necesario regenerar nuestra última migración y actualizar la base de datos desde el modelo de nuevo.
Ya tenemos nuestra aplicación usando MySQL como motor de base de datos.
Desplegar nuestra web ASP.NET Core en un servidor Linux
Para acabar de cerrar el círculo, necesitamos saber como desplegaremos esta aplicación web. No vamos a entrar en detalle en esta sección,
pero sí vamos a explicar como ejecutar una instancia de nuestra aplicación preparada para producción detrás de un reverse proxy como Nginx,
usando esta guía de Microsoft como referencia. Para instalar Nginx basta con ejecutar:
Con nginx instalado, tendremos que publicar nuestro proyecto para que sea lo más eficiente posible en producción
y copiar el resultado de nuestra compilación a un directorio utilizable por el usuario www-data, como haríamos
con un proyecto LAMP.
Finalmente, pasaremos a seguir los pasos descritos en la guía de Microsoft para crear un servicio manejado a través de systemd. Algo que esta guía no nos dice, es que en el descriptor del servicio,
hace falta definir el directorio de trabajo que va a tener nuestro proceso. Por eso, añadimos el descriptor del servicio utilizado en el proyecto de ejemplo.