Quelle est la différence entre .NET Core, .NET Framework et Xamarin?

362

Microsoft a désormais .NET Core, .NET Framework et Xamarin (Mono) dans sa famille .NET.

Il semble y avoir beaucoup de chevauchements ici. Quelle est la différence entre ces types de .NET? Quand dois-je choisir d'utiliser .NET Core dans mon projet, au lieu de .NET Framework ou Xamarin?

MeeChao
la source
2
Bonne question! Voici un article supplémentaire sur le framework .net et le core .net. pogsdotnet.blogspot.sg/2017/11/… Merci!
Allan Chua

Réponses:

269

Vous devez utiliser .NET Core, au lieu de .NET Framework ou Xamarin, dans les 6 scénarios typiques suivants selon la documentation ici .

1. Besoins multiplateformes

De toute évidence, si votre objectif est d'avoir une application (web / service) qui devrait pouvoir s'exécuter sur plusieurs plates-formes (Windows, Linux et MacOS), le meilleur choix dans l'écosystème .NET est d'utiliser .NET Core comme runtime (CoreCLR ) et les bibliothèques sont multiplateformes. L'autre choix est d'utiliser le projet mono.

Les deux choix sont open source, mais .NET Core est directement et officiellement pris en charge par Microsoft et aura un investissement lourd à l'avenir.

Lorsque vous utilisez .NET Core sur plusieurs plates-formes, la meilleure expérience de développement existe sous Windows avec l'IDE Visual Studio qui prend en charge de nombreuses fonctionnalités de productivité, y compris la gestion de projet, le débogage, le contrôle de code source, la refactorisation, l'édition riche, notamment Intellisense, les tests et bien plus encore. Mais un développement riche est également pris en charge à l'aide de Visual Studio Code sur Mac, Linux et Windows, y compris Intellisense et le débogage. Même les éditeurs tiers comme Sublime, Emacs, VI et bien plus fonctionnent bien et peuvent obtenir l'intellect de l'éditeur en utilisant le projet open source Omnisharp.

2. Microservices

Lorsque vous construisez un système orienté microservices composé de plusieurs microservices indépendants, évolutifs dynamiquement, avec état ou sans état, le grand avantage que vous avez ici est que vous pouvez utiliser différentes technologies / frameworks / langages au niveau du microservice. Cela vous permet d'utiliser la meilleure approche et la meilleure technologie par micro-zones de votre système, donc si vous souhaitez créer des microservices très performants et évolutifs, vous devez utiliser .NET Core. Finalement, si vous devez utiliser une bibliothèque .NET Framework qui n'est pas compatible avec .NET Core, il n'y a aucun problème, vous pouvez créer ce microservice avec .NET Framework et à l'avenir, vous pourrez peut-être le remplacer par .NET Coeur.

Les plateformes d'infrastructure que vous pourriez utiliser sont nombreuses. Idéalement, pour les systèmes de microservices volumineux et complexes, vous devez utiliser Azure Service Fabric. Mais pour les microservices sans état, vous pouvez également utiliser d'autres produits comme Azure App Service ou Azure Functions.

Notez que depuis juin 2016, toutes les technologies au sein d'Azure ne prennent pas en charge le .NET Core, mais la prise en charge de .NET Core dans Azure augmentera considérablement maintenant que .NET Core est disponible en version RTM.

3. Systèmes les plus performants et évolutifs

Lorsque votre système a besoin des meilleures performances et évolutivité possibles pour que vous obteniez la meilleure réactivité quel que soit le nombre d'utilisateurs, c'est alors que .NET Core et ASP.NET Core brillent vraiment. Plus vous pouvez faire avec la même quantité d'infrastructure / matériel, plus l'expérience que vous aurez pour vos utilisateurs finaux sera riche - à moindre coût.

L'époque des améliorations des performances de la loi de Moore pour les processeurs simples ne s'applique plus; Pourtant, vous devez en faire plus pendant la croissance de votre système et vous avez besoin d'une évolutivité et de performances plus élevées pour les utilisateurs les plus exigeants de tous les jours, dont le nombre augmente de façon exponentielle. Vous devez être plus efficace, optimiser partout et évoluer mieux sur des clusters de machines, de machines virtuelles et de cœurs de processeur, au final. Ce n'est pas seulement une question de satisfaction de l'utilisateur; cela peut également faire une énorme différence en termes de coût / TCO. C'est pourquoi il est important de viser les performances et l'évolutivité.

