简单聊聊AspNetCore的启动流程

首先,得和大家达成一个共识,即AspNetCore项目其实就是一个控制台项目。可以简单的理解,AspNetCore就是将一个Web服务器宿主在一个进程(即控制台)中,然后它在这个进程中进行http请求的监听处理。

AspNetCore中默认使用kestrel作为web服务器,其将接收到的http请求封装成HttpContext对象,然后这个对象经由各个中间件处理,最终返回处理结果。如下所示:

有了kestrel,我们就可以摆脱IIS的捆绑,从而实现跨平台部署。一般在生产环境,我们会在站点前面部署代理服务器,比如nginx或IIS等。如下所示:

言归正传,我们还是来探索一下AspNetCore是如何启动和配置服务器。我们新建一个空的webapi项目,找到程序的入口,我们发现这里有一行代码,如下图所示:

这里代码表示要创建一个WebHost主机,我们先看第一个方法CreateWebHostBuilder中的代码。如下:

WebHost主机其实就是我们配置服务器的地方,你一定很奇怪,我们建一个空的项目,什么也没配置,站点是如何起来的呢?其实在CreateDefaultBuilder方法中会为我们配置一些默认参数。我们进去看一下。如下:

这里面的代码就很直观了,程序会为我们默认很多配置,比如目录、配置文件、日志这些。我们重点要关注UseKestrel这个方法,它就是帮我们配置一个kestrel服务器,配置了它,我们就可以在宿主进程中启动web服务了。我们再来看一下Run()方法。如下图所示:

再进入host.RunAsync方法,这个里面就是真正启动主机并监听端口了。里面使用CancellationToken来控制程序关闭。代码如下:

上面这段代码中应该有很多熟悉的控制台输出,如下图所示:

好了,今天就简单地带大家回顾下AspNetCore项目的启动流程,大家有兴趣的可以去看下源码。其实整体流程非常简单,就是宿主进程中放一个http监听程序。

如果能帮到你一点点,就给个赞吧。哈哈。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值