Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

Principales novedades conceptuales de ASP.NET Core

banner-asp-net-core-750x300-2

La semana pasada os comentaba someramente la historia de la plataforma .NET y qué circunstancias habían llevado a Microsoft a empezarla de nuevo de cero para crear la nueva .NET Core y su parte especializada en desarrollo web: ASP.NET Core y ASP.NET Core MVC.

En esta ocasión vamos a ver las principales novedades que ofrece ASP.NET Core respecto a ASP.NET 4.x y anteriores, y que serán de utilidad para que puedas decidir cuál de las dos plataformas te conviene más aprender.

Nuevamente, si no tienes claras las diferencias entre .NET 4.x "tradicional" y .NET Core no dejes de leer este artículo antes de continuar.

Las novedades más importantes de ASP.NET Core frente a ASP.NET 4.x son:

  • No se ha mantenido retro-compatibilidad a nivel de plataforma, o, en otras palabras, la infraestructura de ASP.NET Core rompe con todo lo anterior. La consecuencia directa es que algunas tecnologías quedan ancladas para siempre en las versiones 4.x, como Web Forms o Web API, mientras que otras han tenido que lanzar versiones específicas para este nuevo marco, como es el caso de ASP.NET Core MVC.
  • Las aplicaciones sólo incluyen las referencias y componentes que necesitan para funcionar. Por ejemplo, aspectos que antes obligatoriamente venían incluidos de serie, ahora son totalmente opcionales: seguridad, globalización, tracing, gestión de errores, variables de sesión... Todos estos aspectos son componentes que introduciremos en nuestros proyectos sólo si lo necesitamos, y lo haremos muy fácilmente porque todos se distribuyen como paquetes NuGet.
  • De hecho, en los proyectos ya no existen referencias a ensamblados sino a paquetes NuGet, tanto si hablamos de componentes de terceros como si lo hacemos de componentes del propio framework. Esto facilita el despliegue, simplifica la gestión de dependencias y evita problemas a la hora de realizar actualizaciones.
  • Como consecuencia del punto anterior, la infraestructura es común para todas las aplicaciones. Es decir, no habrá un tipo de proyecto MVC, otro SignalR, y así para cada tecnología como ocurría hasta ahora. Existe un único tipo de proyecto web, ASP.NET Core, y sobre él iremos añadiendo los componentes que necesitemos. Esto simplemente es una continuación de la filosofía "One ASP.NET" que introdujeron hace unos años con la llegada de Visual Studio 2013 y MVC 5, y, al fin y al cabo, la adopción de un enfoque muy frecuente en otro tipo de plataformas, como NodeJS.
  • Es multiplataforma tanto en tiempo de diseño como de ejecución. Las aplicaciones construidas sobre ASP.NET Core o alguno de los marcos de trabajo de mayor nivel que se apoyan en éste, como MVC, puedes crearlas y ejecutarlas desde los sistemas operativos más habituales (Windows, Linux, Mac) sin ningún cambio en el código. También las aplicaciones son ejecutables en cualquier tipo de host, no sólo IIS como hasta ahora: podemos ejecutar aplicaciones ASP.NET en otros servidores, en servicios de sistema operativo o en cualquier tipo de aplicación. Por ello, la totalidad de operaciones que habitualmente realizamos con un proyecto (compilar, empaquetar, ejecutar...) podemos realizarlas desde línea de comandos usando las herramientas denominadas .NET Core CLI (.NET Core Command Line Interface) pertenecientes al SDK del framework.
  • Hay libertad de herramientas; a diferencia de versiones anteriores de ASP.NET, es realmente sencillo utilizar editores o entornos de desarrollo integrados distintos a Visual Studio, o incluso algo tan simple como el clásico bloc de notas. De esta forma, desarrolladores acostumbrados a editores populares como Sublime Text, Atom, Brackets o Visual Studio Code, el editor ligero multiplataforma de Microsoft, pueden desarrollar sobre ASP.NET Core sin cambiar de entorno.
  • Se simplifica el clásico workflow del desarrollador, la secuencia "editar->compilar->probar->editar...". Con ASP.NET Core la compilación puede realizarse de forma automática cuando los archivos de código fuente son modificados.
  • La estructura de los proyectos cambia. Ya no encontraremos viejos conocidos como el Global.asax o el archivo de configuración Web.config. Cambia también la forma de organizar los proyectos, separando entre archivos usados en tiempo de desarrollo y los archivos estáticos llevados a los servidores de explotación.
  • El modelo de hosting ha cambiado. Un sistema basado en ASP.NET Core es una simple aplicación de consola que lanza Kestrel, un servidor web muy ligero basado en .NET, y que es el que se encargará de servir las peticiones. Si queremos ejecutar la aplicación sobre IIS, Apache o cualquier otro servidor, deberemos configurarlo para que actúe como proxy inverso redirigiendo las peticiones hacia Kestrel.
  • ASP.NET Core es cloud-ready por defecto. A diferencia de sus antecesores, que fueron ideados antes de que la nube existiera como tal, las aplicaciones creadas con esta plataforma están preparadas "de serie" para saltar al cloud.

