Notions de base d’ASP.NET CoreASP.NET Core fundamentals

Une application ASP.NET Core est une application console qui crée un serveur web dans sa méthode Program.Main.An ASP.NET Core app is a console app that creates a web server in its Program.Main method. La méthode Main est le point d’entrée managé de l’application :The Main method is the app's managed entry point:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

L’hôte .NET Core :The .NET Core Host:

  • Charge le runtime .NET Core.Loads the .NET Core runtime.
  • Utilise le premier argument de ligne de commande comme chemin du fichier binaire managé qui contient le point d’entrée (Main) et commence l’exécution de code.Uses the first command-line argument as the path to the managed binary that contains the entry point (Main) and begins code execution.

La méthode Main appelle WebHost.CreateDefaultBuilder, qui suit le modèle de conception builder pour créer un hôte web.The Main method invokes WebHost.CreateDefaultBuilder, which follows the builder pattern to create a web host. Le builder a des méthodes qui définissent un serveur web (par exemple, UseKestrel) et la classe de démarrage (UseStartup).The builder has methods that define a web server (for example, UseKestrel) and the startup class (UseStartup). Dans l’exemple précédent, le serveur web Kestrel est alloué automatiquement.In the preceding example, the Kestrel web server is automatically allocated. L’hôte web d’ASP.NET Core tente de s’exécuter sur IIS (Internet Information Services), s’il est disponible.ASP.NET Core's web host attempts to run on Internet Information Services (IIS), if available. D’autres serveurs web, tels que HTTP.sys, peuvent être utilisés via l’appel de la méthode d’extension appropriée.Other web servers, such as HTTP.sys, can be used by invoking the appropriate extension method. UseStartup est expliqué de manière plus détaillée dans la section Démarrage.UseStartup is explained further in the Startup section.

IWebHostBuilder, le type de retour de l’appel de WebHost.CreateDefaultBuilder, fournit de nombreuses méthodes facultatives.IWebHostBuilder, the return type of the WebHost.CreateDefaultBuilder invocation, provides many optional methods. Certaines de ces méthodes incluent UseHttpSys pour l’hébergement de l’application dans HTTP.sys et UseContentRoot pour la spécification du répertoire de contenu racine.Some of these methods include UseHttpSys for hosting the app in HTTP.sys and UseContentRoot for specifying the root content directory. Les méthodes Build et Run génèrent l’objet IWebHost, qui héberge l’application et démarre l’écoute des requêtes HTTP.The Build and Run methods build the IWebHost object that hosts the app and begins listening for HTTP requests.

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

L’hôte .NET Core :The .NET Core Host:

  • Charge le runtime .NET Core.Loads the .NET Core runtime.
  • Utilise le premier argument de ligne de commande comme chemin du fichier binaire managé qui contient le point d’entrée (Main) et commence l’exécution de code.Uses the first command-line argument as the path to the managed binary that contains the entry point (Main) and begins code execution.

La méthode Main utilise WebHostBuilder, qui suit le modèle de conception builder pour créer un hôte d’application web.The Main method uses WebHostBuilder, which follows the builder pattern to create a web app host. Le builder a des méthodes qui définissent le serveur web (par exemple UseKestrel) et la classe de démarrage (UseStartup).The builder has methods that define the web server (for example, UseKestrel) and the startup class (UseStartup). Dans l’exemple précédent, le serveur web Kestrel est utilisé.In the preceding example, the Kestrel web server is used. D’autres serveurs web, tels que WebListener, peuvent être utilisés via l’appel de la méthode d’extension appropriée.Other web servers, such as WebListener, can be used by invoking the appropriate extension method. UseStartup est expliqué de manière plus détaillée dans la section suivante.UseStartup is explained further in the next section.

WebHostBuilder fournit de nombreuses méthodes facultatives, notamment UseIISIntegration pour l’hébergement dans IIS et IIS Express et UseContentRoot pour la spécification du répertoire de contenu racine.WebHostBuilder provides many optional methods, including UseIISIntegration for hosting in IIS and IIS Express and UseContentRoot for specifying the root content directory. Les méthodes Build et Run génèrent l’objet IWebHost, qui héberge l’application et démarre l’écoute des requêtes HTTP.The Build and Run methods build the IWebHost object that hosts the app and begins listening for HTTP requests.

