Asp.NetCore初步探究
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 iwebhost buildwebhost(string[] args) => 12 13 webhost.createdefaultbuilder(args) 14 15 .usestartup<startup>() 16 17 .build();
代码很简单,有main入口开始执行,调用静态方法buildwebhost开始构建webhost.
2,今天主要探究下整个webhost的构建过程和涉及到的相关接口和类.
首先查看下这里的webhost是个什么东东,f12查看源码
可以看到如图所示webhost类实际上是iwebhostbuilder和iwebhost封装了下而已并没有多么神奇的功能。
3,接下来我们看下webhost.createdefaultbuilder(args)这句,跟踪进去查看
貌似是实例化一个webhostbuilder的对象。
ok重点来了,这个就是我们整个流程的开始了,由createdefaultbuilder创建webhostbuilder对象,然后由这个对象创建我们所熟知的webhost对象,那么webhost对象在哪呢,我们接着往下看
4,下一句是usestartup<startup>()这个是干嘛的,继续跟踪下去
可以看到usestartup是一个iwebhostbuilder的泛型扩展方法,至于这个方法的作用主要就是指定web主机要使用的启动类型。也就是将startup这个类的类型作为参数传递进去,继续跟踪这个方法的实现
可以看出所指定的startup类型会在di容器中注册为单例形式,注册的处理过程被封装成action。
至于这个startup类有什么限制本章先不讨论。
5,接下来看看build()这个方法
这一步貌似就是为了构建我们的第二个重要对象webhost,至于具体如何构建的这里只是初步探究,暂不细究。
6,有了对象webhost那接下来就是要(run)运行起来了继续查看
可以看到又是一个扩展方法,不过这个扩展方法是iwebhost的扩展方法,到run()这一步基本上我们的应用程序就跑起来了,当然run()里的执行逻辑包括端口监听,url处理等待这里先不细说。
总结:本篇初步探索了下aspnetcore的2大对象webhost,webhostbuilder。具体的对象的构建过程本章忽略了,仅供给自己和初入门的朋友一个参考,不足之处肯定多多的,欢迎指正
备注:aspnetcore的版本是2.0的哦,别弄差了。
上一篇: 苦逼青年!