Asp.Net Core 中 Host 与 WebHost的区别

摘要:
ASP中包含通用主机。NET CORE 2.1,并成为NETCore版本的事实标准。您可以将控制台应用程序中的日志记录、配置和DI库与通用主机一起使用。要创建主机,我们可以使用新的HostBuilder,它有一组与现有WebHostBuilder类似的方法和扩展。需要注意的一个主要区别是,HostBuilder没有提供允许您使用启动类的扩展方法,因为我们可以使用WebHostBuilder。这一决定主要是为了避免在幕后创建两个独立的DI容器。

最近开发包含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

免责声明:文章转载自《Asp.Net Core 中 Host 与 WebHost的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇numpy和matplotlib读书笔记iOS 开发之照片框架详解(1)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

eMMC基础技术6:eMMC data读写

1. 前言 data可以经data线从host发往device,也可以从device发往host 数据线以是1线(DATA0),4线(DATA0~DATA3),8线(DATA0~DATA7) 对每条数据线,每个时钟周期可以传输1bit(single data rate)和2bits(dual data rate)数据 2. data传输 eMMC传输是...

ansible API 常用模块

常用模块 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 from ansible.vars.manager import VariableManager #用于创建和管理inventory,倒入inventory文件 f...

Nginx与Tomcat实现请求动态数据与请求静态资源的分离

  上篇博客说明了Nginx在应用架构中的作用,以及负载均衡的思路。这篇实践一下其中的访问静态资源与访问动态资源的操作。 一、认识访问静态资源与访问动态资源的区别   静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。   如:图片、字体、js文件、css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内。      动...

【转】Android 源码编译make的错误处理--不错

原文网址:http://blog.csdn.net/ithomer/article/details/6977386 Android源码下载:官方下载或参考android源码下载方式 Android编译版本:PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台:Linux yanggang 2.6.35-30-g...

记一次MySQL数据库拒绝访问的解决过程

问题背景 用wordpress搭博客,数据库采用MySQL。为了调试方便,创建账户my_account ,允许它从任意主机访问数据库。 CREATE USER `my_account`@'%' IDENTIFIED BY 'my_password'; 修改 wp-config.php 相应配置,注意 DB_HOST 设置为 127.0.0.1。 defi...

docker+ceph实现私网云盘

目录 ceph+docker方式搭建owncloud实现私网云盘 项目背景 项目架构图 部署过程 准备过程 1、所有节点配置静态IP地址(要求能上公网)(ceph1举例) 2、所有节点主机名配置在/etc/hosts文件中 3、所有节点关闭centos7的firewalld房防火墙,iptables规则清空 4、所有节点关闭selinux 5、同步...