Qu’est-ce que .NET ? Introduction et vue d’ensemble

.NET est uneplateforme de développement multiplateforme open source gratuite 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 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.

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>net7.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!

Il peut également être généré et exécuté en deux étapes distinctes. L’exemple suivant concerne une application nommée app :

% dotnet build
% ./bin/Debug/net6.0/app 
Hello, World!

Distributions binaires

  • Sdk .NET : ensemble d’outils, de bibliothèques et de runtimes pour le développement, la création et le test d’applications.
  • Runtimes .NET : ensemble de runtimes et de bibliothèques pour l’exécution d’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.

La source et les fichiers binaires .NET sont concédés sous licence MIT. Des licences supplémentaires s’appliquent sur 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 chaque année en novembre. Les versions .NET des années impaires sont Long-Term versions de support (LTS) et sont prises en charge pendant trois ans. Les versions des années paires sont Standard-Term versions STS (Support) et sont prises en charge pendant 18 mois. Le niveau de qualité, les stratégies de changement cassant et tous les autres aspects des versions sont les mêmes. Pour plus d’informations, consultez Versions et support.

L’équipe .NET de Microsoft collabore avec d’autres organisations pour distribuer et prendre en charge .NET de différentes manières.

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 sur laquelle reposent 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 de « code managé ». Il est appelé géré 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 dès sa création. Il a été porté 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, il vous suffit d’installer un autre runtime pour exécuter votre application.

Le runtime expose différents services et API de diagnostic pour les débogueurs, les vidages et les 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é de site (SRE).

Le runtime offre une fonctionnalité d’interopérabilité de style C de bas niveau, par le biais d’une combinaison de P/Invoke, de types valeur et de la possibilité d’afficher des valeurs au-delà de la limite de code natif/managé.

Languages

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 trouve ses racines dans la famille de langages C et sera immédiatement familier aux programmeurs 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 la transformation de données avec des fonctions.

  • Visual Basic utilise une syntaxe plus détaillée qui est plus proche du langage humain ordinaire. Il peut s’agir d’un langage plus facile à apprendre pour les personnes qui débutent avec la programmation.

Compilation

Les applications .NET (telles qu’elles sont écrites dans un langage de haut niveau comme C#) sont compilées 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, ce qui nécessite 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 Juste-à-temps (JIT).

  • Sur Android, macOS et Linux, la compilation JIT est la compilation 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) en fonction des instructions du processeur et des conventions d’appel dans un environnement donné, selon le système d’exploitation et le matériel sous-jacents. Il peut également compiler du code à des niveaux de qualité supérieurs ou inférieurs pour permettre de meilleures performances de démarrage et de débit stable.

L’avantage d’AOT est qu’il offre le meilleur démarrage d’application et peut (dans certains cas) entraîner des déploiements plus petits. Le principal inconvénient 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 standard complet de bibliothèques de classes. Ces bibliothèques fournissent des implémentations pour de nombreux types et fonctionnalités utilitaires à usage général et spécifiques à la charge de travail.

Voici quelques exemples de types définis dans les bibliothèques runtime .NET :

Pour plus d’informations, consultez 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 offre 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 permettant de développer et d’exécuter des applications .NET. Il inclut le moteur de build MSBuild , le compilateur Roslyn (C# et Visual Basic) et le compilateur F# . La plupart des commandes sont exécutées à l’aide de la dotnet commande . Les outils CLI peuvent être utilisés pour le développement local et l’intégration continue.

La famille d’IDE Visual Studio offre une excellente prise en charge de .NET et des langages C#, F# et Visual Basic.

GitHub Codespaces et les fonctionnalités de sécurité GitHub prennent en charge .NET.

Notebooks

.NET Interactive est un groupe d’outils cli et d’API 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 :

CI/CD

MSBuild et l’interface CLI .NET 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 de plusieurs fichiers. 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 configuration de système d’exploitation et d’architecture unique.
  • Les applications dépendantes du framework 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.

Par défaut, les applications .NET sont lancées avec un exécutable natif. L’exécutable est à la fois propre au système d’exploitation et à l’architecture. Les applications peuvent également être lancées avec la dotnet commande .

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 du .NET Framework. Cette nouvelle implémentation de .NET a conservé le nom .NET Core jusqu’à la version 3.1. La version suivante après .NET Core 3.1 a été nommée .NET 5.

De nouvelles versions de .NET continuent d’être publiées chaque année, chacune avec un numéro de version majeure plus élevé. Ils incluent de nouvelles fonctionnalités importantes 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 plusieurs variantes est en partie historique, en partie technique.

Implémentations .NET (ordre historique) :

  • .NET Framework : il permet d’accéder aux fonctionnalités étendues de Windows et De Windows Server. Également largement utilisé pour le cloud computing basé sur Windows. .NET d’origine.
  • Mono : implémentation multiplateforme du .NET Framework. Communauté d’origine et open source .NET. Utilisé pour les applications Android, iOS et Wasm.
  • .NET (Core) : implémentation multiplateforme et open source de .NET, repensée pour l’ère du cloud tout en restant sensiblement compatible avec .NET Framework. Utilisé pour les applications Linux, macOS et Windows.

Étapes suivantes