Partager via


Introduction à .NET

.NET est une plateforme de développement open source gratuite et multiplateforme pour créer de nombreux types d’applications. Il peut exécuter des programmes écrits dans plusieurs langages, avec C# étant le plus populaire. Il s’appuie 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 Prise en main.

La plateforme .NET a été conçue pour fournir une productivité, des performances, une sécurité et une fiabilité. Il assure la gestion automatique de la mémoire via un garbage collector (GC). Il est sûr au niveau du type et de la mémoire, grâce à l'utilisation d'un GC et de compilateurs de langage stricts. Il offre une concurrence via les primitives async/await et Task. Il comprend un grand ensemble de bibliothèques qui ont de grandes fonctionnalités et qui ont été optimisées pour les performances sur plusieurs systèmes d’exploitation et architectures de puce.

.NET a les points de conception suivants :

  • La productivité est une pile complète avec le runtime, les bibliothèques, le langage et les outils qui, ensemble, contribuent à 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 dynamique est pris en charge, ce qui permet un large ensemble de scénarios distincts.
  • L’interopérabilité de code natif et les intrinsèques matérielles sont à faible coût et haute fidélité (accès à l’API brute et aux instructions).
  • Le code est portable sur plusieurs 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, jeu) est activée avec des implémentations spécialisées du modèle de programmation à usage général.
  • Les normes industrielles comme OpenTelemetry et gRPC sont privilégiées par des solutions sur mesure.

.NET est géré en collaboration par Microsoft et une communauté mondiale. Les mises à jour régulières garantissent que les utilisateurs déploient des applications sécurisées et fiables dans des environnements de production.

Composants

.NET inclut les composants suivants :

  • Runtime : exécute le code d’application.
  • Bibliothèques : fournit des fonctionnalités utilitaires telles que l’analyse JSON.
  • Compilateur : compile le code source C# (et d’autres langages) dans le code exécutable (runtime).
  • Sdk et d’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 majeure 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 un ramassage des ordures et le moteur d'exécution fournit un ramasseur d'ordures de suivi. Les bibliothèques (ainsi que les piles d’applications) élisent ces fonctionnalités en concepts et modèles objet qui permettent aux développeurs d’écrire des algorithmes de manière productive dans des flux de travail intuitifs.

Les bibliothèques principales exposent des milliers de types, dont beaucoup s’intègrent et alimentent le langage C#. Par exemple, l’instruction C foreach # vous permet d’énumérer des collections arbitraires. Les optimisations basées sur des modèles permettent de traiter les collections List<T> simplement et efficacement. Vous pouvez laisser la gestion des ressources au ramasse-miettes, mais une requête de nettoyage est possible via IDisposable et le support direct du langage dans l'instruction using.

La prise en charge de plusieurs opérations en même temps est fondamentale pour pratiquement toutes les charges de travail. Cela peut être des applications clientes effectuant un traitement en arrière-plan tout en conservant la réactivité de l’interface utilisateur, les services gérant plusieurs milliers de requêtes simultanées, les appareils répondant à une multitude de stimulations simultanées ou des machines à haute puissance parallélisant le traitement des opérations nécessitant beaucoup de ressources de calcul. La prise en charge de la programmation asynchrone est une fonctionnalité essentielle du langage de programmation C#, qui fournit les mots clés async et await facilitant l’écriture et la composition d’opérations asynchrones, tout en permettant de tirer pleinement parti de toutes les structures de contrôle de flux offertes par le langage.

Le système de types offre une large gamme de possibilités, répondant de manière assez égale aux besoins 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 pour toutes les couches de type que l’orientation de l’objet autorise. Les types génériques sont omniprésents et vous permettent de spécialiser des classes à un ou plusieurs types.

Le runtime .NET fournit une gestion automatique de la mémoire via un garbage collector. Pour n’importe quel langage, son modèle de gestion de la mémoire est probablement sa caractéristique la plus définissante. Cela est vrai pour les langages .NET. .NET dispose d’un GC de suivi qui s’adapte automatiquement. Il vise à fournir une utilisation « sans intervention » dans le cas général, tout en offrant des options de configuration pour des 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é avec les plateformes natives, contrairement aux types gérés par le 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 par 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 simple et sans surcharge des collections de types valeur.

La réflexion est un paradigme « programmes en tant que données », ce 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 tardifs.

Les exceptions sont le modèle principal de gestion des erreurs dans .NET. Les exceptions présentent l’avantage que les informations d’erreur 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 votre application de se bloquer, vous pouvez gérer intentionnellement les exceptions attendues dans votre code. Une application bloquée est plus fiable et diagnostique qu’une application avec un comportement non défini.

Les piles d’applications, telles que ASP.NET Core et Windows Forms, s’appuient et tirent parti des bibliothèques de bas niveau, du langage et du runtime. 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 permettent une expérience de développement moderne, à la fois sur un bureau de développement et pour l’intégration continue (CI). L’expérience de développement moderne inclut la création, l’analyse et le test du code. Les projets .NET peuvent souvent être générés par une seule dotnet build commande, qui orchestre la restauration des packages NuGet et la création de dépendances.

NuGet est le gestionnaire de package pour .NET. Il 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 à Windows.

Soutien

.NET est pris en charge par plusieurs organisations qui travaillent pour garantir que .NET peut s’exécuter sur plusieurs systèmes d’exploitation et est tenu à jour. Il peut être utilisé sur les architectures Arm64, x64 et x86.

De nouvelles versions de .NET sont publiées annuellement en novembre, conformément à nos versions et stratégies de support. Il est mis à jour tous les mois le Patch Tuesday (deuxième mardi du mois), généralement à 10 heures, heure du Pacifique.

É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 une partie historique, partie technique.

Implémentations .NET :

  • .NET Framework : .NET d’origine. Il fournit un accès aux fonctionnalités étendues de Windows et Windows Server. Il bénéficie d'un soutien actif, en cours de maintenance.
  • Mono -- La communauté d’origine et .NET open source. Implémentation multiplateforme de .NET Framework. Support actif 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