Guide .NET Core.NET Core Guide

Découvrez les didacticiels « Bien démarrer » pour apprendre à créer une application .NET Core simple.Check out the "Getting Started" tutorials to learn how to create a simple .NET Core application. Il suffit de quelques minutes pour créer votre première application et la rendre opérationnelle.It only takes a few minutes to get your first app up and running.

.NET Core est une plateforme de développement généraliste qui est tenue à jour par Microsoft et la communauté .NET sur GitHub..NET Core is a general purpose development platform maintained by Microsoft and the .NET community on GitHub. Cette multiplateforme prend en charge Windows, macOS et Linux. Elle peut être utilisée dans des scénarios d’appareil, de cloud et d’incorporation/IoT.It is cross-platform, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios.

Voici les caractéristiques qui définissent le mieux .NET Core :The following characteristics best define .NET Core:

  • Souplesse de déploiement : peut être inclus dans votre application ou installé côte à côte à l’échelle d’un utilisateur ou de l’ordinateur.Flexible deployment: Can be included in your app or installed side-by-side user- or machine-wide.
  • Multiplateforme : s’exécute sur Windows, macOS et Linux ; peut être porté sur d’autres systèmes d’exploitation.Cross-platform: Runs on Windows, macOS and Linux; can be ported to other operating systems. Au fil du temps, les scénarios pris en charge associant systèmes d’exploitation, processeurs et applications se multiplieront, qu’ils soient proposés par Microsoft, d’autres sociétés ou des individus.The supported Operating Systems (OS), CPUs and application scenarios will grow over time, provided by Microsoft, other companies, and individuals.
  • Outils en ligne de commande : tous les scénarios de produit peuvent être mis en œuvre au niveau de la commande.Command-line tools: All product scenarios can be exercised at the command-line.
  • Compatibilité : .NET Core est compatible avec le .NET Framework, Xamarin et Mono, via .NET Standard.Compatible: .NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard.
  • Open Source : la plateforme .NET Core est open source et utilise des licences MIT et Apache 2.Open source: The .NET Core platform is open source, using MIT and Apache 2 licenses. La documentation est concédée sous licence CC-BY.Documentation is licensed under CC-BY. .NET Core est un projet .NET Foundation..NET Core is a .NET Foundation project.
  • Support Microsoft : le support technique de .NET Core est assuré par Microsoft, via le Support .NET CoreSupported by Microsoft: .NET Core is supported by Microsoft, per .NET Core Support

CompositionComposition

