Microsoft compte désormais .NET Core, .NET Framework et Xamarin (Mono) dans sa famille .NET.
Il semble y avoir beaucoup de chevauchement ici. Quelle est la différence entre ces types de .NET ? Quand devrais-je choisir d'utiliser .NET Core dans mon projet, plutôt que .NET Framework ou Xamarin ?
Vous devriez utiliser .NET Core, plutôt que .NET Framework ou Xamarin, dans les 6 scénarios typiques suivants, selon la documentation [ici][1].
1. Besoins multiplateformes
Clairement, si votre objectif est d'avoir une application (web/service) qui doit pouvoir fonctionner sur plusieurs plateformes (Windows, Linux et MacOS), le meilleur choix dans l'écosystème .NET est d'utiliser .NET Core car son moteur d'exécution (CoreCLR) et ses 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 soutenu par Microsoft et fera l'objet d'un investissement important à l'avenir. Lorsque l'on utilise .NET Core sur plusieurs plates-formes, la meilleure expérience de développement existe sur Windows avec Visual Studio IDE qui prend en charge de nombreuses fonctions de productivité, notamment la gestion de projet, le débogage, le contrôle de la source, le remaniement, l'édition riche avec Intellisense, les tests et bien plus encore. Mais le développement riche est également pris en charge par Visual Studio Code sur Mac, Linux et Windows, y compris l'intellisense et le débogage. Même les éditeurs tiers comme Sublime, Emacs, VI et d'autres fonctionnent bien et peuvent obtenir l'intellisense 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, dynamiquement évolutifs, avec ou sans état, le grand avantage que vous avez ici est que vous pouvez utiliser différentes technologies/frameworks/langues au niveau du microservice. Cela vous permet d'utiliser la meilleure approche et la meilleure technologie pour chaque microservice de votre système. Ainsi, si vous souhaitez construire des microservices très performants et évolutifs, vous devriez utiliser .NET Core. Par la suite, si vous devez utiliser une bibliothèque .NET Framework qui n'est pas compatible avec .NET Core, il n'y a pas de problème, vous pouvez construire ce microservice avec .NET Framework et, à l'avenir, vous pourrez peut-être le remplacer par .NET Core. Les plates-formes d'infrastructure que vous pouvez utiliser sont nombreuses. Idéalement, pour les systèmes de microservices importants et complexes, vous devriez 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 qu'en juin 2016, toutes les technologies au sein d'Azure ne prennent pas en charge .NET Core, mais la prise en charge de .NET Core dans Azure va augmenter considérablement maintenant que .NET Core est sorti en version RTM.
3. Systèmes les plus performants et évolutifs
Lorsque votre système a besoin des meilleures performances et de la meilleure évolutivité possibles pour obtenir la meilleure réactivité, quel que soit le nombre d'utilisateurs, c'est là que .NET Core et ASP.NET Core se distinguent vraiment. Plus vous pouvez en faire avec la même quantité d'infrastructure/matériel, plus l'expérience de vos utilisateurs finaux sera riche, et ce à moindre coût. Pourtant, vous devez en faire plus alors que votre système est en pleine croissance et que vous avez besoin d'une plus grande évolutivité et de meilleures performances 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 mieux faire évoluer votre système sur des grappes de machines, des machines virtuelles et des cœurs de processeur. Ce n'est pas seulement une question de satisfaction de l'utilisateur ; cela peut aussi faire une énorme différence en termes de coût/TCO. C'est pourquoi il est important de rechercher la performance et l'évolutivité. Comme nous l'avons mentionné, si vous pouvez isoler de petits éléments de votre système sous forme de microservices ou de toute autre approche faiblement couplée, ce sera mieux car vous pourrez non seulement faire évoluer chaque petit élément/microservice indépendamment et avoir une meilleure agilité et maintenance à long terme, mais vous pourrez également utiliser toute autre technologie au niveau des microservices si ce que vous devez faire n'est pas compatible avec .NET Core. Et finalement, vous serez en mesure de le remanier et de l'amener à .NET Core lorsque cela sera possible.
4. Développement en ligne de commande pour Mac, Linux ou Windows.
Cette approche est facultative lorsque vous utilisez .NET Core. Vous pouvez aussi utiliser l'EDI Visual Studio complet, bien sûr. 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 les CLI. Il fournit des outils de ligne de commande simples disponibles sur toutes les plateformes 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 expérience IDE riche. Les développeurs peuvent désormais choisir le niveau auquel ils souhaitent interagir avec la chaîne d'outils, de la CLI à l'éditeur en passant par l'IDE.
5. Besoin d'avoir côte à côte les versions de .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% de côte à côte comme expliqué précédemment dans ce document.
6. Applications .NET UWP de Windows 10.
En outre, vous pouvez également vouloir lire :
- [Quand dois-je NON utiliser .NET Core ?][2]
- [Quand dois-je quand même utiliser .NET Framework 4.x au lieu de .NET Core ?
- [Quand dois-je utiliser Xamarin, au lieu de .NET Core ?][4]. [1] : https://blogs.msdn.microsoft.com/cesardelatorre/2016/06/27/net-core-1-0-net-framework-xamarin-the-whatand-when-to-use-it [2] : https://blogs.msdn.microsoft.com/cesardelatorre/2016/06/27/net-core-1-0-net-framework-xamarin-the-whatand-when-to-use-it/#use-netcore [3] : https://blogs.msdn.microsoft.com/cesardelatorre/2016/06/27/net-core-1-0-net-framework-xamarin-the-whatand-when-to-use-it/#use-netframework [4] : https://blogs.msdn.microsoft.com/cesardelatorre/2016/06/27/net-core-1-0-net-framework-xamarin-the-whatand-when-to-use-it/#use-xamarin
Voici comment Microsoft l'explique :
[[.NET Framework, .NET Core, Xamarin][1]] [1]]
.NET Framework est la version " complète " ou " traditionnelle " de .NET qui est distribuée avec Windows. Utilisez-la lorsque vous créez une application de bureau Windows ou UWP, ou lorsque vous travaillez avec une ancienne version d'ASP.NET 4.6+.
.NET Core est une version multiplateforme de .NET qui fonctionne sur Windows, Mac et Linux. Utilisez-le lorsque vous souhaitez créer des applications web ou de console qui peuvent fonctionner sur n'importe quelle plate-forme, y compris dans des conteneurs Docker. Cela n'inclut pas actuellement les applications UWP/de bureau.
Xamarin est utilisé pour créer des applications mobiles qui peuvent fonctionner sur des appareils iOS, Android ou Windows Phone.
Xamarin fonctionne généralement au-dessus de Mono, qui est une version de .NET conçue pour le support multiplateforme avant que Microsoft ne décide de passer officiellement au multiplateforme avec .NET Core. Comme Xamarin, la plateforme Unity fonctionne également au-dessus de Mono.
Un point de confusion courant concerne la place d'ASP.NET Core. ASP.NET Core peut fonctionner au-dessus de .NET Framework (Windows) ou de .NET Core (multiplateforme), comme l'explique cette réponse : Différence entre ASP.NET Core (.NET Core) et ASP.NET Core (.NET Framework)
Vous pouvez vous référer à cette ligne - https://stackoverflow.com/questions/37684508/difference-between-asp-net-core-net-core-and-asp-net-core-net-framework/37684644#37684644
[!NET Framework, .NET Core, Xamarin] [1]] [1]]
Xamarin n'est pas du tout un débat. Lorsque vous souhaitez créer des applications mobiles (iOS, Android et Windows Mobile) en utilisant 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 permettant de 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 créer des applications Windows 10 et mobiles. ASP.NET Core est utilisé pour créer des applications Web basées sur un navigateur.
Si vous voulez plus de détails, consultez les liens suivants https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles/standard/choosing-core-framework-server