zoukankan      html  css  js  c++  java
  • Asp.Net Core 中 Host 与 WebHost的区别

    最近开发包含asp.net core 2.1和3.0,其中主机的创建方式有两种,这里整理一下其不同

    asp.net core 2.1

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

    asp.net core 3.0

    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
    

    3.0中使用Host,并通过WebBuilder来注入启动类 Startup;

    查询相关资料

    获得结果

    .NET Core 3.0 与 .NET Core 2.2 代码的区别在于 .NET Core 3.0 使用 通用主机 而 .NET Core 2.2 使用 虚拟主机 用于网络应用程序。
    通用主机包含在 ASP.NET CORE 2.1 中,并成为 .NET Core future 版本的事实上的标准。尽管通用主机包含在 .NET core 2.1 中,但它仅用于非 HTTP 工作负载。在 .NET Core 3.0 中,它成为通用标准(HTTP + 非 HTTP 工作负载)。

    从 WebHost 构建器转向更通用的主机构建器的原因是因为 WebHost 构建器更多地与 HTTP 请求相关联并且适用于 Web 应用程序,但是随着微服务和 Docker 的出现,它觉得需要一个更通用的 Web 主机,因此 .NET核心团队对其进行了改造,使其也可用于控制台应用程序。与 通用主机 可以使用 控制台应用程序中的日志记录、配置和 DI 库 .

    要创建主机,我们可以使用新的 HostBuilder,它具有与现有 WebHostBuilder 相似的一组方法和扩展。需要注意的一个主要区别是 HostBuilder 没有提供允许您使用启动类的扩展方法,因为我们可以使用 WebHostBuilder .这个决定主要是为了避免在幕后创建两个独立的 DI 容器的需要。使用通用主机,配置单个服务集合,然后用于构建最终的服务提供者。

    官方参照文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-3.1

  • 相关阅读:
    我喜欢的女孩有了男友 :(
    两个月后,我又回来了。
    准备辞职,想看看老板知道我要辞职之后的表情。
    已经交了辞职报告,今天下午跟老板谈一谈。
    上班第十天
    一年了,回来看看。
    上班第十一天
    领到了离职通知单
    对上班失去了兴趣
    还没有拿到回家的火车票,惨了啊。
  • 原文地址:https://www.cnblogs.com/Alicia-meng/p/15503174.html
Copyright © 2011-2022 走看看