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

  • 相关阅读:
    尝试实现一个简单的C语言string类型
    LeetCode.49
    Python学习 —— 实现简单的爬虫
    图表可视化表达的逻辑原理
    颜色参数
    Python交互图表可视化Bokeh:7. 工具栏
    Python交互图表可视化Bokeh:6. 轴线| 浮动| 多图表
    Python交互图表可视化Bokeh:5 柱状图| 堆叠图| 直方图
    Python交互图表可视化Bokeh:4. 折线图| 面积图
    Python交互图表可视化Bokeh:3. 散点图
  • 原文地址:https://www.cnblogs.com/Alicia-meng/p/15503174.html
Copyright © 2011-2022 走看看