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

  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    leetcode 213. 打家劫舍 II JAVA
    leetcode 48. 旋转图像 java
    leetcode 45. 跳跃游戏 II JAVA
    leetcode 42. 接雨水 JAVA
    40. 组合总和 II leetcode JAVA
    24. 两两交换链表中的节点 leetcode
    1002. 查找常用字符 leecode
    leetcode 23. 合并K个排序链表 JAVA
  • 原文地址:https://www.cnblogs.com/Alicia-meng/p/15503174.html
Copyright © 2011-2022 走看看