Qu’est-ce que .NET ? Présentation et vue d’ensemble
.NET est une plateforme de développement, gratuite, multiplateforme et open source permettant de créer de nombreux types d’applications. .NET repose sur un runtime hautes performances utilisé en production par de nombreuses applications à grande échelle.
Applications cloud
- Applications cloud natives
- Aspire.NET
- Applications de console
- Fonctions serverless dans le cloud
- Applications web, API web et microservices
Applications clientes multiplateformes
Applications Windows
Autres types d’applications
Fonctionnalités
Les fonctionnalités .NET permettent aux développeurs d’écrire du code fiable et performant de manière productive.
- Code asynchrone
- Attributs
- Réflexion
- Analyseurs de code
- Délégués et expressions lambda
- Événements
- Exceptions
- Nettoyage de la mémoire
- Types génériques
- LINQ (Language Integrated Query).
- Programmation parallèle et thread managé
- Inférence de type - C#, F#, Visual Basic.
- Système des types
- Code unsafe
Utilisation de .NET
Les applications et bibliothèques .NET sont générées à partir du code source et d’un fichier projet, à l’aide de l’interface CLI .NET ou d’un environnement de développement intégré (IDE) comme Visual Studio.
L’exemple suivant est une application .NET minimale :
Fichier projet :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
</Project>
Code source :
Console.WriteLine("Hello, World!");
L’application peut être générée et exécutée avec l’interface CLI .NET :
dotnet run
Hello, World!
Distributions binaires
- SDK .NET : ensemble d’outils, de bibliothèques et de runtimes pour le développement, la génération et le test d’applications.
- Runtimes .NET : ensemble de runtimes et de bibliothèques pour exécuter des applications.
Vous pouvez télécharger .NET à partir de :
Gratuit et open source
.NET est gratuit, open source et est un projet .NET Foundation. .NET est géré par Microsoft et la communauté sur GitHub dans plusieurs référentiels.
Les fichiers binaires et sources .NET sont concédés sous licence avec la licence MIT. Des licences supplémentaires s’appliquent à Windows pour les distributions binaires.
Support
Microsoft prend en charge .NET sur les systèmes d’exploitation Android, Apple, Linux et Windows. Il peut être utilisé sur les architectures Arm64, x64 et x86. Il est également pris en charge dans les environnements émulés, comme macOS Rosetta 2.
De nouvelles versions de .NET sont publiées annuellement en novembre. Les versions .NET en années impaires sont des versions LTS (Long-Term Support) et sont prises en charge pendant trois ans. Les versions en années égales sont des versions STS (Standard-Term Support) et sont prises en charge pendant 18 mois. Le niveau de qualité, les stratégies de changement cassants et tous les autres aspects des versions sont identiques. Pour plus d’informations, consultez Versions et support.
L’équipe .NET de Microsoft travaille en collaboration avec d’autres organisations pour distribuer et prendre en charge .NET de différentes façons.
Red Hat prend en charge .NET sur Red Hat Enterprise Linux (RHEL).
Samsung prend en charge .NET sur les plateformes Tizen.
Runtime
Le Common Language Runtime (CLR) est la base de toutes les applications .NET. Les fonctionnalités fondamentales du runtime sont les suivantes :
- Garbage collection.
- Sécurité de la mémoire et sécurité des types.
- Prise en charge générale des langages de programmation.
- Conception multiplateforme.
.NET est parfois appelé runtime « code managé ». Il est appelé managé principalement parce qu’il utilise un récupérateur de mémoire pour la gestion de la mémoire et parce qu’il applique la sécurité du type et de la mémoire. Le CLR virtualise (ou extrait) différents concepts de système d’exploitation et de matériel, tels que la mémoire, les threads et les exceptions.
Le CLR a été conçu pour être un runtime multiplateforme à partir de sa création. Il a été transféré vers plusieurs systèmes d’exploitation et architectures. Le code .NET multiplateforme n’a généralement pas besoin d’être recompilé pour s’exécuter dans de nouveaux environnements. Au lieu de cela, vous devez simplement installer un autre runtime pour exécuter votre application.
Le runtime expose différents services de diagnostic et API pour les débogueurs, des vidages et des outils de suivi, ainsi que l’observabilité. L’implémentation de l’observabilité est principalement basée sur OpenTelemetry, ce qui permet une supervision flexible des applications et l’ingénierie de fiabilité des sites (SRE).
Le runtime offre des fonctionnalités d’interopérabilité de style C de bas niveau, via une combinaison de P/Invoke, de types valeur et la possibilité d’utiliser blit pour des valeurs sur la limite de code natif/managé.
Langages
Le runtime est conçu pour prendre en charge plusieurs langages de programmation. Les langages C#, F# et Visual Basic sont pris en charge par Microsoft et sont conçus en collaboration avec la communauté.
C# est un langage de programmation moderne, orienté objet et de type sécurisé. Il prend sa source dans la famille de langages C et sera immédiatement reconnaissable pour les programmeurs en C, C++, Java et JavaScript.
F# est un langage de programmation interopérable permettant d’écrire du code succinct, robuste et performant. La programmation F# est orientée données, où le code implique de transformer des données avec des fonctions.
Visual Basic utilise une syntaxe plus détaillée plus proche du langage humain ordinaire. Il peut s’agir d’un langage plus facile à apprendre pour les personnes novices en matière de programmation.
Compilation
Les applications .NET (telles qu’écrites dans un langage général comme C#) sont compilées dans un en langage intermédiaire (IL). IL est un format de code compact qui peut être pris en charge sur n’importe quel système d’exploitation ou architecture. La plupart des applications .NET utilisent des API prises en charge dans plusieurs environnements, nécessitant uniquement l’exécution du runtime .NET.
IL doit être compilé en code natif pour s’exécuter sur un processeur, par exemple Arm64 ou x64. .NET prend en charge les modèles de compilation AOT (Ahead-Of-Time) et JIT (Just-In-Time).
- Sur Android, macOS et Linux, la compilation JIT est la valeur par défaut, et AOT est facultatif (par exemple, avec ReadyToRun).
- Sur iOS, AOT est obligatoire (sauf lors de l’exécution dans le simulateur).
- Dans les environnements WebAssembly (Wasm), AOT est obligatoire.
L’avantage du JIT est qu’il peut compiler une application (non modifiée) aux instructions de l’UC et aux conventions d’appel dans un environnement donné, conformément au système d’exploitation et au matériel sous-jacents. Il peut également compiler du code à des niveaux supérieurs ou inférieurs de qualité pour permettre de meilleures performances de démarrage et de débit à état stable.
L’avantage d’AOT est qu’il fournit le meilleur démarrage de l’application et peut (dans certains cas) entraîner des déploiements plus petits. L’inconvénient principal est que les fichiers binaires doivent être générés pour chaque cible de déploiement distincte (identique à tout autre code natif). Le code AOT n’est pas compatible avec certains modèles de réflexion.
Bibliothèques Runtime
.NET dispose d’un ensemble complet de bibliothèques de classes. Ces bibliothèques fournissent des implémentations pour de nombreux types et fonctionnalités utilitaires spécifiques aux charges de travail et à usage général.
Voici quelques exemples de types définis dans les bibliothèques runtime .NET :
- Chaque type .NET dérive du type System.Object.
- Types de valeurs primitives, tels que System.Boolean et System.Int32.
- Collections, comme System.Collections.Generic.List<T> et System.Collections.Generic.Dictionary<TKey,TValue>.
- Types de données, tels que System.Data.DataSet et System.Data.DataTable.
- Types d’utilitaires réseau, tels que System.Net.Http.HttpClient.
- Types d’utilitaires d’E/S de fichier et de flux, tels que System.IO.FileStream et System.IO.TextWriter.
- Types d’utilitaires de sérialisation, tels que System.Text.Json.JsonSerializer et System.Xml.Serialization.XmlSerializer.
- Types hautes performances, comme System.Span<T>, System.Numerics.Vector et Pipelines.
Pour plus d’informations, consultez la vue d’ensemble des bibliothèques runtime.
Gestionnaire de package NuGet
NuGet est le gestionnaire de package pour .NET. Il permet aux développeurs de partager des fichiers binaires compilés entre eux. NuGet.org propose de nombreux packages populaires de la communauté.
Outils
Le Kit de développement logiciel (SDK) .NET est un ensemble de bibliothèques et d’outils pour le développement et l’exécution d’applications .NET. Il inclut le moteur de génération MSBuild, le compilateur Roslyn (C# et Visual Basic) et le compilateur F#. La plupart des commandes sont exécutées à l’aide de la commande dotnet
. Les outils CLI peuvent être utilisés pour le développement local et l’intégration continue.
La famille Visual Studio d’IDE offre une excellente prise en charge de .NET et des langages C#, F# et Visual Basic.
Les fonctionnalités de sécurité GitHub Codespaces et GitHub prennent en charge .NET.
Notebooks
.NET Interactive est un groupe d’outils et d’API CLI qui permettent aux utilisateurs de créer des expériences interactives sur le web, markdown et notebooks.
Pour plus d’informations, consultez les ressources suivantes :
- Didacticiel .NET dans le navigateur
- Utilisation de notebooks .NET avec Jupyter sur votre machine
- Documentation interactive .NET
CI/CD
MSBuild et .NET CLI peuvent être utilisés avec différents outils et environnements d’intégration continue, tels que :
Pour plus d’informations, consultez Utiliser le Kit de développement logiciel (SDK) .NET dans les environnements d’intégration continue (CI).
Modèles de déploiement
Les applications .NET peuvent être publiées dans deux modes différents :
- Les applications autonomes incluent le runtime .NET et les bibliothèques dépendantes. Il peut s’agir d’un fichier unique ou d’un fichier multiple. Les utilisateurs de l’application peuvent l’exécuter sur un ordinateur sur lequel le runtime .NET n’est pas installé. Les applications autonomes ciblent toujours une seule configuration de système d’exploitation et d’architecture.
- Les applications dépendantes de l’infrastructure nécessitent une version compatible du runtime .NET, généralement installée globalement. Les applications dépendantes de l’infrastructure peuvent être publiées pour une configuration de système d’exploitation et d’architecture unique ou comme « portables », ciblant toutes les configurations prises en charge.
Les applications .NET sont lancées avec un exécutable natif, par défaut. L’exécutable est spécifique au système d’exploitation et à l’architecture. Les applications peuvent également être lancées avec la commande dotnet
.
Les applications peuvent être déployées dans des conteneurs. Microsoft fournit des images conteneur pour différents environnements cibles.
Historique .NET
En 2002, Microsoft a publié .NET Framework, une plateforme de développement pour la création d’applications Windows. Aujourd’hui, .NET Framework est à la version 4.8 et reste entièrement pris en charge par Microsoft.
En 2014, Microsoft a introduit .NET Core en tant que successeur multiplateforme et open source de .NET Framework. Cette nouvelle implémentation de .NET a conservé le nom .NET Core via la version 3.1. Le nom de la version suivant .NET Core 3.1 ne comportait pas la mention « Core ». Elle était nommée .NET 5.
Les nouvelles versions de .NET continuent d’être publiées annuellement, chacune d’elles étant un numéro de version majeur supérieur. Elles incluent de nouvelles fonctionnalités significatives et permettent souvent de nouveaux scénarios.
Écosystème .NET
Il existe plusieurs variantes de .NET, chacune prenant en charge un type d’application différent. La raison de ces multiples variantes est à la fois historique et technique.
Implémentations .NET (ordre historique) :
- .NET Framework : il fournit un accès aux fonctionnalités étendues de Windows et Windows Server. Également largement utilisé pour le cloud computing basé sur Windows. .NET d’origine.
- Mono : implémentation multiplateforme de .NET Framework. Communauté d’origine et .NET open source. Utilisé pour les applications Android, iOS et Wasm.
- .NET (Core) : implémentation multiplateforme et open source de .NET, repensée pour l’âge du cloud tout en restant sensiblement compatible avec .NET Framework. Utilisé pour les applications Linux, macOS et Windows.
Étapes suivantes
Commentaires
Soumettre et afficher des commentaires pour