tutorial - Estoy perdido. ¿Qué pasó con ASP.NET MVC 5?
tutorial mvc core microsoft (2)
( Esta respuesta se actualiza regularmente cada vez que se realiza un nuevo anuncio de .NET y se ha actualizado con los detalles de ASP.NET Core 3.0, .NET 3 y .NET 5 )
Microsoft necesita una buena bofetada por la cantidad de confusión en los últimos 3 años sobre .NET Core / DNX, ASP.NET Core, .NET Standard, .NET 5 y el resto.
(y lo digo como antiguo FTE SE en DevDiv ... ("hola desde el edificio 16!") )
- ASP.NET alias "System.Web" ahora está muerto. ¡WebForms está muerto (hurra!)
- ASP.NET MVC lanzado en 2008 se construyó sobre ASP.NET, pero pasó por alto la mayor parte de la infraestructura de WebForms.
- ASP.NET MVC tiene su propia versión separada de ASP.NET y ASP.NET Web API (y ASP.NET Core ). Se ha vinculado a la documentación de ASP.NET MVC 5 ; esto no es lo mismo que ASP.NET 5 .
- La API web de ASP.NET lanzada en 2012 es una hermana de ASP.NET MVC , en el sentido de que también incorporó ASP.NET , pero tenía su propia biblioteca de clases (
System.Web.Http
) que no compartía mucho con ASP.NET MVC (System.Web.Mvc
). Tratar de combinar un servicio de API web ASP.NET con una aplicación web ASP.NET MVC en el mismo proyecto es un ejercicio de dolor. - ASP.NET MVC 5 se lanzó en 2014 como una actualización de ASP.NET MVC 4 . No está relacionado con ASP.NET 5 .
- ASP.NET MVC 6 nunca fue lanzado. Se incorporó a ASP.NET 5, que luego se convirtió en ASP.NET Core . Su objetivo era combinar ASP.NET MVC y ASP.NET Web API en una única plataforma.
- ASP.NET Core se lanzó en 2016 como un diseño mejorado de ASP.NET MVC 5 pero sin las dependencias de
System.Web.dll
o cualquier dependencia de IIS (ahora heredada) (por ejemplo, elIHttpHandler
solicitud anterior,IHttpHandler
yIHttpModule
ya no existen ).- Tenga en cuenta que el espacio de nombres raíz de la biblioteca de clases de ASP.NET Core ahora es
Microsoft.AspNet
y noSystem.Web
. Esto fue una fuente de confusión para mí. Esto significa que los proyectos de actualización de ASP.NET MVC y ASP.NET WebAPI a ASP.NET Core no son triviales, a pesar de que su arquitectura fundamental de Controladores y Middleware es la misma.
- Tenga en cuenta que el espacio de nombres raíz de la biblioteca de clases de ASP.NET Core ahora es
- .NET Core es una nueva versión de CLR y BCL que es explícitamente portátil y se ejecuta en Windows, Linux y macOS.
- Las bibliotecas de clase base de .NET Core 1.0 y .NET Core 2.0 se consideraron anémicas en comparación con el .NET Framework completo, que es exclusivo de Windows.
- Con .NET Core 3.0 y la fuente abierta de WinForms, WPF y otros componentes de .NET Framework, .NET Core ahora está preparado como un reemplazo para .NET Framework en Windows para el desarrollo de nuevas aplicaciones.
- .NET 5 será el nuevo nombre de .NET Core después de que se lance .NET Core 3 (se espera .NET 5 hacia fines de 2020).
- .NET 5 no tiene absolutamente nada que ver con ASP.NET 5.0 ni ASP.NET MVC 5 .
- No hay .NET Core 4 ni .NET Framework 5.0 .
Observo que "Core" es la marca de Microsoft para la generación actual de plataformas .NET que funcionan con .NET Core (es decir, no tienen dependencias de Windows y, por lo tanto, son portátiles). (Al igual que Microsoft puso "Activo" en las cosas en la década de 1990 si usaban COM o ActiveX, por ejemplo, Active Desktop, Active Channels, ActiMates, Active Directory, ActiveSync, etc.). - Además, Entity Framework Core aún carece de una gran cantidad de funcionalidades de Entity Framework 6, esto se debe a que es una reescritura, básicamente, pero finalmente llegará a la paridad.
Debido a que hay muchos tiempos de ejecución de .NET y BCL actualmente disponibles (.NET Framework, .NET Core, UWP, Xamarin (que usa Mono), Unity y otros) Microsoft introdujo .NET Standard, que es básicamente un reinicio del concepto de Portable Class Library: donde los proyectos de Visual Studio apuntan a un subconjunto conocido de funcionalidad común en lugar de una implementación específica. (Solo deseo que empiecen la numeración de la versión de 4 para que coincida con .NET Framework en lugar de comenzar con la versión 1.0
porque eso me hizo pensar en el 2001 nuevo) . Pero la parte importante es ASP.NET Core 1 y ASP. NET Core 2 apunta a .NET Standard en lugar de .NET Core, lo que significa que ASP.NET Core se ejecuta sobre .NET Framework en Windows, además de ejecutarse sobre .NET Core también.
Observo que todas las técnicas de compatibilidad multiplataforma .NET anteriores son ahora obsoletas (incluida la orientación a subconjuntos de Compact Framework, bibliotecas de clases portátiles e incluso "Proyectos compartidos" en Visual Studio), ya que estaban destinadas a otras ediciones de .NET que no son ya no existe, como .NET Compact Framework, XNA, Silverlight y el subconjunto de Windows Phone 7.
En mayo de 2019, Microsoft anunció ".NET 5" . En resumen, .NET Framework está siendo reemplazado por .NET Core (específicamente: la próxima versión de .NET Core después de .NET Core 3.0 se llamará .NET 5 ). Este anuncio no tiene nada que ver con ASP.NET Core , aparte del hecho de que .NET 5 será totalmente compatible con las aplicaciones ASP.NET Core 3.0 que se ejecutan en él. (ASP.NET Core 4 probablemente será lanzado para entonces de todos modos)
En resumen:
- ASP.NET MVC 5 fue un sucesor de corta duración de ASP.NET MVC 4 , lanzado junto con ASP.NET Web API 2 . En realidad se ejecutó sobre ASP.NET 4 (es decir, la versión .NET 4.x de
System.Web.dll
). La plataforma ASP.NET MVC ahora está obsoleta. - ASP.NET 5 fue EOL y se renombró como ASP.NET Core e incluye la funcionalidad de "ASP.NET MVC 5" incorporado.
- ASP.NET Core 1 y ASP.NET Core 2 pueden ejecutarse en .NET Core (multiplataforma) o .NET Framework (Windows) porque se dirige a .NET Standard.
- ASP.NET Core 3 ahora solo se ejecuta en .NET Core 3.0 .
Todos ellos (en orden cronológico):
- ASP.NET 1 - 2001. Incluye WebForms . Se ejecutó en .NET Framework 1.0 y 1.1.
System.Web.dll
. - ASP.NET 2.0 - 2005. Incluye WebForms . Se ejecutó en .NET Framework 2.0.
System.Web.dll
. - ASP.NET MVC 1 y ASP.NET MVC 2 - 2008-2009. Corrió en la parte superior de ASP.NET 2.0.
System.Web.Mvc.dll
. - ASP.NET 4.0 - 2010. Incluye WebForms . Se ejecutó en .NET Framework 4.0. No había ASP.NET 3.0 .
System.Web.dll
. - ASP.NET MVC 3 y ASP.NET MVC 4 - 2010-2013. Corrió en la parte superior de ASP.NET 4.0.
System.Web.Mvc.dll
. - ASP.NET Web Api 1 - 2012. Se ejecutó sobre ASP.NET 4.0 .
System.Web.Http.dll
. - ASP.NET MVC 5 - 2013. Solo una actualización más para ASP.NET MVC . Se ejecutó sobre ASP.NET 4.0, pero también podría ejecutarse de forma independiente sin
System.Web.dll
bajo OWIN. - ASP.NET Web API 2 - 2013. Hermanos de ASP.NET MVC 5 . También podría ejecutarse sin ASP.NET 4.0 bajo OWIN.
- ASP.NET MVC 6 - 2014-2015. Abortado después de alcanzar el estado de Release Candidate y reiniciado como ASP.NET Core MVC 1.0 en 2016, que es el componente MVC y API web de ASP.NET Core 1 .
- ASP.NET 5 - 2014. Gran reinicio de ASP.NET descrito aquí . Los principales cambios incluyeron la combinación de MVC, páginas web y API web, y la eliminación de los formularios web . ASP.NET 5 alcanzó el estado de Release Candidate pero luego fue renombrado como ASP.NET Core . Nunca ha habido un ASP.NET 6 .
- ASP.NET Core 1 - 2016. Se ejecuta en .NET Framework 4.5 o .NET Core 1.0 .
- .NET Core - 2016. Portátil y mínimo .NET en tiempo de ejecución y biblioteca de clases.
- .NET Standard - 2017. Una forma para que los programas se dirijan a un conjunto común de funcionalidades que estarán presentes en todas las implementaciones de .NET (.NET Framework 4.5 y posteriores, .NET Core 2.0 y posteriores, Xamarin, etc.).
- ASP.NET Core 2 - 2017-2018: donde estamos hoy. Se ejecuta en .NET Framework 4.6.1 o .NET Core 2.0 . (A finales de 2018 ahora existe ASP.NET Core 2.1).
- ASP.NET Core 3 : a fines de octubre de 2018, Microsoft anunció que ASP.NET Core 3.0 ahora solo se ejecutará en el próximo .NET Core 3.0 (por lo que ya no se ejecutará en .NET Framework 4.7.x). Este es un movimiento controvertido porque significa que ahora no hay una ruta de actualización de ASP.NET Core 2.xa ASP.NET Core 3.x para las aplicaciones que se ejecutan en .NET Framework 4.7.x debido a las dependencias que no admiten .NET Core aún, lo que significa que probablemente no habrá un estándar .NET 3.0.
- ASP.NET Core 3.0 en .NET 5 : en el anuncio de .NET 5 de mayo de 2019, Microsoft declaró que las aplicaciones ASP.NET Core 3.0 se ejecutarán en .NET 5. Actualmente no está claro si las aplicaciones ASP.NET Core 2.x Poder ejecutarse sin modificaciones en .NET 5.
Cronograma y diagrama de bloques
(Me dejé llevar haciendo esto ...)
He estado manteniendo mi cabeza abajo trabajando en varios proyectos y al parecer Microsoft ha estado ocupado haciendo algunos cambios grandes y me está confundiendo. ASP.NET Core llegó a mi radar cuando instalé Visual Studio 2017 el año pasado, fui a crear un nuevo proyecto y de repente tuve opciones de .NET Framework, .NET Standard y .NET Core. Así que los examiné un poco y vi que los dos últimos son, de alguna manera, versiones abreviadas del marco completo. Leí esta publicación de Scott Hanselman. ASP.NET 5 está muerto. Presenté ASP.NET Core 1.0 y .NET Core 1.0 . También encontré esto, lo que me alejó de ASP.NET Core: elegir entre ASP.NET y ASP.NET Core . Mi conclusión fue "El núcleo es nuevo, estás bien si sigues utilizando el marco completo". Así que creé un nuevo sitio de ASP.NET MVC usando .NET Framework 4.6.2 y Microsoft.AspNet.Mvc 5.2.3.
Desde la creación de ese proyecto, encontré lo que parecían ser algunos errores tanto en MVC como en Entity Framework, solo para encontrar que la única mención de ellos en la web parece estar en Core y ese es el único lugar donde se considera que se están arreglando.
Ahora, hoy, estoy tratando de buscar la documentación en System.Web.Mvc.Controller y System.Web.Mvc.JsonResult y se ha ido, excepto en la documentación del Core. ¿Finalmente lo desenterré here donde dice que ya no se mantiene?
Entendí mucho sobre Core y dije: "bien, ¿por qué debería importarme? Voy a seguir haciendo lo que estoy haciendo y lo comprobaré cuando haya terminado". Pero ahora parece que 4.6.2 ya ni siquiera es compatible. ¿Alguien puede explicar lo que está pasando? ¿Mi proyecto NET 4.6.2 / MVC 5.2.3 ahora está obsoleto antes de que termine de escribirlo? Si no es así, ¿por qué se ha retirado y escondido la documentación? Me preocupa que algunas de mis dependencias ni siquiera estén disponibles o sean compatibles con Core.
Esta respuesta intentará centrarse solo en ASP.NET MVC 5 y en el menor ASP.NET Core posible.
Ciclo de vida del producto
Microsoft aún lo admite, y aún no se ha anunciado el final de la vida útil,
Marco / Retiro del producto
ASP.NET MVC 4 de julio de 2019
ASP.NET MVC 5
Así que si te gusta, sigue usándolo. Recuerde que los usuarios de VB6 y ASP clásico todavía son compatibles con Microsoft.
.NET Framework 4.5.2 y versiones posteriores aún son compatibles si verifica la documentación de Microsoft sobre el ciclo de vida del producto.
Mantenimiento
Sin embargo, debe notar que ASP.NET MVC 5 está en modo de mantenimiento, ya que los recursos de desarrollo están casi todos en ASP.NET Core en este momento.
Usted consigue
- Parches impredecibles lanzados desde NuGet.org.
Si supervisa los paquetes relevantes de NuGet, debería notar que incluso recientemente Microsoft los actualiza para remediar las vulnerabilidades de seguridad, etc.
- Documentación bloqueada.
El aviso que vio en Microsoft Docs, de hecho, se enfatiza en la primera oración: "Ya no estamos actualizando este contenido regularmente". Eso tiene mucho sentido, ya que ASP.NET MVC 5 es sólido como una roca, por lo que no debe esperar que se agreguen nuevos materiales.
- Correcciones de errores muy limitadas y nuevas características.
Usted dijo "Desde la creación de ese proyecto, encontré lo que parecían ser algunos errores tanto en MVC como en Entity Framework, solo para encontrar que la única mención de ellos en la web parece estar en Core y ese es el único lugar donde se considera que se están solucionando. . "
Bueno, realmente depende de qué "errores" estás hablando. Como dije anteriormente, los problemas relacionados con la seguridad aún se están reparando, pero es menos probable que los errores con soluciones o limitaciones funcionales se solucionen. Es un proyecto de código abierto, por lo que si realmente lo desea, puede solucionar los problemas por su cuenta, como último recurso.
Por el lado de las nuevas características, Microsoft hace backport algunas características de ASP.NET Core, como la inyección de dependencias, el nuevo sistema de configuración, para simplificar la migración en cierta medida. Pero no esperes mucho.
Migración
Considera migrar a ASP.NET Core si puedes.