DémarrageStartup

La méthode UseStartup sur WebHostBuilder spécifie la classe Startup pour votre application :The UseStartup method on WebHostBuilder specifies the Startup class for your app:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}
public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

La classe Startup est l’emplacement où vous définissez le pipeline de traitement des requêtes et où sont configurés les services nécessaires à l’application.The Startup class is where you define the request handling pipeline and where any services needed by the app are configured. La classe Startup doit être publique et contenir les méthodes suivantes :The Startup class must be public and contain the following methods:

public class Startup
{
    // This method gets called by the runtime. Use this method
    // to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
    }

    // This method gets called by the runtime. Use this method
    // to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app)
    {
    }
}
public class Startup
{
    // This method gets called by the runtime. Use this method
    // to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
    }

    // This method gets called by the runtime. Use this method
    // to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app)
    {
    }
}

ConfigureServices définit les services utilisés par votre application (par exemple, ASP.NET Core MVC, Entity Framework Core et Identity).ConfigureServices defines the Services used by your app (for example, ASP.NET Core MVC, Entity Framework Core, Identity). Configure définit les intergiciels (middlewares) appelés dans le pipeline de requête.Configure defines the middleware called in the request pipeline.

Pour plus d'informations, consultez Démarrage d’une application dans ASP.NET Core.For more information, see Démarrage d’une application dans ASP.NET Core.

Racine de contenuContent root

La racine de contenu est le chemin de base de tout contenu utilisé par l’application, tel que les pages Razor, les vues MVC et les composants statiques.The content root is the base path to any content used by the app, such as Razor Pages, MVC views, and static assets. Par défaut, la racine de contenu est identique au chemin de base de l’application pour l’exécutable qui héberge l’application.By default, the content root is the same location as the app base path for the executable hosting the app.

Racine web (webroot)Web root (webroot)

La racine web d’une application correspond au répertoire de projet qui contient les ressources publiques statiques, telles que les fichiers CSS, JavaScript et image.The webroot of an app is the directory in the project containing public, static resources, such as CSS, JavaScript, and image files. Par défaut, wwwroot est la racine web.By default, wwwroot is the webroot.

Pour les fichiers Razor (.cshtml), la barre oblique tilde ~/ pointe vers la racine web.For Razor (.cshtml) files, the tilde-slash ~/ points to the webroot. Les chemins commençant par ~/ sont appelés chemins virtuels.Paths beginning with ~/ are referred to as virtual paths.

Injection de dépendances (services)Dependency injection (services)

Un service est un composant destiné à une consommation courante dans une application.A service is a component that's intended for common consumption in an app. Les services sont accessibles via l’injection de dépendances.Services are made available through dependency injection (DI). ASP.NET Core inclut un conteneur IoC (Inversion of Control) natif qui prend en charge l’injection de constructeurs par défaut.ASP.NET Core includes a native Inversion of Control (IoC) container that supports constructor injection by default. Vous pouvez remplacer le conteneur par défaut si vous le souhaitez.You can replace the default container if you wish. L’injection de dépendances n’offre pas seulement un couplage faible, elle permet également d’accéder à des services (tels que la journalisation) dans l’ensemble de votre application.In addition to its loose coupling benefit, DI makes services, such as logging, available throughout your app.

Pour plus d'informations, consultez Injection de dépendances dans ASP.NET Core.For more information, see Injection de dépendances dans ASP.NET Core.

Intergiciel (middleware)Middleware

Dans ASP.NET Core, vous composez votre pipeline de requêtes à l’aide d’un intergiciel (middleware).In ASP.NET Core, you compose your request pipeline using middleware. Un middleware ASP.NET Core effectue des opérations asynchrones sur HttpContext, puis appelle le middleware suivant dans le pipeline ou met fin à la requête.ASP.NET Core middleware performs asynchronous operations on an HttpContext and then either invokes the next middleware in the pipeline or terminates the request.

