Introduction à .NET

.NET est une plateforme de développement gratuite, multiplateforme et open source permettant de créer de nombreux types d’applications. Elle peut exécuter des programmes écrits dans plusieurs langages, C# étant le plus populaire. Elle repose sur un runtime hautes performances utilisé en production par de nombreuses applications à grande échelle.

Pour savoir comment télécharger .NET et commencer à écrire votre première application, consultez la Prise en main.

La plateforme .NET a été conçue pour allier productivité, performances, sécurité et fiabilité. Elle assure la gestion automatique de la mémoire via un récupérateur de mémoire (GC). Elle garantit la sécurité du type et de la mémoire grâce à l’utilisation d’un récupérateur de mémoire et de compilateurs de langage stricts. Elle offre une concurrence via des primitives async/await et Task. Elle inclut un ensemble important de bibliothèques offrant de larges fonctionnalités et qui ont été optimisées pour les performances sur plusieurs systèmes d’exploitation et architectures de puces.

Les points de conception de .NET sont les suivants :

  • La productivité est une pile complète avec le runtime, les bibliothèques, le langage et les outils, qui contribuent tous à l’expérience utilisateur du développeur.
  • Le code sécurisé est le modèle de calcul principal, tandis que le code non sécurisé active des optimisations manuelles supplémentaires.
  • Le code statique et le code dynamique sont tous les deux pris en charge, ce qui permet un large éventail de scénarios distincts.
  • L’interopérabilité du code natif et les intrinsèques matérielles allient faible coût et haute fidélité (accès à l’API brute et aux instructions).
  • Le code est portable entre les plateformes (architecture de système d’exploitation et de puce), tandis que le ciblage de plateforme permet la spécialisation et l’optimisation.
  • L’adaptabilité entre les domaines de programmation (cloud, client, gaming) est activée avec des implémentations spécialisées du modèle de programmation à usage général.
  • Les normes du secteur comme OpenTelemetry et gRPC sont privilégiées par rapport aux solutions sur mesure.

.NET est géré par Microsoft et la communauté. La plateforme est régulièrement mise à jour pour garantir que les utilisateurs déploient des applications fiables et sécurisées dans les environnements de production.

Composants

.NET inclut les composants suivants :

  • Runtime : exécute le code d’application.
  • Bibliothèques : fournissent des fonctionnalités d’utilitaire, telles que l’analyse JSON.
  • Compilateur : compile le code source C# (et d’autres langages) dans le code exécutable (runtime).
  • Kit de développement logiciel (SDK) et autres outils : activez la création et la surveillance d’applications avec des flux de travail modernes.
  • Piles d’applications : comme ASP.NET Core et Windows Forms, qui permettent d’écrire des applications.

Le runtime, les bibliothèques et les langages sont les piliers de la pile .NET. Les composants de niveau supérieur, tels que les outils .NET et les piles d’applications, comme ASP.NET Core, s’appuient sur ces piliers. C# est le langage de programmation principal pour .NET et la plus grande partie de .NET est écrite en C#.

C# est orienté objet et le runtime prend en charge l’orientation de l’objet. C# nécessite le nettoyage de la mémoire et le runtime fournit un récupérateur de mémoire pour le suivi. Les bibliothèques (ainsi que les piles d’applications) façonnent ces fonctionnalités en concepts et modèles d’objet qui permettent aux développeurs d’écrire de manière productive des algorithmes dans des flux de travail intuitifs.

Les bibliothèques principales exposent des milliers de types, dont beaucoup s’intègrent dans le langage C# et l’alimentent. Par exemple, l’instruction foreach de C# vous permet d’énumérer des collections arbitraires. Les optimisations basées sur des modèles permettent de traiter des collections comme List<T> de manière simple et efficace. Vous pouvez laisser la gestion des ressources au nettoyage de la mémoire, mais il est possible d’effectuer un nettoyage rapide via IDisposable et la prise en charge du langage direct dans l’instruction using.

La prise en charge simultanée de plusieurs opérations est fondamentale pour pratiquement toutes les charges de travail. Il peut s’agir d’applications clientes effectuant un traitement en arrière-plan tout en conservant la réactivité de l’interface utilisateur, de services gérant plusieurs milliers de requêtes simultanées, d’appareils répondant à une multitude de stimulations simultanées ou de machines à haute puissance assurant en parallèle le traitement d’opérations gourmandes en ressources de calcul. La prise en charge de la programmation asynchrone est une fonctionnalité de premier ordre du langage de programmation C#, en fournissant les mots clés async et await qui facilitent l’écriture et la composition d’opérations asynchrones, tout en bénéficiant toujours des avantages complets de toutes les constructions de flux de contrôle qu’offre le langage.

