Nota campusMVP: Este artículo se publicó originalmente en VariableNotFound, el blog personal del nuestro tutor José María Aguilar. Esta es una reproducción con su permiso.
Tras un desarrollo muy largo y convulso, ayer se presentaron las respectivas versiones 1.0 RTM de .NET Core, ASP.NET Core y Entity Framework Core, junto con actualizaciones de una serie de productos relacionados.
La verdad es que hace tan sólo unos años, presentar la nueva versión de ASP.NET en la conferencia Red Hat DevNation habría resultado una auténtica osadía y probablemente habría acabado con tomates volando hacia el escenario. Pero esto es agua pasada, y este simple gesto es una prueba más de que realmente las cosas han cambiado en Microsoft.
Con el lanzamiento de la versión 1.0 de la infraestructura .NET Core y el conjunto de frameworks basados en ella (ASP.NET, MVC, Entity Framework), iniciamos una nueva época en la que aquél sueño de desarrollar o ejecutar fácilmente aplicaciones .NET en cualquier plataforma es ya una realidad, y con todo el soporte y las bendiciones del gigante de Redmond. Escenarios antes impensables, como desarrollar desde Mac para desplegar en Linux, o crear nuestras aplicaciones en Windows y explotarlas desde un contenedor Docker, son ya posibles.
Estamos ante un reboot en toda regla: todos estos frameworks han sido construidos desde cero teniendo en mente conceptos actuales que ni siquiera existían cuando empezaron a gestarse las versiones iniciales de .NET o ASP.NET "clásicos": la nube, alto rendimiento, escalabilidad, APIs, múltiples dispositivos y plataformas, contenedores, microservicios etc. Y creados usando principios y buenas prácticas que tampoco eran los habituales antaño: inyección de dependencias, clases con responsabilidades limitadas, "sustituibilidad", "componibilidad", abstracciones basadas en interfaces, pruebas unitarias...
Resumiendo, ayer se lanzaron, entre otras cosas:
- Visual Studio 2015 Update 3, una actualización necesaria para que este IDE soporte la versión 1.0 RTM de .NET Core y sus herramientas, y que además corrige errores y mejora el rendimiento de la anterior Update 2.
- .NET Core Tooling Preview 2 para Visual Studio 2015, una actualización de las herramientas y plantillas de VS2015. Requiere el Update 3 descrito en el punto anterior.
- C# Extension para Visual Studio Code, una actualización de este editor para hacerlo compatible con .NET Core.
- Docker Tools for Visual Studio 2015 – Preview, una extensión que permite desarrollar, ejecutar y depurar aplicaciones ASP.NET Core en contenedores Docker. Tenemos también imágenes para Docker de .NET Core RTM.
- Microsoft .NET Core 1.0 Windows Server Hosting, que instalará el módulo encargado de rutar las peticiones desde IIS hacia Kestrel. Es lo que necesitarías instalar en servidores para poder ejecutar aplicaciones ASP.NET Core.
- .NET Core 1.0 RTM, cuyos runtimes podéis descargar para Windows, macOS, RedHat, Ubuntu, Debian, Fedora, CentOS y openSUSE. Puedes descargarlos desde la página oficial.
- ASP.NET Core 1.0 RTM, el nuevo framework para la construcción de aplicaciones y servicios para la web modular, optimizado para la web y multiplataforma.
- Entity Framework Core 1.0 RTM, el nuevo framework de acceso a datos, que viene de fábrica inicialmente con soporte para SQL Server, SQL Compact, SQLite, Postgres y bases de datos en memoria (para testing), aunque existen adaptadores comerciales para MySQL, Oracle y otros.
Con estas novedades ya tenemos entretenimiento para una temporada ;-)
Curso de ASP.NET Core MVC: Tu mejor opción para aprender online y en español.
¿Debo migrar ya a ASP.NET Core?
Oficialmente, ASP.NET Core se encuentra ya en RTM, lo que quiere decir que está listo para ser utilizado para desarrollar y explotar aplicaciones reales. Las recomendaciones son:
- No intentar portar a ASP.NET Core aplicaciones existentes, pues el esfuerzo necesario para ello es comparable a lo que supuso el salto de Web Forms a MVC. Si fuera necesario hacerlo, se recomienda afrontarlo más como una reescritura que como una migración.
- Sí serían candidatas a darle la oportunidad a ASP.NET Core aquellas aplicaciones que vayan a desarrollarse desde cero, o bien cuando sean necesarias características exclusivas de este nuevo framework como el soporte multiplataforma (por ejemplo, si necesitamos desplegar sobre Docker).
Y ahora hago yo mi aportación personal al respecto: abstrayéndonos un poco del entusiasmo que despiertan estas novedades y de las ganas que sin duda todos tenemos de hincarle el diente en proyectos reales, hemos de ser conscientes de que estamos ante productos que acaban de salir del horno, aún incompletos en algunos aspectos, y que seguirán evolucionando durante los próximos meses. Aún su ecosistema y comunidad son relativamente pequeños, y al romper con las versiones anteriores hay puntos en los que partiremos desde cero.
Mi recomendación, por tanto, sería actuar con prudencia y estudiar detenidamente las necesidades que tenemos antes de embarcarnos en una aventura que puede ser costosa; simplemente evaluemos los entornos de explotación a los que nos dirigimos, dependencias externas (motores de bases de datos, componentes de terceros…), intención de reutilizar de código existente, las características que necesitamos y no están aún implementadas en Core, el tooling, y muchas otras cosas que nos podrían comprometer en el futuro. Eso sí, una vez la evaluación resulte positiva, seguro que disfrutamos con estos nuevos marcos de trabajo y las posibilidades que nos ofrecen :)
Por último, os dejo algunos enlaces por si queréis ampliar información:
Nota campusMVP: Si tienes dudas sobre esta versión, qué incluye exactamente, si sustituye a la anterior o quedarán ambas, etc... por favor, lee este artículo que trata de resolver estas cuestiones.