Par convention, un composant de middleware appelé « XYZ » est ajouté au pipeline en appelant la méthode d’extension UseXYZ dans la méthode Configure.By convention, a middleware component called "XYZ" is added to the pipeline by invoking a UseXYZ extension method in the Configure method.

ASP.NET Core inclut un ensemble complet de middlewares intégrés, et vous pouvez écrire votre propre middleware personnalisé.ASP.NET Core includes a rich set of built-in middleware, and you can write your own custom middleware. Open Web Interface pour .NET (OWIN), qui permet aux applications web d’être dissociées des serveurs web, est pris en charge dans les applications ASP.NET Core.Open Web Interface for .NET (OWIN), which allows web apps to be decoupled from web servers, is supported in ASP.NET Core apps.

Pour plus d’informations, consultez Intergiciel (middleware) ASP.NET Core et OWIN (Open Web Interface for .NET) avec ASP.NET Core.For more information, see Intergiciel (middleware) ASP.NET Core and OWIN (Open Web Interface for .NET) avec ASP.NET Core.

Lancer des requêtes HTTPInitiate HTTP requests

IHttpClientFactory est disponible pour accéder aux instances HttpClient afin d’effectuer des requêtes HTTP.IHttpClientFactory is available to access HttpClient instances to make HTTP requests.

Pour plus d'informations, consultez Lancer des requêtes HTTP.For more information, see Lancer des requêtes HTTP.

EnvironnementsEnvironments

Les environnements, tels que Développement et Production, sont une notion de premier plan dans ASP.NET Core. Vous pouvez les définir à l’aide d’une variable d’environnement, d’un fichier de paramètres et d’un argument de ligne de commande.Environments, such as Development and Production, are a first-class notion in ASP.NET Core and can be set using an environment variable, settings file, and command-line argument.

Pour plus d'informations, consultez Utiliser plusieurs environnements dans ASP.NET Core.For more information, see Utiliser plusieurs environnements dans ASP.NET Core.

HébergementHosting

Les applications ASP.NET Core configurent et lancent un hôte, qui est responsable de la gestion du démarrage et de la durée de vie des applications.ASP.NET Core apps configure and launch a host, which is responsible for app startup and lifetime management.

Pour plus d'informations, consultez Hôte web et hôte générique dans ASP.NET Core.For more information, see Hôte web et hôte générique dans ASP.NET Core.

ServeursServers

Le modèle d’hébergement ASP.NET Core n’écoute pas directement les requêtes.The ASP.NET Core hosting model doesn't directly listen for requests. Le modèle d’hébergement s’appuie sur une implémentation de serveur HTTP pour transférer la requête à l’application.The hosting model relies on an HTTP server implementation to forward the request to the app.

ASP.NET Core fournit les implémentations de serveur suivantes :ASP.NET Core provides the following server implementations:

  • Serveur Kestrel : serveur web multiplateforme géré.Kestrel server is a managed, cross-platform web server. Kestrel est souvent exécuté dans une configuration de proxy inverse à l’aide d’IIS.Kestrel is often run in a reverse proxy configuration using IIS. Kestrel peut également être exécuté en tant que serveur périphérique public exposé directement à Internet dans ASP.NET Core 2.0 ou version ultérieure.Kestrel can also be run as a public-facing edge server exposed directly to the Internet in ASP.NET Core 2.0 or later.
  • Serveur HTTP IIS (IISHttpServer) : serveur in-process IIS.IIS HTTP Server (IISHttpServer) is an IIS in-process server.
  • Serveur HTTP.sys : serveur web pour ASP.NET Core sur Windows.HTTP.sys server is a web server for ASP.NET Core on Windows.

ASP.NET Core fournit les implémentations de serveur suivantes :ASP.NET Core provides the following server implementations:

  • Serveur Kestrel : serveur web multiplateforme géré.Kestrel server is a managed, cross-platform web server. Kestrel est souvent exécuté dans une configuration de proxy inverse à l’aide d’IIS.Kestrel is often run in a reverse proxy configuration using IIS. Kestrel peut également être exécuté en tant que serveur périphérique public exposé directement à Internet dans ASP.NET Core 2.0 ou version ultérieure.Kestrel can also be run as a public-facing edge server exposed directly to the Internet in ASP.NET Core 2.0 or later.
  • Serveur HTTP.sys : serveur web pour ASP.NET Core sur Windows.HTTP.sys server is a web server for ASP.NET Core on Windows.

