đĄ Cet article marque le dernier de lâannĂ©e 2025 : je prends maintenant un congĂ© bien mĂ©ritĂ© pour la pĂ©riode des fĂȘtes et je vous invite Ă en faire autant. On se retrouve le 12 janvier prochain pour le prochain article.
Préambule
Passer de .NET Framework Ă .NET moderne reprĂ©sente une Ă©tape importante pour tout dĂ©veloppeur souhaitant rester Ă jour dans lâĂ©cosystĂšme Microsoft. Ce plan de formation a Ă©tĂ© conçu pour accompagner cette transition de maniĂšre progressive et concrĂšte.
Lâobjectif est dâaider les dĂ©veloppeurs et architectes Ă :
- Comprendre les différences fondamentales entre .NET Framework et .NET (Core) ;
- Explorer les nouvelles versions de .NET, leurs cycles de support (LTS / STS) et leurs améliorations ;
- Découvrir les nouveaux outils et pratiques (configuration moderne, DI intégrée, hosting model, etc.) ;
- Se familiariser avec les technologies clĂ©s de lâĂ©cosystĂšme actuel : ASP.NET Core, Entity Framework Core, TestContainers, Aspire, GitHub Copilot, et plus encore.
Quâest-ce que .NET ? Microsoft .NET est une plateforme de dĂ©veloppement offrant un Ă©cosystĂšme riche pour crĂ©er des applications de tous types (web, bureau, mobiles, services, etc.). Historiquement, on distinguait .NET Framework (lancĂ© en 2002) et .NET Core (lancĂ© en 2016). Aujourdâhui, le terme « .NET » dĂ©signe principalement la version moderne issue de .NET Core, unifiĂ©e Ă partir de .NET 5 en 2020. Ă lâinverse, .NET Framework 4.x est lâancienne version « legacy », dĂ©sormais figĂ©e (la 4.8 Ă©tant la derniĂšre).
Quelles sont les grandes différences entre les deux ?
- Multiplateforme vs Windows uniquement : .NET moderne est cross-platform : une application .NET peut sâexĂ©cuter sur Windows, Linux ou macOS avec les mĂȘmes performances. Le dĂ©veloppement nâest plus limitĂ© Ă Windows : on peut coder sous Visual Studio Code ou dâautres Ă©diteurs sur Linux/macOS, en plus de Visual Studio sous Windows. En comparaison, .NET Framework Ă©tait uniquement compatible Windows.
- Open source et innovation : Le nouveau .NET est open source et évolue rapidement. La communauté peut contribuer aux améliorations du runtime et des bibliothÚques via GitHub. .NET Framework, lui, était en grande partie fermé et évolue trÚs peu depuis 2019.
- Performance et scalabilitĂ© : .NET (Core) a Ă©tĂ© repensĂ© pour ĂȘtre beaucoup plus performant. Le runtime optimisĂ© et lâenvironnement dâexĂ©cution (CLR) font dâASP.NET Core lâun des frameworks web les plus rapides selon TechEmpower. Ă lâinverse, .NET Framework est plus lourd et moins optimisĂ© pour les scĂ©narios modernes (microservices, conteneurs, etc.).
- ModularitĂ© et dĂ©ploiement : .NET Core introduit une architecture modulaire (via NuGet) et permet le dĂ©ploiement autoâcontenu (les runtimes nĂ©cessaires peuvent ĂȘtre embarquĂ©s avec lâapplication). .NET Framework, en revanche, est installĂ© au niveau du systĂšme et partagĂ© par toutes les applications, ce qui rend les mises Ă jour dĂ©licates. De plus, .NET moderne autorise dâinstaller plusieurs versions en parallĂšle sur la mĂȘme machine (side-by-side), chaque application peut cibler sa version de runtime sans conflit. Avec .NET Framework, une seule version 4.x est active Ă la fois sur Windows, limitant la flexibilitĂ©.
- APIs et fonctionnalitĂ©s disponibles : .NET Core a rattrapĂ© et mĂȘme dĂ©passĂ© .NET Framework sur la plupart des fonctionnalitĂ©s. Certains anciens modules (Web Forms, WCF, WorkflowâŠ) ne sont disponibles que sous .NET Framework, mais ils ont souvent des alternatives modernes (par ex. gRPC Ă la place de WCF). Le nouveau .NET inclut Ă©galement de nouveaux frameworks (ASP.NET Core, Blazor, MAUI pour le multiplateforme, etc.) non prĂ©sents dans lâancien.
En rĂ©sumĂ©, .NET « Core » unifiĂ© est lâavenir de lâĂ©cosystĂšme .NET, idĂ©al pour tout nouveau projet, tandis que .NET Framework sert uniquement Ă maintenir dâanciennes applications sur Windows.
à écouter :
Ăvolution des versions .NET 6 Ă .NET 10
Pour chaque version majeure de .NET (de la version 6 Ă la version 10), vous trouverez ci-dessous au moins une vidĂ©o explicative des nouveautĂ©s ainsi que lâarticle dĂ©taillĂ© de Stephen Toub sur les amĂ©liorations techniques (notamment de performance) de cette version.
.NET 6 (2021 - 2024)
- VidĂ©os : Whatâs New in .NET 6 and C# 10? - .NET 6 deep dive et Whatâs new in C# 10
- Article : Performance Improvements in .NET 6 - Performance Improvements in .NET 6 - .NET Blog
.NET 7 (2022 - 2024)
- VidĂ©os : Whatâs New in .NET 7 C# 11? - .NET 7 Overview et Whatâs New in C# 11
- Article : Performance Improvements in .NET 7 - Performance Improvements in .NET 7 - .NET Blog
.NET 8 (2023 - 2026)
- VidĂ©os : Whatâs New in .NET 8 C# 12? - Whatâs new in .NET 8 et Every New Feature Added in C# 1.
- Article : Performance Improvements in .NET 8 - Performance Improvements in .NET 8 - .NET Blog.
.NET 9 (2024 - 2026)
- VidĂ©os : Whatâs New in .NET 9 C# 13? - Whatâs new in .NET 9 & C# 13 et Whatâs New in .NET 9.
- Article : Performance Improvements in .NET 9 - Performance Improvements in .NET 9 et Performance Improvements in .NET 9 - .NET Blog.
.NET 10 (2025 - 2028)
- VidĂ©o : Whatâs New in .NET 10 C# 14? - csproj is GONE! âdotnet run app.csâ is Here
- Article : Performance Improvements in .NET 10 - Performance Improvements in .NET 10 - .NET Blog
Le cycle de support de LTS versus STS avec .NET Core
Depuis .NET Core 3.1, Microsoft suit un cycle de publication fixe pour .NET avec une alternance entre versions LTS (Long-Term Support) et STS (Standard-Term Support).
LTS - Long-Term Support
- Support officiel de 3 ans
- Idéal pour les applications critiques ou à cycle de vie long
- Mises à jour de sécurité et corrections sans changements de rupture
- Exemples : .NET 6 (LTS), .NET 8 (LTS), .NET 10 (LTS)
STS - Standard-Term Support
- Support étendu à 24 mois depuis .NET 9 (contre 18 mois auparavant)
- AccÚs anticipé aux nouveautés du runtime et du langage
- Adapté aux projets agiles pouvant adopter un rythme de mise à jour régulier
- Exemples : .NET 7 (18 mois), .NET 9 (24 mois)
Vidéo explicative recommandée :
DiffĂ©rences entre les outils de lâĂ©cosystĂšme .Net Framework Ă .NET Core
Le passage de .NET Framework Ă .NET Core sâaccompagne de nombreux changements dâoutils, de conventions et de choix technologiques par dĂ©faut.
Voici un aperçu des évolutions les plus notables :
Remplacements technologiques fréquents
| Outil / Approche (Framework) | Ăvolution / Remplacement en .NET Core+ | Commentaire |
|---|---|---|
| Autofac (DI) | DI natif intégré à ASP.NET Core | Autofac est toujours compatible, mais plus nécessaire pour la plupart des cas |
| Web.config, app.config | appsettings.json + configuration par injection | Plus flexible, hiérarchique, supporte IOptions |
| System.Web | Supprimé, remplacé par ASP.NET Core Hosting & Middleware | Architecture légÚre, cross-platform |
| Global.asax | Remplacé par Program.cs et Startup.cs ou minimal hosting | Démarrage centralisé simplifié |
| IIS exclusivement | Cross-platform (Kestrel, Nginx, Apache, etc.) | Kestrel est souvent utilisé en production |
| csproj verbeux | Nouveau format SDK-style (<Project Sdk="...">) | Plus simple, support multi-targeting |
| MSBuild-based NuGet restore | dotnet restore intégré au build | Plus rapide, CLI unifiée |
| Project.json (obsolÚte depuis Core 1.x) | Fusionné dans le nouveau format csproj moderne | Stabilisation du modÚle de projet |
Changements frĂ©quents dans lâĂ©cosystĂšme .NET Core et modernes
MĂȘme entre les versions de .NET Core, certains outils ou comportements Ă©voluent :
- Swagger / Swashbuckle : Ă©tait activĂ© par dĂ©faut dans certains templates .NET 5/.NET 6 (notamment dans les APIs), ce nâest plus le cas en .NET 9/10. Il faut lâajouter et le configurer manuellement.
- Hosting Model : depuis .NET 6, le modÚle minimal de démarrage (
Program.cssimplifié) est devenu la norme, remplaçant la combinaison Startup.cs +Program.cs. - HTTP Logging natif : ajouté dans .NET 6, souvent oublié.
- Prise en charge des tests avec dotnet test : meilleure intégration CLI, y compris pour les tests en parallÚle.
- Nouvelle maniÚre de gérer les secrets utilisateurs : dotnet user-secrets introduit depuis .NET Core 2, mais plus encouragé avec les secrets Azure pour les apps cloud.
Changement de licences dans lâĂ©cosystĂšme .NET
Un point important Ă connaĂźtre : Microsoft et dâautres Ă©diteurs ont modifiĂ© les licences de nombreux packages dans lâĂ©cosystĂšme .NET, ce qui a un impact sur :
- Lâutilisation commerciale de certains outils open source
- La compatibilité avec certaines entreprises ou environnements sensibles
- Les pratiques de contribution ou de fork
Article recommandé : https://codewithfrenchy.com/posts/changement-de-licence-ecosysteme-dotnet/
Développement web avec ASP.NET Core
ASP.NET Core est la plateforme web principale de .NET moderne. Elle permet de créer des applications performantes, testables, sécurisées et facilement déployables, grùce à une architecture modulaire, multiplateforme et cloud-ready.
Vidéo recommandée :
AccÚs aux données avec Entity Framework Core
Entity Framework Core (EF Core) est lâORM moderne de Microsoft pour .NET. Il remplace EF6 dans lâĂ©cosystĂšme .NET Core et sâintĂšgre naturellement Ă lâinjection de dĂ©pendances, Ă la configuration moderne et aux API REST.
Vidéo recommandée :
Migration dâune application ASP.NET MVC (Framework) vers ASP.NET Core
Migrer une application .NET Framework Ă .NET Core est un projet structurant. Il ne sâagit pas dâun simple âportageâ, mais bien dâune reconstruction partielle dans un Ă©cosystĂšme diffĂ©rent, plus modulaire, plus performant et multiplateforme.
Playlist recommandée : https://www.youtube.com/watch?v=zHgYDZK3MrA&list=PLdo4fOcmZ0oWiK8r9OkJM3MUUL7_bOT9z
Déploiement local et dans le cloud (Azure App Services)
DĂ©ployer une application ASP.NET Core en 2025 peut se faire trĂšs facilement, aussi bien localement quâen environnement cloud. Comprendre les options disponibles et les outils recommandĂ©s est essentiel pour industrialiser son projet.
Vidéo recommandée :
Bonus
Structure moderne des solutions
Passer Ă .NET 6 jusquâĂ .NET 10 implique dâadopter de nouvelles conventions de structure et dâorganisation du code. Une architecture propre facilite la maintenabilitĂ©, les tests, la scalabilitĂ© et les bonnes pratiques DevOps.
Vidéo recommandée :
Roadmap
LâĂ©cosystĂšme .NET Ă©volue rapidement, notamment avec .NET 8/9/10, les microservices, le cloud et la montĂ©e en puissance de la performance et de la productivitĂ©. En 2025, un dĂ©veloppeur .NET moderne devrait idĂ©alement maĂźtriser plusieurs axes, Ă la fois techniques et mĂ©thodologiques.
Vidéo recommandée :
Moderniser une application .NET avec GitHub Copilot
GitHub Copilot, basĂ© sur lâIA, peut assister les dĂ©veloppeurs dans la modernisation dâune application existante en lâaccĂ©lĂ©rant.
Vidéo recommandée :
Faciliter les essais
Dans les versions récentes de .NET, Microsoft a introduit plusieurs outils pour faciliter les tests automatisés sans avoir besoin de dépendances tierces.
Deux nouveautés trÚs utiles sont :
TimeProvider/FakeTimeProviderILogger<T>/FakeLogger<T>
Articles recommandés : https://grantwinney.com/how-to-use-timeprovider-and-faketimeprovider/ et https://www.freecodecamp.org/news/how-to-use-fakelogger-to-make-testing-easier-in-net
Tester contre des conteneurs réels avec les TestContainers
TestContainers est une bibliothÚque .NET qui permet de lancer des services Docker (bases de données, RabbitMQ, Redis, etc.) dans un environnement de test, à la volée. Elle garantit des tests réalistes, isolés et reproductibles.
Câest une solution idĂ©ale pour remplacer :
- Les scripts SQL manuels dâinitialisation
- Les bases de données en dur sur la machine du développeur
- Les mocks peu fiables de services externes
Article recommandé : https://codewithfrenchy.com/posts/introduction-testcontainers/
Aspire : orchestrer des applications
Aspire est une stack dâorchestration proposĂ©e par Microsoft, conçue pour faciliter le dĂ©veloppement, la configuration, lâobservation et le dĂ©ploiement dâapplications cloud natives composĂ©es de plusieurs projets ou services.
Câest une rĂ©ponse directe aux dĂ©fis rencontrĂ©s avec les microservices, les BFF, les APIs, les workers, etc.
Playlist : Migrating From Docker Compose to Aspire (my experience) - YouTube