Comme mentionné, si vous pouvez isoler de petits morceaux de votre système en tant que microservices ou toute autre approche à couplage lâche, ce sera mieux car vous pourrez non seulement faire évoluer chaque petit morceau / microservice indépendamment et avoir un meilleur à long terme l'agilité et la maintenance, mais vous pourrez également utiliser toute autre technologie au niveau du microservice si ce que vous devez faire n'est pas compatible avec .NET Core. Et finalement, vous pourrez le refactoriser et l'apporter à .NET Core lorsque cela sera possible.

4. Développement de style de ligne de commande pour Mac, Linux ou Windows.

Cette approche est facultative lors de l'utilisation de .NET Core. Bien sûr, vous pouvez également utiliser l'IDE Visual Studio complet. Mais si vous êtes un développeur qui souhaite développer avec des éditeurs légers et une utilisation intensive de la ligne de commande, .NET Core est conçu pour CLI. Il fournit des outils de ligne de commande simples disponibles sur toutes les plates-formes prises en charge, permettant aux développeurs de créer et de tester des applications avec une installation minimale sur les machines de développement, de laboratoire ou de production. Les éditeurs comme Visual Studio Code utilisent les mêmes outils de ligne de commande pour leurs expériences de développement. Et les IDE comme Visual Studio utilisent les mêmes outils CLI mais les cachent derrière une riche expérience IDE. Les développeurs peuvent désormais choisir le niveau qu'ils souhaitent interagir avec la chaîne d'outils de CLI à l'éditeur à IDE.

5. Besoin côte à côte de versions .NET par niveau d'application.

Si vous voulez pouvoir installer des applications avec des dépendances sur différentes versions de frameworks dans .NET, vous devez utiliser .NET Core qui fournit 100% côte à côte comme expliqué précédemment dans ce document.

6. Applications Windows 10 UWP .NET.

En outre, vous pouvez également lire:

  1. Quand ne dois-je PAS utiliser .NET Core?
  2. Quand dois-je toujours utiliser .NET Framework 4.x, au lieu de .NET Core?
  3. Quand dois-je utiliser Xamarin au lieu de .NET Core?
Fiona Bi
la source
17
Pourquoi asp.net Core est plus performant? Pourquoi est-ce mieux quand vous construisez des microservices?
Juan Zamudio
4
Maintenant Visual Studio pour Mac est également disponible. Donc, un autre point positif vers .NET Core. visualstudio.com/vs/visual-studio-mac
Husyn
8
Vos liens sont rompus
shaneparsons
2
@JuanZamudio Les versions du framework sont des couches monolithiques, chacune dépendant de la version immédiatement précédente, dans une chaîne de dépendances de retour à la version 2.0 qui a complètement remplacé 1.1. Par conséquent, si vous utilisez quelque chose de 4.5, vous dépendez implicitement de tout ce qui revient à 2.0. Le framework Core concerne davantage la refactorisation des dépendances pour éliminer les bagages non pertinents que la réécriture de l'API, qui est principalement mais pas entièrement inchangée. Certaines choses ont également été considérablement simplifiées, comme EF Core.
Peter Wone
Merci pour la réponse descriptive
Tolga Kartal
171

Voici comment Microsoft l'explique:

.NET Framework, .NET Core, Xamarin

.NET Framework est la version "complète" ou "traditionnelle" de .NET distribuée avec Windows. Utilisez-le lorsque vous créez une application Windows ou UWP de bureau ou travaillez avec une version plus ancienne d'ASP.NET 4.6+.

.NET Core est un .NET multiplateforme qui s'exécute sur Windows, Mac et Linux. Utilisez-le lorsque vous souhaitez créer une console ou des applications Web pouvant s'exécuter sur n'importe quelle plate-forme, y compris à l'intérieur des conteneurs Docker. Cela n'inclut pas actuellement les applications UWP / desktop.

Xamarin est utilisé pour créer des applications mobiles pouvant s'exécuter sur des appareils iOS, Android ou Windows Phone.

Xamarin fonctionne généralement au-dessus de Mono , qui est une version de .NET qui a été conçue pour la prise en charge multiplateforme avant que Microsoft ne décide officiellement de passer multiplateforme avec .NET Core. Comme Xamarin, la plate-forme Unity fonctionne également au-dessus de Mono.


