mvc - Diferencia entre.NET Framework 4.6,.Net Native y.Net Core
net core vs mvc (2)
Después de revisar varios enlaces y videos, encontré una imagen interesante en su conjunto:
De lo anterior, podríamos deducir fácilmente lo siguiente:
- .NET Framework 4.6 es un marco completo para todo lo relacionado con .NET, pero carece de bibliotecas y tiempo de ejecución optimizado para implementaciones multiplataforma (Windows, Linux y Mac) y en la nube
- .NET Core, por otro lado, es un subconjunto de .NET Framework 4.6 que está optimizado principalmente para implementaciones multiplataforma y en la nube
- .NET Native se usa principalmente para desarrollar aplicaciones universales que estarán bastante optimizadas para ejecutarse en cualquier dispositivo y plataforma, de forma nativa (aunque no para las aplicaciones web)
Un punto interesante es ASP.NET:
- Si necesitamos compatibilidad con versiones anteriores en toda su extensión (por ejemplo, formularios web o soporte aspx), debemos utilizar .NET Framework 4.6
- Si desarrollamos páginas web MVC, API web o Razor, entonces podemos implementar esas aplicaciones web en .NET Framework 4.6 o .NET Core.
Veo lo siguiente en casi todas las discusiones futuras de .NET Framework:
- .NET Framework 4.6 (marco completo .Net)
- .NET Native
- .NET Core
¿Cuál es la diferencia entre todos estos?
¿Cómo sé cuándo usar el apropiado?
TLDR : si es Core, es un subconjunto de funcionalidades para que pueda ejecutarse multiplataforma. Todo lo que pueda ejecutar en Core se puede ejecutar en el marco completo 4.6 para Windows.
.NET Framework v4.6 : el marco completo que solo puede ejecutarse en Windows. Sin embargo, debido a que este es el marco completo , eso significa que obtienes WCF, WPF y toda la funcionalidad. Puede pensar en esto como su desarrollo normal de Windows .NET que probablemente esté haciendo hoy. Incluye ASP.NET WebForms, MVC, Core y SignalR. Si está utilizando .NET 4.5 hoy, esta es su próxima ruta de actualización natural.
.NET Core : un marco de subconjunto que no incluye todo en el Marco completo 4.6. Sin embargo, está destinado a correr multiplataforma en Windows, Mac o Linux. Sin embargo, pierde alguna funcionalidad, como WCF, WPF. Pero aún tendrá ASP.NET Core (sin WebForms), pero aún no SignalR. El soporte de SignalR está destinado a venir en una versión posterior. Esto utiliza la CLI dotnet (interfaz de línea de comandos) para compilar aplicaciones, o si está en Windows, puede usar Visual Studio.
.NET Native : compilación nativa del marco .NET Core. En lugar de hacer una compilación JIT normal en tiempo de ejecución de su .exe, esto hará una compilación AOT que potencialmente puede hacer algunas optimizaciones mejores de su código usando el compilador de backend C ++ (o LLVM usando LLILC ). Cuando haces esto, estás apuntando a una plataforma específica, como "Linux 64-bit". Los beneficios son tiempos de inicio más rápidos, requisitos de memoria potencialmente más pequeños, con un mejor rendimiento de tiempo de ejecución y emite un solo archivo binario (no necesitará instalar .NET Framework en la máquina de destino). Sin embargo, la compensación es la portabilidad a otras plataformas: tendrá binarios separados para Linux, MacOS, Windows, 32 bits, 64 bits, etc. Esto actualmente solo funciona para las aplicaciones de la Tienda Windows, pero se está haciendo más trabajo para que así sea '' Funcionará en aplicaciones .NET normales, incluidas las aplicaciones ASP.NET. Actualmente no está programado para ser parte de la versión .NET Core 1.0.
ASP.NET Core
: la nueva forma de hacer desarrollo web en .NET Core o Full Framework.
Incluye una canalización HTTP personalizable, un servidor web Kestrel y
mejores
perfiles de
rendimiento
que la versión anterior de ASP.NET 4.x.
Esto es compatible con plataformas cruzadas tanto en el marco completo como en el marco Core.
No incluye WebForms o soporte de SignalR (
yet
).
No es compatible con ASP.NET 4, aunque si está usando MVC / WebAPI ahora, MVC / WebAPI en adelante debería estar bastante cerca ya que solo habrá una clase de
Controller
.
Si desea utilizar WebForms, no tiene más remedio que quedarse con el Framework 4.6 completo.
Entity Framework Core : el nuevo marco para el desarrollo de ORM. Una vez llamado EF7, es el marco ORM multiplataforma que funciona tanto para la pila 4.6 completa como para la nueva pila Core. No es retrocompatible con EF6. Solo es compatible con un modelo de código primero. Puede haber herramientas en el futuro para ayudar a actualizar los archivos EF6 .edmx existentes para generar las clases para la implementación de EFCore de código primero.