DotnetCore学习笔记之IWebHostBuilder(Web主机)

DotnetCore学习笔记之IWebHostBuilder(Web主机)

一. 什么是IWebHostBuilder

    关于什么是IWebHostBuilder,我也不知道!!(见笑见笑)
    所以才要学习嘛!

二、开启学习之路

    接下来我们来学一下介是个嘛玩意!
    首先,当我们创建一个DotNetCore Web项目的时候,我们会发现DotNetCore自动会帮我们创建一个Program.Cs文件和StartUp.Cs 文件放在那,而在Program.Cs文件里面就有个CreateWebHostBuilder()方法的返回类型就是IWebHostBuilder接口,那么这个东西是干什么的呢,这个我们先不要在意,我们先来运行下当前的项目,看一下当前项目的启动流程。

在这里插入图片描述

从上图可以看出,当我们启动程序的时候程序会先进入Program类下的Main方法里面,这一点相信写过控制台程序的小伙伴们都很熟悉,那么这是不是就是意味着DotNetCore的Web程序其实从本质上和控制台程序差不多呢?然后我查找了一下微软的文档,而微软的定义是“主机”。Asp.Net Core中微软给我们提供了两个主机,一个是通用主机,第二个就是我们看到的这个Web主机,而我们在Program.cs里面看到的CreateWebHostBuilder()方法就是创建一个使用IWebHostBuilder实例的主机,该主机主要负责应用程序启动和生存期管理,换句话说我们的应用程序其实是托管在了这个Web主机上面。
    接下来,我们来看下面的代码,我们会很直观地看到,其实CreateWebHostBuilder()方法主要就是为了配置Web服务器的各项配置

在这里插入图片描述


下文变量声明:
     Method   CreateDefaultBuilder   主机默认构建方法 ;

    比如我们会发现首先方法会调用WebHost类下面的主机默认构建方法来构建一个默认的Web主机,而通过上面的图片我们可以看出在上面的那段代码里面我在主机默认构建方法下面写了UseKestrel()方法,其实这是没有必要的,我之所以这么写是因为我之前参与的项目中都这么写,当时我还没看过源码以及文档,所以就跟着一起这么写,就在刚刚看完源码和文档以后我发现其实在上面的主机默认构建方法方法内部其实早已实现了UseKestrel()方法,而UseKestrel()方法其实是为了让你在未调用主机默认构建方法的时候调用或者重写主机默认构建方法在内部配置的kestrel服务器各项配置所调用的,所以由此可知该方法所返回的WebHostBuilder主要作用是使用Kestrel作为Web服务器并使用应用程序的配置提供程序对其进行配置,并且根据文档描述还有将内容根设置为由Directory.GetCurrentDirectory 返回的路径,然后通过用户配置的环境变量文件加载主机的配置,具体的大家可以自行去微软官方文档上面浏览
    

经过修改的代码段

在这里插入图片描述

或者

在这里插入图片描述

看到这里突然又有一个问题出来了,那就是为什么第二张图的返回类型和第一张图的返回类型不一样,其实第一张图的返回的是一个Web主机配置实例(IWebHostBulider),而通过CreateWebHostBuilder(args).Build()方法会在内部实例出一个Web主机(IwebHost)的实例出来并且返回,然后通过Run()方法启动我们的应用程序,而第二张图的写法和第一张其实差不多,可以看作是第一张图的主机默认构建方法内部实现逻辑也说得通,该方法也是实例出一个Web主机配置实例(WebHostBulider)出来并且调用Build()方法实例出一个Web主机的实例并且调用Run()方法启动程序

不算总结的总结

路漫漫其修远兮,吾将上下而求索

如果有那位大牛看到小弟的博文,并且能给予小弟一些批评指正,小弟万分感谢,如果有哪位仁兄因为小弟的博文而学到一些哪怕皮毛知识,小弟也觉得万分荣幸,希望各位大牛批评指正!

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值