Un point commun de confusion est l'endroit où ASP.NET Core s'intègre. ASP.NET Core peut s'exécuter au-dessus de .NET Framework (Windows) ou .NET Core (multiplateforme), comme détaillé dans cette réponse: Différence entre ASP. NET Core (.NET Core) et ASP.NET Core (.NET Framework)

Nate Barbettini
la source
3
Chaque fois que quelqu'un dit que .NET Core est multiplateforme, un nouveau développeur est confus. '.NET Core' prend en charge UWP + ASP.NET Core uniquement et ASP.NET Core est multiplateforme, UWP ne l'est pas.
Hassan Tareq
@HassanTareq Ce n'est pas tout à fait correct. .NET Core fait référence à l'environnement d'exécution et aux bibliothèques pouvant s'exécuter sur Windows, Mac ou Linux. ASP.NET Core est multiplateforme car .NET Core est multiplateforme.
Nate Barbettini
Ensuite, il serait utile pour les greenhorns si vous mentionnez que bien que le noyau .Net ( exécution et bibliothèques ) soit multiplateforme, nous ne pouvons pas utiliser l'application UWP sous Mac / Linux. UWP n'est pas multiplateforme, je m'attendais à ce que l'UWP soit une alternative multiplateforme de WPF (Xamarin.Forms l'est)
Hassan Tareq
@HassanTareq Bonne suggestion, j'ai modifié ma réponse.
Nate Barbettini
1
Xamarin Forms s'exécute désormais sur presque tout à partir d'une seule base de code. Bureau Windows UWP, bureau WPF, MacOS, iOS, Android et Tizen (téléviseurs). La valeur par défaut est de cibler .NET Standard à partir de l'implémentation Core. Bon temps!
Sean Anderson
35

Vous pouvez faire référence dans cette ligne - Différence entre ASP.NET Core (.NET Core) et ASP.NET Core (.NET Framework)

.NET Framework, .NET Core, Xamarin

Xamarin n'est pas du tout un débat. Lorsque vous souhaitez créer des applications mobiles (iOS, Android et Windows Mobile) à l'aide de C #, Xamarin est votre seul choix.

Le .NET Framework prend en charge les applications Windows et Web. Aujourd'hui, vous pouvez utiliser Windows Forms, WPF et UWP pour créer des applications Windows dans .NET Framework. ASP.NET MVC est utilisé pour créer des applications Web dans .NET Framework.

.NET Core est le nouveau cadre open source et multiplateforme pour créer des applications pour tous les systèmes d'exploitation, y compris Windows, Mac et Linux. .NET Core prend uniquement en charge UWP et ASP.NET Core. UWP est utilisé pour construire Windows 10 cible les applications Windows et mobiles. ASP.NET Core est utilisé pour créer des applications Web basées sur un navigateur.

vous voulez plus de détails référez-vous à ces liens
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles / standard / choose-core-framework-server

logeshpalani98
la source
12
  1. .NET est l'écosystème basé sur le langage c #
  2. .NET Standard est Standard (en d'autres termes, spécification) de .NET Ecosystem.

La bibliothèque de classes .Net Core est basée sur la norme .Net . .NET Standard, vous pouvez créer uniquement un projet de bibliothèque de classes qui ne peut pas être exécuté de manière autonome et doit être référencé par un autre projet exécutable .NET Core ou .NET Framework.Si vous souhaitez implémenter une bibliothèque portable sur .Net Framework , .Net Core et Xamarin , choisissez une bibliothèque standard .Net

  1. .NET Framework est un framework basé sur .NET et il prend en charge les applications Windows et Web

(Vous pouvez créer un projet exécutable (comme une application console ou une application ASP.NET) avec .NET Framework

  1. ASP.NET est une technologie de développement d'applications Web qui repose sur le .NET Framework
  2. .NET Core est également un framework basé sur .NET .

Il s'agit du nouveau cadre open source et multiplateforme permettant de créer des applications pour tous les systèmes d'exploitation, y compris Windows, Mac et Linux.

  1. Xamarin est un cadre pour développer une application mobile multiplateforme ( iOS, Android et Windows Mobile ) en utilisant C #

Prise en charge de la mise en œuvre de .NET Standard [bleu] et plate-forme viable minimale pour une prise en charge complète de .NET Standard (dernière version: [ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation- support] )

Razib Hossain
la source
Voter pour le tableau "Historique des versions". Ce n'est pas "l'historique des versions" de .net / standard ou core que vous avez reproduit. Il s'agit des versions de plate-forme viables minimales que vous pouvez utiliser si vous souhaitez faire correspondre une version standard .Net spécifique. EG: si vous voulez prendre en charge .NET Standard 1.4 sur Full .NET, la version la plus basse que vous pouvez utiliser est 4.6.1
shawty
Down Vote supprimé, maintenant que vous avez correctement mis à jour et documenté votre réponse :-)
shawty
Je pense que je vais juste développer sur Apple à la place ...
Richard Hammond
7

.NET 5 sera une version unifiée de toutes les variantes .NET à venir en novembre 2020, il ne sera donc plus nécessaire de choisir entre les variantes. entrez la description de l'image ici

yanlend
la source
1
C'est un mensonge. .NET Core ne peut pas prendre en charge WPF / WinForms sous Linux!
Vincent
C'est vrai, mais d'autres variantes de .NET ne le supportaient pas non plus. Le choix d'une variante de .NET a disparu, ce qui est une bonne chose.
yanlend
1

.NET Core est la version actuelle de .NET que vous devriez utiliser dès maintenant (plus de fonctionnalités, bugs corrigés, etc.)

Xamarin est une plate-forme qui fournit des solutions aux problèmes mobiles multiplateformes codés en C #, de sorte que vous n'avez pas besoin d'utiliser Swift séparément pour IOS et il en va de même pour Android.

Marto99
la source
2
Je dirais que .Net Core est ce que vous devriez utiliser si vous devez exécuter sous Linux ou Linux et Windows. Mais vous pourriez aussi défendre ce cas pour Mono, je pense. Il n'a certainement pas plus de fonctionnalités. Par définition, ce ne sont que les bits "de base", il n'a aucun des bits uniquement Windows, donc moins de fonctionnalités. Et je ne fais que deviner, mais il semble peu probable que .Net Core ait moins de bogues. Le .Net Framework existe dans le monde depuis près de deux décennies. J'imagine que c'est assez endurci à ce stade. Mais ce n'est qu'une supposition.
Jason Boyd
Il a certainement plus de nouvelles fonctionnalités, ils ont récemment ajouté de nouvelles classes qui ne seront pas ajoutées à .NET 4.8. Ils ont également porté WPF et WinForms. En fait, il semble que .NET Core pourrait remplacer .NET Framework. Il semble être plus performant non plus.
asdf
0

Xamarin est utilisé pour les applications téléphoniques (à la fois IOS / Android). Le .NET Core est utilisé pour concevoir des applications Web qui peuvent fonctionner à la fois sur Apache et IIS.

C'est la différence en deux phrases.

user10868910
la source
Hmm .. bien à part manquer la 3ème option (framework .net) ce n'est pas tout à fait vrai. Le noyau .NET peut être utilisé sur à peu près tout (Web, bureau, mobile, cloud, jeux, IoT, etc.). .NET Framework est centré sur Windows et a été entièrement fermé. Mono était la version open source (pilotée par la communauté) de .NET Framework utilisée par Xamarin qui mettait l'outillage mobile multiplateforme au-dessus de mono. Xamarin sera finalement remplacé, probablement par Blazor (actuellement pwa, mais hybride puis natif fait partie de la feuille de route).
shox
C'est vrai. Xamarin est destiné aux applications mobiles. Je ne pense pas qu'il sera bientôt remplacé. ASMX est toujours utilisé pour les services Web et inclus dans Visual 2019.
user10868910
-1

mis à jour en mai 2019

vous devez utiliser .Net Core 3.0 et plus tard la mise à niveau vers sa prochaine version .Net 5, tout ce dont vous avez besoin est une seule plate-forme unifiée .Net5

Il n'y aura qu'un seul .NET à l'avenir, et vous pourrez l'utiliser pour cibler> Windows, Linux, macOS, iOS, Android, tvOS, watchOS et WebAssembly et plus encore. https://devblogs.microsoft.com/dotnet/introducing-net-5/

yangching
la source
Cette réponse n'a pas de sens.
Kiril1512