web-dev-qa-db-fra.com

Différence entre l'utilisation de l'application Web ASP.NET Core (.NET Core) avec net461 définie comme infrastructure unique et l'utilisation du modèle (.NET Framework)

Avec la sortie de .NET Core RC2, Microsoft a créé 3 modèles d’applications Web:

  • Application Web ASP.NET (.NET Framework) - L'ancien
  • Application Web ASP.NET Core (.NET Framework) - la nouvelle, à héberger uniquement sur Windows
  • Application Web ASP.NET Core (.NET Core) - Linux, OSX, Windows

J'essaie d'utiliser le nouveau modèle d'application Web principale, mais sans essayer de cibler Linux, OSX ni Windows, il semble donc que l'application Web principale ASP.NET (.NET Framework) me convienne parfaitement. Cela m'a pris un certain temps, mais j'ai appris que pour ajouter une bibliothèque de classes qui fonctionnerait avec ce type de projet, vous devez ajouter une bibliothèque de classes (.NET Core) et modifier la section de frameworks afin qu'elle ne soit que net461 pour correspondre à l'application Web.

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

Ma question:

Quelle est la différence entre la création d’une application Web ASP.NET Core (.NET Core) et celle de project.json faisant de net461 le seul framework cible

et

il suffit de créer un projet d’application Web principale ASP.NET (.NET Framework) qui ne comprend que net461 par défaut.

Existe-t-il une autre différence que je ne connais pas, comme la manière dont les projets sont publiés, etc.?

59
Blake Rivell

Quelle est la différence entre la création d’une application Web ASP.NET Core (.NET Core) et la création de project.json pour.NET461 le seul Framework cible

C'est la même chose que de faire un projet ASP.NET Core Web Application (.NET Framework). Le type de projet entre les deux est déterminé par le fichier .csproj Et vous l'avez modifié dans votre .csproj De cibler .NET Core Pour cibler le .NET Framework. Dans les versions précédentes/bêta de ASP.NET Core, Il était possible d’avoir les deux Frameworks dans un fichier project.json (Qui a été remplacé par un fichier simplifié .csproj Dans .NET Core 2.0. les développeurs .NET sont familiers) mais vous ne pouvez en publier qu’un seul.

il suffit de créer un projet d'application Web principale ASP.NET (.NET Framework) qui inclut uniquement .NET461 par défaut.

Existe-t-il une autre différence dont je ne suis pas au courant, comme la manière dont les projets sont publiés, etc. Si vous ciblez le .NET Framework et non le .NET Core, votre application ne peut pas être multiplateforme et votre application ne peut s'exécuter que sous Windows et non pas Linux/Mac.

La raison pour laquelle il existe une application Web distincte ASP.NET Core (.NET Core) Et une application Web ASP.NET Core (.NET Framework) Est que cette dernière vous permet d'utiliser des fonctions , packages ou bibliothèques tierces dépendant de Windows et du même .NET Framework ou version ultérieure devront être installés sur la machine.

Le premier n'a pas l'exigence .NET Framework Mais permet à votre application d'être multi-plateforme et lorsque vous publiez votre application, elle publie tous les fichiers dll .NET Core Dépendants dans le répertoire de publication de manière à contourner le Exigence d'installation de .NET Framework.

Cela affectera également la compilation si vous ciblez .NET Core Et utilisez une fonction ou un package spécifique à Windows, vous obtiendrez une erreur de compilation.

Vous pouvez facilement basculer entre les deux en ajustant votre .csproj Pour cibler l'un ou l'autre.

Microsoft Docs

Vous devez utiliser .NET Core pour votre application serveur lorsque:

  • Vous avez des besoins multi-plateformes.

  • Vous ciblez des microservices.

  • Vous utilisez des conteneurs Docker.

  • Vous avez besoin de systèmes hautes performances et évolutifs.

  • Vous devez disposer côte à côte des versions .NET par application.

Vous devez utiliser .NET Framework pour votre application serveur lorsque:

  • Votre application utilise actuellement .NET Framework (il est recommandé d'étendre au lieu de migrer)
  • Vous devez utiliser des bibliothèques .NET tierces ou des packages NuGet non disponibles pour .NET Core.
  • Vous devez utiliser les technologies .NET qui ne sont pas disponibles pour .NET Core.
  • Vous devez utiliser une plate-forme qui ne prend pas en charge .NET Core.

Mise à jour (2018/10/30)

Il a été annoncé que ASP.Net Core 3, Qui a une date de publication dans 2019 Q1 , ne supportera que .NET Core Et [~ # ~] pas [~ # ~] .NET Framework

Comme annoncé sur le blog .NET plus tôt ce mois-ci, le .NET Framework bénéficiera de moins en moins de nouvelles fonctionnalités de la plate-forme et du langage fournies à .NET Core, en raison de la nature de la mise à jour en place du .NET Framework et de la volonté de limiter changements qui pourraient casser des applications existantes. Pour que ASP.NET Core puisse pleinement exploiter les améliorations apportées à .NET Core, ASP.NET Core ne fonctionnera que sur .NET Core à partir de la version 3.0. À l'avenir, vous pouvez simplement penser à ASP.NET Core comme faisant partie de .NET Core.

Les clients utilisant actuellement ASP.NET Core sur .NET Framework peuvent continuer à le faire de manière totalement prise en charge à l'aide de la version 2.1 LTS. Le support et la maintenance pour la version 2.1 continueront au moins jusqu'au 21 août 2021 (3 ans après sa déclaration en tant que version LTS) conformément à la politique de support .NET.

42
devfric

Commencez par constater la différence entre les fichiers project.json lorsque vous créez des applications Web ASP.NET Core ciblant différents frameworks.

difference between asp.net core with different frameworks

Selon votre question, si vous modifiez la structure dans Project.json d’application Web principale ASP.NET Core (.NET Core), vous devez uniquement avoir net461 et de sauvegarder, il va restaurer les paquets et donnera l'erreur suivante.

enter image description here

Si vous supprimez la dépendance Microsoft.NETCore.App et enregistrez le fichier, il restaure les dépendances et ne génère aucune erreur.

Si vous remarquez la première image, celle-ci est finalement devenue une application Web ASP.NET Core avec .NET Framework.

8
Nipuna

J'étais confus au début aussi. La principale différence est que l'application Web ASP.NET (.NET Framework) est l'asp.net normal utilisé. Il contient le dossier App_Start web.config, Global.asax, etc. (comme MVC5, vous avez l’idée ...).

Alors que l’application Web principale ASP.NET (.NET Framework) est une infrastructure principale (MVC6). (Non dépendant de System.Web). Tout nouveau projet.json .. startup.cs et program.cs etc ... Et il prend également en charge toutes les anciennes bibliothèques du framework .net.

4
pawan nepal

avec .net core, vous pouvez exécuter votre application de pages Web sous Linux ou Mac OS, alors que .net ne sera utile que pour Windows, c’est-à-dire moins portable.