Aparecen, además, cambios importantes en la nueva pila de tecnologías de desarrollo para la web de Microsoft, tal y como se aprecia en la siguiente ilustración:

aspnetcorestack

Para empezar, Web Forms ha desaparecido del mapa: aunque en principio seguirá evolucionando en la familia de versiones 4.x de ASP.NET, no está previsto que esta tecnología esté disponible jamás para ASP.NET Core. Otro detalle importante es que el framework para la creación de servicios Web API ha sido eliminado, y sus funcionalidades integradas en MVC. Web Pages seguirá existiendo en ASP.NET Core y SignalR continuará como tecnología para la construcción de servicios en tiempo real, aunque las versiones para ASP.NET Core de ambos productos aún no estaban disponibles en el momento del lanzamiento del nuevo framework.

Observa que ni en el diagrama del stack ASP.NET Core, ni tampoco en el artículo anterior, cuando hemos hablado de ASP.NET 4.x, aparece una tecnología muy conocida para la creación de aplicaciones orientadas a servicios: WCF (Windows Communication Foundation). Esto no significa que esté en vías de desaparición (¡al menos de momento!), puesto que hay muchos escenarios en los que la flexibilidad y capacidades ofrecidas por esta plataforma son absolutamente necesarias. Sin embargo, es cierto que en estos momentos Microsoft ha apostado por la implementación de servicios usando HTTP y el estilo arquitectural REST, y esto resulta mucho más sencillo de conseguir con tecnologías más recientes. La recomendación de Microsoft al respecto es simple: si tienes que programar servicios, primero piensa en MVC; sólo si no cubre tus necesidades, evalúa la posibilidad de usar WCF.

El diagrama anterior también representa la modularización de ASP.NET Core. Ya no es un framework monolítico, compuesto por un único bloque, como ocurría en ASP.NET 4.x y anteriores, como vimos en el artículo anterior. Ahora son muchos los bloques que componen ASP.NET, y en nuestras aplicaciones estarán presentes únicamente aquellos que vayamos a necesitar. Como consecuencia directa, su evolución, actualizaciones o correcciones podrán ser más frecuentes y sencillas porque cada módulo podrá ser actualizado de forma independiente.

Y si seguimos hacia abajo en el diagrama, todavía quedan cosas interesantes por descubrir. A diferencia de sus antecesores, ASP.NET Core puede correr sobre distintos runtimes:

  • Por una parte, puede ejecutarse sobre el tradicional .NET framework 4.x completo, aunque por razones obvias esta opción limitará el entorno de explotación exclusivamente a Windows.
  • Pero por otra parte, las aplicaciones ASP.NET Core también pueden correr sobre el nuevo .NET Core, la base de toda la nueva tecnología de desarrollo web de Microsoft.

Con esto hemos dado un repaso rápido a las principales novedades que nos ofrece la nueva plataforma de desarrollo web de Microsoft y cómo se diferencia de la ya "tradicional" ASP.NET 4.x con MVC5. Como vemos, es muy diferente en muchos aspectos y lo mismo ocurre con ASP.NET MVC Core que se ejecuta sobre ésta.

Nota campusMVP: En nuestro curso de ASP.NET Core MVC se estudia a fondo la creación de aplicaciones Web con el nuevo framework de Microsoft. ¿Te lo vas a perder?

José María Aguilar José María atesora una amplísima experiencia trabajando en el mundo del desarrollo de software (programador, analista, responsable de informática, consultor, director técnico), principalmente con tecnologías Microsoft. Actualmente trabaja como consultor y desarrollador independiente, ofreciendo servicios tecnológicos a empresas e instituciones.
Es un reconocido experto en desarrollo web en todo el mundo, y es autor del libro de Microsoft Press "SignalR Programming in Microsoft ASP.NET".
Escribe regularmente artículos sobre ASP.NET MVC y otros temas relacionados con el desarrollo de software en su blog.
Puedes seguirlo en Twitter en @jmaguilar. Ver todos los posts de José María Aguilar

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (2) -

buen dia , tengo una pregunta, me podria decir cual es la diferencia entre net core y asp net core
y la diferencia entre net core y net core MVC?
soy nuevo este tema
espero su repuesta gracias.

Responder

Hola Juan:

En este artículo te lo explicamos todo: www.campusmvp.es/.../...llo-microsoft-en-2018.aspx

Saludos.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.