博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单聊聊AspNetCore的启动流程
阅读量:4034 次
发布时间:2019-05-24

本文共 851 字,大约阅读时间需要 2 分钟。

首先,得和大家达成一个共识,即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监听程序。

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

转载地址:http://cskdi.baihongyu.com/

你可能感兴趣的文章
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
linux内核学习(4)建立正式内核的页式内存映射, 以x86 32位模式为例
查看>>
慢慢欣赏linux 查看硬盘情况
查看>>
慢慢欣赏linux vsftpd的使用
查看>>
慢慢欣赏linux 思考中的问题
查看>>
慢慢欣赏linux switch_to学习
查看>>
慢慢欣赏linux CPU占用率和负载
查看>>
设计模式学习
查看>>
慢慢欣赏linux seq_file
查看>>
慢慢欣赏linux 设备树device tree
查看>>
慢慢欣赏linux HZ与时钟中断频率的关联
查看>>
慢慢欣赏linux 文件黑洞和文件空洞
查看>>
慢慢欣赏linux 截断文件
查看>>
慢慢欣赏linux 数据类型
查看>>
中断学习之timer_interrupt powerpc实现
查看>>
慢慢欣赏linux 死锁检测
查看>>
慢慢欣赏linux exec加载执行程序
查看>>
慢慢欣赏linux 页框lru的作用
查看>>
慢慢欣赏linux glibc相关
查看>>