Estas últimas semanas he estado aprovechando algunos huecos libres para actualizar mi página web a .Net Core, que ya hacía tiempo que lo estaba pensando, pero no había sacado aún el tiempo para implementarlo. Os cuento cómo ha ido el proceso.

Desde la última actualización de la web, allá por diciembre de 2013 (que ya ha llovido...), y que detallé en el post "Detalles técnicos de implantación de la web", tan sólo había escrito algunos posts y actualizado algunos proyectos, pero la web en sí seguía siendo la misma sobre ASP.NET MVC y el blog en Wordpress. Recientemente, a raíz de iniciar algunos proyectos laborales sobre .Net Core, me decidí que ya era un buen momento también de actualizar el código de la web y poner en práctica lo que estaba aprendiendo de netcore, y, de paso, aprender algunas cosas nuevas que siempre surgen por el camino.

Lo primero que decidí abordar fue el motor del blog, para dejar de tener Wordpress integrado con la aplicación web, que a su vez me obligaba a mantener una BD MySql para él sólo. Después de barajar varias opciones, me decidí por el proyecto Miniblog.Core, creado por Mads Kristensen, implementado con ASP.NET MVC Core, y que resultó ser un motor de blogs muy interesante, y además es un gran starting point para el desarrollo de cualquier proyecto MVC, ya que aplica muchas buenas prácticas y optimizaciones que resultan en una aplicación web rápida y optimizadas. El listado completo de features está listado en la documentación de GitHub: https://github.com/madskristensen/Miniblog.Core#features

Algunas de estas mejoras son:

  • Uso de service workers para uso offline
  • Optimización de imágenes automática
  • Técnicas de compresión y minimización de archivos JS y CSS
  • Autocompilado de archivos SCSS
  • Uso de OutputCache
  • HTML Minification
  • Sitemap.xml y robots.txt incluidos
  • Blog feed
  • Soporte para edición con Live Writer

Sobre la base de este proyecto, pude añadir mis vistas, controladores y servicios, heredados de mi anterior aplicación, y migrándolas a .Net Core en los casos necesarios, sobre todo en la gestión de la localización y traducción de textos, que se ha modificado en esta nueva versión.

Algunas modificaciones que he añadido sobre el proyecto inicial:

  • Soporte multi idioma
  • Listado de posts por archivo de fecha
  • Usar Disqus para la gestión de comentarios
  • Añadir Google Ads y Google Analytics, para medición de tráfico
  • Gestión de la aceptación de cookies y la página legal al efecto
  • Añadir Posts destacados en la Home page
  • Añadir soporte para páginas estáticas al listado del sitemap.xml

Finalmente, tuve que migrar mis posts antiguos manualmente, pero por suerte, no he sido muy prolífico escribiendo últimamente, así que no fue demasiado costoso :) Miniblog.Core usa archivos XML en disco para almacenar los Posts, que carga en Cache al arrancar la aplicación, motivo por el que su rendimiento de carga es bastante elevado. En un futuro, tengo pensado usar Tablas de Azure Storage para almacenar los posts, en lugar de XML, para eliminar la dependencia de disco, pero eso será ya para la migración a .Net Core 5, probablemente...

El resultado lo estás viendo aquí, aunque visualmente casi no hay cambios, internamente se ha renovado por completo y espero que los efectos positivos en el rendimiento se noten a partir de ahora.