Pour plus d'informations, consultez Implémentations de serveurs web dans ASP.NET Core.For more information, see Implémentations de serveurs web dans ASP.NET Core.

ConfigurationConfiguration

ASP.NET Core utilise un modèle de configuration basé sur les paires nom-valeur.ASP.NET Core uses a configuration model based on name-value pairs. Le modèle de configuration n’est pas basé sur System.Configuration ou web.config. La configuration obtient les paramètres d’une sélection de fournisseurs de configuration.The configuration model isn't based on System.Configuration or web.config. Configuration obtains settings from an ordered set of configuration providers. Les fournisseurs de configuration intégrés prennent en charge une grande variété de formats de fichiers (XML, JSON, INI), de variables d’environnement et d’arguments de ligne de commande.The built-in configuration providers support a variety of file formats (XML, JSON, INI), environment variables, and command-line arguments. Vous pouvez également écrire vos propres fournisseurs de configuration.You can also write your own custom configuration providers.

Pour plus d'informations, consultez Configuration dans ASP.NET Core.For more information, see Configuration dans ASP.NET Core.

JournalisationLogging

ASP.NET Core prend en charge une API de journalisation qui fonctionne avec divers fournisseurs de journalisation.ASP.NET Core supports a Logging API that works with a variety of logging providers. Les fournisseurs intégrés prennent en charge l’envoi de journaux à une ou plusieurs destinations.Built-in providers support sending logs to one or more destinations. Des frameworks de journalisation tiers peuvent être utilisés.Third-party logging frameworks can be used.

Pour plus d'informations, consultez Journalisation dans ASP.NET Core.For more information, see Journalisation dans ASP.NET Core.

Gestion des erreursError handling

ASP.NET Core offre des scénarios intégrées pour la gestion des erreurs dans les applications, notamment une page d’exceptions du développeur, des pages d’erreurs personnalisées, des pages de code d’état statique et la gestion des exceptions de démarrage.ASP.NET Core has built-in scenarios for handling errors in apps, including a developer exception page, custom error pages, static status code pages, and startup exception handling.

Pour plus d'informations, consultez Gérer les erreurs dans ASP.NET Core.For more information, see Gérer les erreurs dans ASP.NET Core.

RoutageRouting

ASP.NET Core offre des scénarios pour router les requêtes d’application vers les gestionnaires de routage.ASP.NET Core offers scenarios for routing of app requests to route handlers.

Pour plus d'informations, consultez Routage dans ASP.NET Core.For more information, see Routage dans ASP.NET Core.

Tâches en arrière-planBackground tasks

Les tâches en arrière-plan sont implémentées en tant que services hébergés.Background tasks are implemented as hosted services. Un service hébergé est une classe avec la logique de tâches en arrière-plan qui implémente l’interface IHostedService.A hosted service is a class with background task logic that implements the IHostedService interface.

Pour plus d'informations, consultez Tâches d’arrière-plan avec des services hébergés dans ASP.NET Core.For more information, see Tâches d’arrière-plan avec des services hébergés dans ASP.NET Core.

Accéder à HttpContextAccess HttpContext

HttpContext est disponible automatiquement lors du traitement des requêtes avec Razor Pages et MVC.HttpContext is automatically available when processing requests with Razor Pages and MVC. Dans les cas où HttpContext n’est pas disponible, vous pouvez accéder à HttpContext par le biais de l’interface IHttpContextAccessor et de son implémentation par défaut, HttpContextAccessor.In circumstances where HttpContext isn't readily available, you can access the HttpContext through the IHttpContextAccessor interface and its default implementation, HttpContextAccessor.

Pour plus d'informations, consultez Accéder à HttpContext dans ASP.NET Core.For more information, see Accéder à HttpContext dans ASP.NET Core.