欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Asp.NetCore初步探究

程序员文章站 2022-04-28 12:45:03
1, 新建一个空的AspNetCore项目,默认Program下的代码如下: 1 public static void Main(string[] args) 2 3 { 4 5 BuildWebHost(args).Run(); 6 7 } 8 9 10 11 public static IWeb ......

 

1,  新建一个空的aspnetcore项目,默认program下的代码如下:

 

Asp.NetCore初步探究
 1  public static void main(string[] args)
 2 
 3         {
 4 
 5             buildwebhost(args).run();
 6 
 7         }
 8 
 9  
10 
11    public static iwebhost buildwebhost(string[] args) =>
12 
13             webhost.createdefaultbuilder(args)
14 
15                 .usestartup<startup>()
16 
17                 .build();
view code

 

代码很简单,有main入口开始执行,调用静态方法buildwebhost开始构建webhost.

2,今天主要探究下整个webhost的构建过程和涉及到的相关接口和类.

首先查看下这里的webhost是个什么东东,f12查看源码

 Asp.NetCore初步探究

可以看到如图所示webhost类实际上是iwebhostbuilder和iwebhost封装了下而已并没有多么神奇的功能。

3,接下来我们看下webhost.createdefaultbuilder(args)这句,跟踪进去查看

 Asp.NetCore初步探究

貌似是实例化一个webhostbuilder的对象。

ok重点来了,这个就是我们整个流程的开始了,由createdefaultbuilder创建webhostbuilder对象,然后由这个对象创建我们所熟知的webhost对象,那么webhost对象在哪呢,我们接着往下看

4,下一句是usestartup<startup>()这个是干嘛的,继续跟踪下去

 Asp.NetCore初步探究

可以看到usestartup是一个iwebhostbuilder的泛型扩展方法,至于这个方法的作用主要就是指定web主机要使用的启动类型。也就是将startup这个类的类型作为参数传递进去,继续跟踪这个方法的实现

 Asp.NetCore初步探究

可以看出所指定的startup类型会在di容器中注册为单例形式,注册的处理过程被封装成action。

至于这个startup类有什么限制本章先不讨论。

5,接下来看看build()这个方法

 Asp.NetCore初步探究

这一步貌似就是为了构建我们的第二个重要对象webhost,至于具体如何构建的这里只是初步探究,暂不细究。

6,有了对象webhost那接下来就是要(run)运行起来了继续查看

 Asp.NetCore初步探究

可以看到又是一个扩展方法,不过这个扩展方法是iwebhost的扩展方法,到run()这一步基本上我们的应用程序就跑起来了,当然run()里的执行逻辑包括端口监听,url处理等待这里先不细说。

 

总结:本篇初步探索了下aspnetcore的2大对象webhost,webhostbuilder。具体的对象的构建过程本章忽略了,仅供给自己和初入门的朋友一个参考,不足之处肯定多多的,欢迎指正

备注:aspnetcore的版本是2.0的哦,别弄差了。