.NET Core vs ASP.NET Core

Respuestas:

209

Actualización 2020 : tenga en cuenta que ASP.NET Core 3 y superior ahora dependen de .NET Core y ya no se pueden usar en .NET Framework. La siguiente descripción es para ASP.NET Core 1.x-2.x; la separación de capas sigue siendo válida para ASP.NET Core 3.0, pero la capa ASP.NET Core ya no se puede usar sobre .NET Framework en 3.0+.

.NET Core es un tiempo de ejecución. Puede ejecutar aplicaciones creadas para ello.

ASP.NET Core es una colección de bibliotecas que forman un Framework para construir aplicaciones web. Las bibliotecas ASP.NET Core se pueden usar tanto en .NET Core como en "Full .NET Framework" (que se ha incluido con Windows durante muchos años).

La parte confusa es que una aplicación que usa las bibliotecas y herramientas de ASP.NET Core generalmente se conoce como "Aplicación ASP.NET Core", que en teoría no dice si está construida para .NET Core o .NET Framework. Entonces, una "Aplicación Core de ASP.NET" es también una "Aplicación Core de .NET" o una "Aplicación Framework de .NET".

Esta imagen muestra la relación de las tecnologías involucradas (tomada de esta publicación de blog ) Tecnologías de aplicaciones web .NET

Aquí puede ver que ASP.NET Core está construido "encima" de .NET Framework y .NET Core, mientras que "ASP.NET" (ahora conocido como "ASP.NET clásico") es solo .NET Framework.

Martin Ullrich
fuente
22
Entonces, ¿qué llamamos ASP clásico? ¿"ASP antiguo"? : p
Dan Schnau
1
por lo que si la aplicación se desarrolla utilizando ASP.NET Core a continuación, en el servidor web lo que necesitamos para instalar .NET Core Runtimey ASP.NET Core runtimeo simplemente ASP.NET Core runtimees suficiente
LP13
Depende de la versión, 2.1 lo dividirá un poco, pero siempre que instales los "paquetes de hosting" en los servidores, deberías estar bien. Si desarrolla para ASP.NET Core en .NET Framework, aún necesita el paquete de alojamiento para el módulo IIS necesario
Martin Ullrich
3
@DanSchnau, tenemos "ASP clásico", "ASP.NET", también conocido como "ASP.NET clásico" y "ASP.NET Core", así que no hay ningún conflicto :)
Gouda
@ LP13: No hay un "ASP.NET Core Runtime", es solo un montón de paquetes que no pueden ejecutarse solos (sin .NET Core preinstalado o enviado como aplicación autónoma)
Tseng
43

ASP.NET Core con .NET Core : todas las dependencias son independientes, pueden usar la mayoría de los paquetes NuGet, no pueden usar paquetes específicos de Windows, pueden ejecutarse en Windows, Linux y Mac.

ASP.NET Core usando .NET Framework : la mayoría de las dependencias son independientes, solo se ejecutan en Windows, tendrán acceso a paquetes NuGet específicos de Windows, necesitan la versión de .NET framework que está instalada en la máquina.

Nathan Alard
fuente
8
¿Quién nombra estas cosas? Esto es súper confuso.
Nick
1
@ Nick: marketing de Microsoft. Tienen una larga historia de esto. Todavía no han descubierto la web, usando nombres comunes para productos (no es bueno en un mundo de motores de búsqueda donde las palabras menos comunes más específicas son mejores, preferiblemente palabras únicas que no están en el diccionario).
Peter Mortensen
23

ASP.NET Core es una de las cargas de trabajo compatibles con .NET Core.

De la guía de .NET Core :

Por sí solo, .NET Core incluye un modelo de aplicación único, aplicaciones de consola, que es útil para herramientas, servicios locales y juegos basados ​​en texto. Se han creado modelos de aplicaciones adicionales sobre .NET Core para ampliar su funcionalidad, como:

  • ASP.NET Core
  • Plataforma universal de Windows 10 (UWP) de Windows
  • Xamarin.Forms
v-andrew
fuente
Esta es una respuesta más relevante para mí. .Net Core para la aplicación de consola, ASP.Net Core para la aplicación web.
Shawn Zhang
5

.NET Framework está en su última versión. No habrá otro después de 4.8. Microsoft continuará con .NET Core. A partir de este momento, debe preferir .NET Core en sus proyectos.

Sinan Bozkuş
fuente
2

Además, me gustaría agregar que podría ayudar a alguien.

Hay algo llamado inyección de middleware en la canalización de solicitudes de .NET Core. Si se implementa correctamente, esto es muy útil, ya que puede interceptar excepciones de aplicaciones automáticamente y hace que el registro sea mucho más fácil en un lugar en lugar de iniciar sesión en todos los métodos.

rahul
fuente
¿Puedes agregar una o más referencias / enlaces a tu respuesta?
Peter Mortensen