35 votes

Quelle est la différence entre IWebHost WebHostBuilder BuildWebHost

La documentation de Microsoft est absolument terrible. J'ai besoin de déployer un .net core 2 application web que j'ai développé à un serveur IIS et je ne peux pas obtenir une réponse sur quoi que ce soit. Ce n'est que le début de mes questions.

Quelle est la différence entre IWebHost, WebHostBuilder, BuildWebHost?

Merci!

70voto

poke Points 64398

Tout d'abord, permettez-moi de commencer avec ce que j'ai très bien être en désaccord avec votre affirmation: La documentation de l'ASP.NET de Base est vraiment très bon. Oui, il est peut-être encore défaut dans certains détails, et il a aussi quelques problèmes de rattrapage à des changements avec les versions, mais dans l'ensemble, le contenu est vraiment bon et l'équipe de travail, il est vraiment en train de faire un travail remarquable. C'est vraiment difficile pour l'auteur d'une documentation pour un tel grand et en évolution rapide du cadre, et la quantité d'informations que vous obtenez par le biais de la documentation est vraiment très bon. Vous obtiendrez probablement à reconnaître qu'une fois que vous avez à surmonter les difficultés initiales, en commençant par un nouveau cadre.

Mais pour en revenir à votre question:

  • IWebHost: L'hébergeur du site est la chose générale, qui héberge et exécute votre application web. Il est créé au démarrage de votre application, puis il va construire toutes les pièces nécessaires, comme le faucon Crécerelle serveur web, l'application middleware pipeline, et tous les autres bits, et de les relier, de sorte que votre application est prête à servir à vos demandes.

    L'hôte web est fondamentalement, la chose qui rend votre application web.

  • IWebHostBuilder: L'hôte de web builder est fondamentalement une usine à créer un site web hôte. C'est la chose que les constructions de l'hébergeur, mais aussi configure tous les atouts nécessaires bits de l'hôte web doit déterminer comment pour exécuter l'application web.

    Avec ASP.NET Core 2, vous aurez l'habitude de créer un "web par défaut de l'hôte builder" qui est déjà venu avec beaucoup de défauts. Par exemple, le site web par défaut de l'hôte sera mis en place le Kestrel serveur web, activer et configurer la journalisation, et ajouter le support de l' appsettings.json configuration.

    Habituellement, vos applications seront toujours de commencer avec un tel défaut d'hébergement web et vous utilisez l'hôte web builder pour ensuite configurer le web hôte avant qu'il est effectivement en cours de construction.

  • BuildWebHost est une partie de l'ancienne convention avant ASP.NET de Base 2.1 dans le cas où le modèle par défaut dans l' Program.cs a été de construire le web de l'hôte dans une méthode distincte. Avec 2.1, cela a été modifiée de sorte que la méthode n'est plus de construire le web de l'hôte directement, mais seulement de créer de l'hôte web builder (d'où la méthode maintenant appelés CreateWebHostBuilder). Donc, fondamentalement, l' .Build() appel sur l'hôte web builder a été remaniée de la méthode. Vous pouvez voir ce bien dans le guide de migration de 2.0 à 2.1.

    La raison de ce qui a été fait est de faire de l' CreateWebHostBuilder réutilisables. Le générateur de configuration qui se passe dans cette méthode est en fait tout ce qui est nécessaire pour configurer l'hôte de web. Donc en faisant ce réutilisable, sans générer une réalité créée web hôte, il peut être utilisé à d'autres fins. Dans ce cas, cela a été fait pour le test d'intégration à l'aide de l' TestHost. Le test de l'hôte sera essentiellement de l'hôte l'hôte web en interne pour vos tests d'intégration, et il le fera par la recherche de l' CreateWebHostBuilder méthode.

Avec ASP.NET de Base 2.1, le modèle par défaut que vous voyez dans l' Program.cs est le suivant (les commentaires ajoutés par moi pour de plus amples explications):

public class Program
{
    // main entry point for your application
    public static void Main(string[] args)
    {
        // create the web host builder
        CreateWebHostBuilder(args)
            // build the web host
            .Build()
            // and run the web host, i.e. your web application
            .Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        // create a default web host builder, with the default settings and configuration
        WebHost.CreateDefaultBuilder(args)
            // configure it to use your `Startup` class
            .UseStartup<Startup>();
}

Btw. ce sujet est en général le démarrage de l'application et de l'hébergement des sections de la documentation officielle.

ASP.NET Core 3.x

En commençant par ASP.NET Core 3.0, il y a eu un changement avec la configuration que j'ai décrit ci-dessus. La raison pour cela est le générique de l'hôte. Le "generic host" est une généralisation du web hôte et l' hôte web builder, pour permettre aux non-web scénarios à l'extérieur de ASP.NET de Base, prise de ASP.NET de Base elle-même juste un "service d'hébergement" qui s'exécute au-dessus de l'hôte générique.

  • IHost: L'hôte est le composant qui héberge et exécute votre application et de ses services. C'est une généralisation de la précédente IWebHost mais fondamentalement capable de réaliser la même tâche: Il commence configuré les services hébergés et permet de s'assurer que votre application est en cours d'exécution et de travail.

  • IHostBuilder: L'hôte constructeur de constructions de l'hôte et configure les différents services. C'est la généralisation de la précédente IWebHostBuilder mais aussi, fondamentalement, fait la même chose juste pour le générique IHost. Il configure l'hôte avant le démarrage de l'application.

    Il est l' Host.CreateDefaultBuilder méthode qui vous permettra de configurer un hôte de diverses valeurs par défaut, par exemple de configuration à l'aide de appsettings.json et la journalisation.

  • IHostedService: Un service hébergé est un composant central de l' accueil des hôtes. L'exemple le plus commun serait l'ASP.NET serveur de Base, qui est implémenté sous la forme d'un service hébergé sur le dessus de l'hôte générique.

    Vous pouvez également écrire vos propres services hébergés, ou ajouter des services de tiers, qui vous permettent de bien ajouter des choses à votre demande.

L'hôte générique introduit avec ASP.NET Core 3.0 et .NET Core 3.0 fondamentalement remplace la précédente IWebHost et IWebHostBuilder. Il suit la même architecture et de l'idée, mais est simplement réduite à la non-web les tâches de sorte qu'il peut travailler avec un certain nombre de fins différentes. ASP.NET Noyau puis juste s'appuie sur le dessus de ce générique de l'hôte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X