Le système de type offre une étendue significative, répondant de manière quasi égale aux exigences de sécurité, de description, de dynamisme et d’interopérabilité native. Tout d’abord, le système de type permet un modèle de programmation orienté objet. Il inclut les types, l’héritage (classe de base unique), les interfaces (y compris les implémentations de méthode par défaut) et la distribution de méthodes virtuelles pour fournir un comportement sensible à toutes les couches de type qu’autorise l’orientation objet. Les types génériques constituent une fonctionnalité omniprésente qui vous permet de spécialiser des classes en fonction d’un ou de plusieurs types.

Le runtime .NET assure la gestion automatique de la mémoire via un récupérateur de mémoire. Pour n’importe quel langage, son modèle de gestion de la mémoire est probablement sa caractéristique qui le définit le mieux. C’est vrai pour les langages .NET. .NET dispose d’un GC de suivi qui s’adapte automatiquement. Il vise à fournir des opérations « sans intervention » dans le cas général, tout en offrant des options de configuration pour les charges de travail plus extrêmes. Le GC actuel est le résultat de nombreuses années d’investissement et d’apprentissage à partir d’une multitude de charges de travail.

Les types de valeurs et les blocs de mémoire alloués par pile offrent un contrôle plus direct et de bas niveau sur les données et l’interopérabilité native de la plateforme, contrairement aux types managés par GC de .NET. La plupart des types primitifs dans .NET, comme les types entiers, sont des types valeur, et les utilisateurs peuvent définir leurs propres types avec une sémantique similaire. Les types valeur sont entièrement pris en charge via le système de génériques de .NET, ce qui signifie que les types génériques comme List<T> peuvent fournir des représentations de mémoire plate et sans surcharge des collections de types valeur.

Réflexion est un paradigme de « programmes en tant que données » qui permet à une partie d’un programme d’interroger et d’appeler dynamiquement une autre, en termes d’assemblys, de types et de membres. Il est particulièrement utile pour les modèles et outils de programmation à liaison tardive.

Les exceptions sont le principal modèle de gestion des erreurs dans .NET. L’avantage des exceptions est que les informations sur les erreurs n’ont pas besoin d’être représentées dans les signatures de méthode ou gérées par chaque méthode. La gestion appropriée des exceptions est essentielle pour la fiabilité des applications. Pour empêcher le blocage de votre application, vous pouvez gérer intentionnellement les exceptions attendues dans votre code. Une application bloquée est plus fiable et facile à diagnostiquer qu’une application avec un comportement non défini.

Les piles d’applications, comme ASP.NET Core et Windows Forms, tirent parti des bibliothèques de bas niveau, du langage et du runtime sur lesquelles elles s’appuient. Les piles d’applications définissent la façon dont les applications sont construites et leur cycle de vie d’exécution.

Le Kit de développement logiciel (SDK) et d’autres outils offrent une expérience de développement moderne, à la fois sur le bureau du développeur et pour l’intégration continue (CI). L’expérience de développement moderne inclut la possibilité de créer du code, de l’analyser et de le tester. Les projets .NET peuvent souvent être générés par une seule commande dotnet build, qui orchestre la restauration des packages NuGet et la compilation des dépendances.

NuGet est le gestionnaire de package pour .NET. NuGet contient des centaines de milliers de packages qui implémentent des fonctionnalités pour de nombreux scénarios. Une majorité d’applications s’appuient sur des packages NuGet pour certaines fonctionnalités. La galerie NuGet est gérée par Microsoft.

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 sur Windows.

Support

.NET est pris en charge par de multiples organisations qui s’assurent que la plateforme est tenue à jour et peut être exécutée sur plusieurs systèmes d’exploitation. Il peut être utilisé sur les architectures Arm64, x64 et x86.

De nouvelles versions de .NET sont publiées chaque année en novembre, conformément à nos stratégies de versionnage et de support. La plateforme est mise à jour tous les mois le jour du Patch Tuesday (deuxième mardi de chaque mois), généralement à 10h du Pacifique.

É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 de .NET :

  • .NET Framework : .NET d’origine. Il fournit un accès aux fonctionnalités étendues de Windows et Windows Server. Il est activement pris en charge, en maintenance.
  • Mono : communauté d’origine et .NET open source. Implémentation multiplateforme de .NET Framework. Prise en charge active pour Android, iOS et WebAssembly.
  • .NET (Core) : .NET moderne. Implémentation multiplateforme et open source de .NET, repensée pour l’âge du cloud tout en restant sensiblement compatible avec .NET Framework. Prise en charge active pour Linux, macOS et Windows.

Étapes suivantes