usar porque net framework desventajas asp arquitectura aplicacion c# asp.net .net asp.net-core

c# - porque - Diferencia entre usar la aplicación web ASP.NET Core(.NET Core) con net461 establecido como el único marco y usar la plantilla(.NET Framework)



desventajas de de net core (4)

Con el lanzamiento de .NET Core RC2, Microsoft lo hizo, por lo que ahora hay 3 plantillas de aplicaciones web:

  • Aplicación web ASP.NET (.NET Framework): la antigua
  • Aplicación web ASP.NET Core (.NET Framework): la nueva, que se alojará solo en Windows
  • Aplicación web ASP.NET Core (.NET Core): Linux, OSX, Windows

Estoy tratando de usar la nueva plantilla de aplicación web principal, pero sin tratar de apuntar a Linux, OSX, Windows, por lo que parece que la aplicación web básica ASP.NET (.NET Framework) es perfecta para mí. Me tomó un tiempo, pero aprendí que para agregar una biblioteca de clases que funcione con este tipo de proyecto, debe agregar una Biblioteca de clases (.NET Core) y cambiar la sección de marcos para que solo sea net461 para que coincida con la aplicación web.

"frameworks": { "net461": { } }

Mi pregunta:

¿Cuál es la diferencia entre crear una aplicación web ASP.NET Core (.NET Core) y en project.json haciendo que net461 sea el único marco de destino

y

simplemente creando un proyecto de aplicación web ASP.NET Core (.NET Framework) que solo incluye net461 de manera predeterminada.

¿Hay alguna otra diferencia que no conozco, como la forma en que se publican los proyectos, etc.?


¿Cuál es la diferencia entre crear una aplicación web ASP.NET Core (.NET Core) y en project.json haciendo que .NET461 sea el único Framework de destino

Es lo mismo que hacer un proyecto de ASP.NET Core Web Application ( .NET Framework ). El tipo de proyecto entre los dos está determinado por el archivo .csproj y usted lo cambió en su .csproj de apuntar a .NET Core a apuntar a .NET Framework . En versiones anteriores / beta de ASP.NET Core , era posible tener ambos Frameworks en un archivo project.json (que ha sido reemplazado por un archivo .csproj simplificado en .NET Core 2.0 con el que más desarrolladores de .NET están familiarizados) pero solo puedes publicar en uno.

solo crea un proyecto de aplicación web ASP.NET Core (.NET Framework) que solo incluye .NET461 de forma predeterminada.

¿Hay alguna otra diferencia que no conozco, como la forma en que se publican los proyectos, etc. Si se dirige a .NET Framework y no a .NET Core, su aplicación no puede ser multiplataforma y su aplicación solo puede ejecutarse en Windows y no en Linux / Mac.

La razón de que haya una ASP.NET Core web ASP.NET Core ( .NET Core ) y una ASP.NET Core web ASP.NET Core ( .NET Framework ) separadas es porque esta última le permite utilizar funciones, paquetes o bibliotecas de terceros que dependen de Se requerirá la instalación de Windows y el mismo .NET Framework o superior en la máquina.

El primero no tiene el requisito de .NET Framework , pero permite que su aplicación sea multiplataforma y cuando publica su aplicación, publica todos los archivos dll de .NET Core dependientes en el directorio de publicación de esa manera, eludiendo el requisito de instalación de .NET Framework .

También afectará la compilación, ya que si apunta a .NET Core y hace uso de una función o paquete específico de Windows, obtendrá un error de compilación.

Puede cambiar fácilmente entre los dos ajustando su .csproj para seleccionar uno u otro.

Documentos de Microsoft

Debe usar .NET Core para su aplicación de servidor cuando:

  • Tienes necesidades multiplataforma.

  • Estás apuntando a microservicios.

  • Estás utilizando contenedores Docker.

  • Necesita alto rendimiento y sistemas escalables.

  • Necesita lado a lado de las versiones .NET por aplicación.

Debe usar .NET Framework para su aplicación de servidor cuando:

  • Su aplicación actualmente usa .NET Framework (la recomendación es extender en lugar de migrar)
  • Debe usar bibliotecas .NET de terceros o paquetes NuGet no disponibles para .NET Core.
  • Debe usar tecnologías .NET que no están disponibles para .NET Core.
  • Debe usar una plataforma que no sea compatible con .NET Core.

Actualización (2018/10/30)

Se ha announced que ASP.Net Core 3 que tiene una fecha de lanzamiento en 2019 Q1 , solo admitirá .NET Core y NO .NET Framework

Como se anunció en el Blog de .NET a principios de este mes, .NET Framework obtendrá menos de las nuevas funciones de plataforma y lenguaje que llegan a .NET Core en el futuro, debido a la naturaleza de actualización in situ de .NET Framework y el deseo de limitar cambios allí que podrían romper las aplicaciones existentes. Para garantizar que ASP.NET Core pueda aprovechar por completo las mejoras que llegan a .NET Core en el futuro, ASP.NET Core solo se ejecutará en .NET Core a partir de 3.0. En el futuro, simplemente puede pensar en ASP.NET Core como parte de .NET Core.

Los clientes que utilizan ASP.NET Core en .NET Framework hoy pueden continuar haciéndolo de manera totalmente compatible con la versión 2.1 LTS. El soporte y servicio para 2.1 continuará hasta al menos el 21 de agosto de 2021 (3 años después de su declaración como versión LTS) de acuerdo con la Política de soporte de .NET.


Estaba confundido al principio también. La principal diferencia es que la aplicación web ASP.NET (.NET Framework) es la asp.net normal que hemos estado usando. Contiene la carpeta App_Start web.config, Global.asax, etc. (Al igual que MVC5, ya tienes la idea ...).

Mientras que ASP.NET Core Web Application (.NET Framework) es un core framework (MVC6). (No depende de System.Web). Nuevo proyecto.json .. startup.cs y program.cs etc ... Y también es compatible con todas las bibliotecas antiguas de .net framework.


Primero vea la diferencia en los archivos project.json cuando cree aplicaciones web principales de ASP.NET dirigidas a diferentes marcos.

Según su pregunta, si cambia el marco en ASP.NET Core Web Application (.NET Core) project.json solo para tener net461 y guardar, restaurará los paquetes y dará el siguiente error.

Si elimina la dependencia de Microsoft.NETCore.App y guarda el archivo, nuevamente restaurará las dependencias y no dará ningún error.

Si observa la primera imagen, esta finalmente se ha convertido en una aplicación web ASP.NET Core con .NET Framework.


con .net core, puede ejecutar su aplicación de páginas web en Linux o mac os, mientras que .net solo será bueno para Windows, es decir, menos portátil.