.NET Core contre ASP.NET Core

Réponses:

209

Mise à jour 2020 : notez qu'ASP.NET Core 3 et les versions ultérieures dépendent désormais de .NET Core et ne peuvent plus être utilisés sur .NET Framework. La description ci-dessous concerne ASP.NET Core 1.x-2.x; la séparation des couches est toujours vraie pour ASP.NET Core 3.0, mais la couche ASP.NET Core ne peut plus être utilisée par-dessus .NET Framework dans 3.0+.

.NET Core est un runtime. Il peut exécuter des applications conçues pour lui.

ASP.NET Core est une collection de bibliothèques qui forment un Framework pour la création d'applications Web. Les bibliothèques ASP.NET Core peuvent être utilisées à la fois sur .NET Core et sur le «.NET Framework complet» (fourni avec Windows depuis de nombreuses années).

La partie déroutante est qu'une application utilisant les bibliothèques et les outils d'ASP.NET Core est généralement appelée «Application ASP.NET Core», qui en théorie ne dit pas si elle est construite pour .NET Core ou .NET Framework. Ainsi, une «application ASP.NET Core» est également une «application .NET Core» ou une «application .NET Framework».

Cette image montre la relation entre les technologies impliquées (tirée de ce billet de blog ) Technologies d'application Web .NET

Ici, vous pouvez voir qu'ASP.NET Core est construit «sur» à la fois .NET Framework et .NET Core, tandis que «ASP.NET» (maintenant souvent appelé «ASP.NET classique») est uniquement .NET Framework.

Martin Ullrich
la source
22
Alors, qu'est-ce que nous appelons ASP classique? "Ancien ASP"? : p
Dan Schnau
1
donc si l'application est développée en utilisant ASP.NET Core alors sur le serveur Web devons-nous installer .NET Core Runtimeet ASP.NET Core runtimeou tout simplement ASP.NET Core runtimesuffit
LP13
Cela dépend de la version, la 2.1 la divisera un peu, mais tant que vous installez les "bundles d'hébergement" sur les serveurs, tout devrait bien se passer. Si vous développez pour ASP.NET Core sur .NET Framework, vous avez toujours besoin du bundle d'hébergement pour le module IIS nécessaire
Martin Ullrich
3
@DanSchnau, nous avons "Classic ASP", "ASP.NET" AKA "Classic ASP.NET" et "ASP.NET Core", donc pas de conflit du tout :)
Gouda
@ LP13: Il n'y a pas de "ASP.NET Core Runtime", c'est juste un tas de packages qui ne peuvent pas fonctionner par lui-même (sans .NET Core pré-installé ou expédié en tant qu'application autonome)
Tseng
43

ASP.NET Core utilisant .NET Core - toutes les dépendances sont autonomes, peuvent utiliser la plupart des packages NuGet, ne peuvent pas utiliser de packages spécifiques à Windows, peuvent s'exécuter sur Windows, Linux et Mac.

ASP.NET Core utilisant .NET Framework - la plupart des dépendances sont autonomes, s'exécutent uniquement sur Windows, auront accès aux packages NuGet spécifiques à Windows, nécessitent la version .NET Framework ciblée installée sur l'ordinateur.

Nathan Alard
la source
8
Qui nomme ces choses? C'est super déroutant.
Nick le
1
@Nick: marketing Microsoft. Ils en ont une longue histoire. Ils n'ont pas encore découvert le Web - en utilisant des noms communs pour les produits (pas bien dans un monde de moteur de recherche où des mots plus spécifiques moins courants sont meilleurs, de préférence des mots uniques ne figurant pas dans le dictionnaire).
Peter Mortensen le
23

ASP.NET Core est l'une des charges de travail prises en charge par .NET Core.

À partir du guide .NET Core :

En lui-même, .NET Core comprend un seul modèle d'application - les applications de console - qui est utile pour les outils, les services locaux et les jeux textuels. Des modèles d'application supplémentaires ont été créés au-dessus de .NET Core pour étendre ses fonctionnalités, tels que:

  • ASP.NET Core
  • Plateforme Windows universelle Windows 10 (UWP)
  • Xamarin.Forms
v-andrew
la source
C'est une réponse plus pertinente pour moi. .Net Core pour l'application console, ASP.Net Core pour l'application Web.
Shawn Zhang le
5

Le .NET Framework est sur sa dernière version. Il n'y en aura pas d'autre après 4.8. Microsoft continuera avec .NET Core. À partir de ce moment, vous devriez préférer .NET Core sur vos projets.

Sinan Bozkuş
la source
2

En plus de cela, j'aimerais ajouter que cela pourrait aider quelqu'un.

Il existe quelque chose appelé injection de middleware dans le pipeline de requêtes .NET Core. Si elle est correctement mise en œuvre, elle est très utile, car elle peut intercepter automatiquement les exceptions d'application et rend la journalisation beaucoup plus facile en un seul endroit au lieu de se connecter à toutes les méthodes.

rahul
la source
Pouvez-vous ajouter une ou plusieurs références / liens à votre réponse?
Peter Mortensen le