.NET Core est constitué des composants suivants :.NET Core is composed of the following parts:

  • Un runtime .NET, qui fournit un système de type, un chargement d’assembly, un récupérateur de mémoire, une interopérabilité native et d’autres services de base.A .NET runtime, which provides a type system, assembly loading, a garbage collector, native interop and other basic services.
  • Un ensemble de bibliothèques de frameworks, qui fournissent des types de données primitives, des types de composition d’applications et des utilitaires essentiels.A set of framework libraries, which provide primitive data types, app composition types and fundamental utilities.
  • Un ensemble d’outils SDK et des compilateurs de langage (Roslyn et F#) qui permettent d’assurer un développement de base, disponibles dans le kit SDK .NET Core.A set of SDK tools and language compilers (Roslyn and F#) that enable the base developer experience, available in the .NET Core SDK.
  • L’hôte d’application « dotnet », qui sert à lancer les applications .NET Core.The 'dotnet' app host, which is used to launch .NET Core apps. Il sélectionne et héberge le runtime, fournit une stratégie de chargement d’assembly et lance l’application.It selects the runtime and hosts the runtime, provides an assembly loading policy and launches the app. Ce même hôte sert aussi à lancer les outils du SDK à peu près de la même façon.The same host is also used to launch SDK tools in much the same way.

LangagesLanguages

Vous pouvez utiliser les langages C#, Visual Basic et F# pour écrire des applications et des bibliothèques pour .NET Core.The C#, Visual Basic, and F# languages can be used to write applications and libraries for .NET Core. Les compilateurs s’exécutent sur .NET Core, ce qui vous permet de développer pour .NET Core où qu’il s’exécute.The compilers run on .NET Core, enabling you to develop for .NET Core anywhere it runs. En règle générale, les compilateurs s’utilisent non pas directement, mais indirectement via les outils du SDK.In general, you will not use the compilers directly, but indirectly using the SDK tools.

Les compilateurs C#, Visual Basic et F# ainsi que les outils .NET Core sont ou peuvent être intégrés dans plusieurs éditeurs de texte et IDE, dont Visual Studio, Visual Studio Code, Sublime Text et Vim, faisant ainsi du développement .NET Core une option dans votre environnement de codage et votre système d’exploitation préférés.The C#, Visual Basic, and F# compilers and the .NET Core tools are or can be integrated into several text editors and IDEs, including Visual Studio, Visual Studio Code, Sublime Text and Vim, making .NET Core development an option in your favorite coding environment and OS. Nous devons en partie cette intégration aux créateurs du projet OmniSharp et d’Ionide.This integration is provided, in part, by the good folks of the OmniSharp project and Ionide.

API .NET et compatibilité.NET APIs and Compatibility

.NET Core peut être considéré comme une version multiplateforme du .NET Framework, située au niveau de la couche des bibliothèques de classes de base du .NET Framework..NET Core can be thought of as a cross-platform version of the .NET Framework, at the layer of the .NET Framework Base Class Libraries (BCL). Il implémente la spécification de .NET Standard.It implements the .NET Standard specification. .NET Core propose un sous-ensemble d’API disponibles dans le .NET Framework ou Mono/Xamarin..NET Core provides a subset of the APIs that are available in the .NET Framework or Mono/Xamarin. Dans certains cas, les types ne sont pas entièrement implémentés (certains membres ne sont pas disponibles ou ont été déplacés).In some cases, types are not fully implemented (some members are not available or have been moved).

Examinez la feuille de route .NET Core pour en savoir plus sur la feuille de route des API .NET Core.Look at the .NET Core roadmap to learn more about the .NET Core API roadmap.

Relation avec .NET StandardRelationship to .NET Standard

.NET Standard est une spécification d’API qui décrit l’ensemble cohérent d’API .NET que les développeurs peuvent s’attendre à trouver dans chaque implémentation .NET.The .NET Standard is an API spec that describes the consistent set of .NET APIs that developers can expect in each .NET implementation. Les implémentations .NET doivent implémenter cette spécification pour être considérées comme étant conformes à .NET Standard et pour prendre en charge les bibliothèques qui ciblent la bibliothèque .NET Standard..NET implementations need to implement this spec in order to be considered .NET Standard-compliant and to support libraries that target .NET Standard.

.NET Core implémente la bibliothèque .NET Standard et prend donc en charge les bibliothèques .NET Standard..NET Core implements .NET Standard, and therefore supports .NET Standard libraries.

Charges de travailWorkloads

En soi, .NET Core inclut un modèle d’application unique (les applications console) qui s’avère utile pour les outils, les services locaux et les jeux basés sur du texte.By itself, .NET Core includes a single application model -- console apps -- which is useful for tools, local services and text-based games. D’autres modèles d’application ont été construits par-dessus .NET Core pour étendre ses fonctionnalités, à savoir :Additional application models have been built on top of .NET Core to extend its functionality, such as:

Open SourceOpen Source

.NET Core est open source (licence MIT) et a contribué à .NET Foundation à l’initiative de Microsoft en 2014..NET Core is open source (MIT license) and was contributed to the .NET Foundation by Microsoft in 2014. Il compte parmi les projets les plus actifs de .NET Foundation.It is now one of the most active .NET Foundation projects. Les particuliers et les entreprises sont libres de l’adopter, que ce soit à des fins personnelles, éducatives ou commerciales.It can be freely adopted by individuals and companies, including for personal, academic or commercial purposes. Diverses sociétés utilisent .NET Core à travers des applications, des outils, de nouvelles plateformes et des services d’hébergement.Multiple companies use .NET Core as part of apps, tools, new platforms and hosting services. Certaines de ces sociétés contribuent de façon significative à .NET Core sur GitHub et fournissent des conseils sur l’orientation des produits dans le cadre du groupe de travail appelé le .NET Foundation Technical Steering Group.Some of these companies make significant contributions to .NET Core on GitHub and provide guidance on the product direction as part of the .NET Foundation Technical Steering Group.

AcquisitionAcquisition

.NET Core est distribué de deux façons principales : sous forme de packages sur NuGet.org et comme distributions autonomes..NET Core is distributed in two main ways, as packages on NuGet.org and as standalone distributions.

DistributionsDistributions

Vous pouvez télécharger .NET Core dans la page de prise en main de .NET Core.You can download .NET Core at the .NET Core Getting Started page.

  • La distribution Microsoft .NET Core comprend le runtime CoreCLR, les bibliothèques associées, un hôte d’application console et le lanceur d’application dotnet.The Microsoft .NET Core distribution includes the CoreCLR runtime, associated libraries, a console application host and the dotnet app launcher. Elle est décrite par le métapackage Microsoft.NETCore.App.It is described by the Microsoft.NETCore.App metapackage.
  • La distribution Microsoft .NET Core SDK comprend .NET Core et un ensemble d’outils permettant de restaurer les packages NuGet et de compiler et générer des applications.The Microsoft .NET Core SDK distribution includes .NET Core and a set of tools for restoring NuGet packages and compiling and building apps.

En règle générale, le SDK .NET Core est installé en premier, préalablement au développement .NET Core.Typically, you will first install the .NET Core SDK to get started with .NET Core development. Vous pouvez choisir d’installer des builds .NET Core supplémentaires (peut-être en préversion).You may choose to install additional .NET Core (perhaps pre-release) builds.

PackagesPackages

  • Les packages .NET Core contiennent le runtime et les bibliothèques (assemblys et implémentations de référence) .NET Core,.NET Core Packages contain the .NET Core runtime and libraries (reference assemblies and implementations). par exemple, System.Net.Http.For example, System.Net.Http.
  • Les métapackages .NET Core décrivent les différentes couches et les différents modèles d’application en référençant l’ensemble approprié de packages de bibliothèque avec version..NET Core Metapackages describe various layers and app-models by referencing the appropriate set of versioned library packages.

ArchitectureArchitecture

.NET Core est une implémentation .NET multiplateforme..NET Core is a cross-platform .NET implementation. Les principaux enjeux architecturaux propres à .NET Core sont de fournir des implémentations spécifiques aux plateformes prises en charge.The primary architectural concerns unique to .NET Core are related to providing platform-specific implementations for supported platforms.

EnvironnementsEnvironments

.NET Core est pris en charge par Microsoft sur Windows, macOS et Linux..NET Core is supported by Microsoft on Windows, macOS and Linux. Sur Linux, Microsoft prend essentiellement en charge .NET Core s’exécutant sur les familles de distributions Red Hat Enterprise Linux (RHEL) et Debian.On Linux, Microsoft primarily supports .NET Core running on Red Hat Enterprise Linux (RHEL) and Debian distribution families.

.NET Core prend actuellement en charge les processeurs X64..NET Core currently supports X64 CPUs. Sur Windows, X86 est également pris en charge.On Windows, X86 is also supported. ARM64 et ARM32 le seront prochainement.ARM64 and ARM32 are in progress.

La feuille de route .NET Core fournit des informations plus détaillées sur la prise en charge présente et à venir des environnements de charges de travail, de systèmes d’exploitation et de processeurs.The .NET Core Roadmap provides more detailed information on workload and OS and CPU environment support and plans.

D’autres sociétés ou groupes peuvent prendre en charge .NET Core pour d’autres types d’applications et environnements.Other companies or groups may support .NET Core for other app types and environment.

Conçu pour l’adaptabilitéDesigned for Adaptability

.NET Core a été créé comme un produit très similaire aux autres produits .NET mais aussi unique..NET Core has been built as a very similar but unique product relative to other .NET products. Il a été conçu pour offrir une grande capacité d’adaptation aux nouvelles plateformes, nouvelles charges de travail et avec les nouvelles chaînes d’outils de compilation.It has been designed to enable broad adaptability to new platforms, for new workloads and with new compiler toolchains. Des projets de portage sur plusieurs systèmes d’exploitation et processeurs sont en cours, et bien d’autres pourraient suivre.It has several OS and CPU ports in progress and may be ported to many more. Un exemple est le projet LLILC, qui est un prototype précoce de compilation native pour .NET Core via le compilateur LLVM.An example is the LLILC project, which is an early prototype of native compilation for .NET Core via the LLVM compiler.

Le produit est divisé en plusieurs composants, ce qui permet d’adapter les différentes parties à de nouvelles plateformes, selon des calendriers différents.The product is broken into several pieces, enabling the various parts to be adapted to new platforms on different schedules. Le runtime et les bibliothèques de base spécifiques à la plateforme doivent être portés individuellement.The runtime and platform-specific foundational libraries must be ported as a unit. Les bibliothèques indépendantes de la plateforme doivent fonctionner en l’état sur toutes les plateformes, de par leur construction.Platform-agnostic libraries should work as-is on all platforms, by construction. Il existe une tendance à vouloir réduire le nombre d’implémentations spécifiques à la plateforme pour optimiser l’efficacité des développeurs, qui préfèrent utiliser du code C# indépendant de la plateforme chaque fois que tout ou partie d’un algorithme ou d’une API peut être implémentée de cette façon.There is a project bias to reducing platform-specific implementations to increase developer efficiency, preferring platform-neutral C# code whenever an algorithm or API can be implemented in-full or in-part that way.

Il est fréquent que des personnes s’interrogent sur la façon dont .NET Core est implémenté afin de prendre en charge plusieurs systèmes d’exploitation.People commonly ask how .NET Core is implemented in order to support multiple operating systems. Elles demandent généralement s’il existe des implémentations distinctes ou si la compilation conditionnelle est utilisée.They typically ask if there are separate implementations or if conditional compilation is used. La réponse est les deux à la fois, avec une forte préférence pour la compilation conditionnelle.It's both, with a strong bias towards conditional compilation.

Comme le montre le graphique ci-dessous, l’essentiel de CoreFX consiste en du code indépendant de la plateforme qui est partagé entre toutes les plateformes.You can see in the chart below that the vast majority of CoreFX is platform-neutral code that is shared across all platforms. Le code indépendant de la plateforme peut être implémenté en tant qu’assembly portable unique et utilisé sur toutes les plateformes.Platform-neutral code can be implemented as a single portable assembly that is used on all platforms.

CoreFX : lignes de code par plateforme

Les implémentations Windows et Unix sont de taille équivalente.Windows and Unix implementations are similar in size. L’implémentation Windows est plus volumineuse, car CoreFX implémente des fonctionnalités propres à Windows, telles que Microsoft.Win32.Registry, mais n’implémente pas encore de concepts propres à Unix.Windows has a larger implementation since CoreFX implements some Windows-only features, such as Microsoft.Win32.Registry but does not yet implement any Unix-only concepts. Vous pouvez aussi constater que la majorité des implémentations Linux et macOS sont partagées dans une implémentation Unix, alors que les implémentations spécifiques à Linux et macOS sont à peu près de taille équivalente.You will also see that the majority of the Linux and macOS implementations are shared across a Unix implementation, while the Linux- and macOS-specific implementations are roughly similar in size.

.NET Core contient à la fois des bibliothèques spécifiques aux plateformes et des bibliothèques indépendantes des plateformes.There are a mix of platform-specific and platform-neutral libraries in .NET Core. Cette caractéristique peut être illustrée à travers les exemples suivants :You can see the pattern in a few examples:

Comparaison avec les autres implémentations .NETComparisons to other .NET implementations

Il est peut-être plus facile d’appréhender la taille et la forme de .NET Core en le comparant aux implémentations .NET existantes.It is perhaps easiest to understand the size and shape of .NET Core by comparing it to existing .NET implementations.

Comparaison avec le .NET FrameworkComparison with .NET Framework

.NET a été annoncé pour la première fois par Microsoft en 2000 et a depuis évolué..NET was first announced by Microsoft in 2000 and then evolved from there. Le .NET Framework a été la première implémentation .NET à avoir été conçue par Microsoft au cours de cette période de plus 15 ans.The .NET Framework has been the primary .NET implementation produced by Microsoft during that 15+ year span.

Les principales différences entre .NET Core et le .NET Framework sont les suivantes :The major differences between .NET Core and the .NET Framework:

  • Modèles d’application : .NET Core ne prend pas en charge tous les modèles d’application .NET Framework, en partie parce que bon nombre d’entre eux reposent sur des technologies Windows, telles que WPF (reposant sur DirectX).App-models -- .NET Core does not support all the .NET Framework app-models, in part because many of them are built on Windows technologies, such as WPF (built on top of DirectX). Les modèles d’application console et ASP.NET Core sont pris en charge à la fois par .NET Core et par le .NET Framework.The console and ASP.NET Core app-models are supported by both .NET Core and .NET Framework.
  • API : .NET Core a beaucoup d’API en commun avec le .NET Framework, mais en moins grand nombre et avec une factorisation différente (les noms d’assembly sont différents ; la forme de type diffère dans les cas types).APIs -- .NET Core contains many of the same, but fewer, APIs as the .NET Framework, and with a different factoring (assembly names are different; type shape differs in key cases). En général, ces différences exigent actuellement des modifications pour porter la source vers .NET Core.These differences currently typically require changes to port source to .NET Core. .NET Core implémente l’API .NET Standard, qui se développera au fil du temps pour inclure un plus grand nombre d’API BCL du .NET Framework..NET Core implements the .NET Standard API, which will grow to include more of the .NET Framework BCL API over time.
  • Sous-systèmes : .NET Core implémente un sous-ensemble des sous-systèmes du .NET Framework, avec l’objectif d’une implémentation et d’un modèle de programmation plus simples.Subsystems -- .NET Core implements a subset of the subsystems in the .NET Framework, with the goal of a simpler implementation and programming model. Par exemple, la sécurité d’accès du code (CAS) n’est pas prise en charge, alors que la réflexion l’est.For example, Code Access Security (CAS) is not supported, while reflection is supported.
  • Plateformes : le .NET Framework prend en charge Windows et Windows Server, tandis que .NET Core prend aussi en charge macOS et Linux.Platforms -- The .NET Framework supports Windows and Windows Server while .NET Core also supports macOS and Linux.
  • Open Source : .NET Core est open source, alors que seul un sous-ensemble en lecture seule du .NET Framework l’est.Open Source -- .NET Core is open source, while a read-only subset of the .NET Framework is open source.

Bien que .NET Core soit unique et présente des différences de taille par rapport au .NET Framework et aux autres implémentations .NET, il est simple de partager du code, que ce soit au moyen de techniques de partage de source ou de fichiers binaires.While .NET Core is unique and has significant differences to the .NET Framework and other .NET implementations, it is straightforward to share code, using either source or binary sharing techniques.

Comparaison avec MonoComparison with Mono

Mono est la première implémentation .NET multiplateforme et open source ; elle a vu le jour en 2004.Mono is the original cross-platform and open source .NET implementation, first shipping in 2004. Elle peut être considérée comme un clone communautaire du .NET Framework.It can be thought of as a community clone of the .NET Framework. L’équipe du projet Mono s’est appuyée sur les normes .NET libres (notamment ECMA 335) publiées par Microsoft pour proposer une implémentation compatible.The Mono project team relied on the open .NET standards (notably ECMA 335) published by Microsoft in order to provide a compatible implementation.

Les principales différences entre .NET Core et Mono sont les suivantes :The major differences between .NET Core and Mono:

  • Modèles d’application : Mono ne prend en charge qu’un sous-ensemble des modèles d’application du .NET Framework (par exemple, Windows Forms) et quelques autres (par exemple, Xamarin.iOS) via le produit Xamarin.App-models -- Mono supports a subset of the .NET Framework app-models (for example, Windows Forms) and some additional ones (for example, Xamarin.iOS) through the Xamarin product. .NET Core ne les prend pas en charge..NET Core doesn't support these.
  • API : Mono prend en charge un sous-ensemble étendu des API du .NET Framework, en utilisant les mêmes noms d’assembly et la même factorisation.APIs -- Mono supports a large subset of the .NET Framework APIs, using the same assembly names and factoring.
  • Plateformes : Mono prend en charge un grand nombre de plateformes et de processeurs.Platforms -- Mono supports many platforms and CPUs.
  • Open Source : Mono et .NET Core utilisent tous deux une licence MIT et sont des projets .NET Foundation.Open Source -- Mono and .NET Core both use the MIT license and are .NET Foundation projects.
  • Priorité : les plateformes mobiles sont la principale priorité de Mono depuis quelques années, alors que .NET Core accorde la priorité aux charges de travail cloud.Focus -- The primary focus of Mono in recent years is mobile platforms, while .NET Core is focused on cloud workloads.