Asp.NetCore初步探究
1, 新建一个空的AspNetCore项目,默认Program下的代码如下:
public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .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的哦,别弄差了。
Asp.NetCore初步探究的更多相关文章
- Asp.NetCore 自定义中间件
这节演示一下自定义中间件,第一节我们讲到,中间件的处理流程就像一个俄罗斯套娃,那这种俄罗斯套娃型的流程内部是如何实现的呢,下面请看代码. 第一种写法是直接写在Configure方法中的,使用app ...
- Asp.NetCore之组件写法
本章内容和大家分享的是Asp.NetCore组件写法,在netcore中很多东西都以提供组件的方式来使用,比如MVC架构,Session,Cache,数据库引用等: 这里我也通过调用验证码接口来自定义 ...
- 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为
初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...
- Server in ASP.NET-Core
.NET-Core Series Server in ASP.NET-Core DI in ASP.NET-Core Routing in ASP.NET-Core Error Handling in ...
- 为ASP.NetCore程序启用SSL
紧接着上一篇搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi的案例,这篇来实现为ASP.NetCore启用SSL支持 由于ASP.NetCore默认服务器Kestrel不像ii ...
- AutoMapper在asp.netcore中的使用
# AutoMapper在asp.netcore中的使用 automapper 是.net 项目中针对模型之间转换映射的一个很好用的工具,不仅提高了开发的效率还使代码更加简洁,当然也是开源的,htt ...
- ASP.NETCore的Kestrel服务器
什么是Kestrel服务器 Kestrel是开源的(GitHub提供的源代码),事件驱动的异步I / O服务器,用于在任何平台上托管ASP.NET应用程序.这是一个监听服务器和一个命令行界面.您将侦听 ...
- Asp.NetCore轻松学-使用Supervisor进行托管部署
前言 上一篇文章 Asp.NetCore轻松学-部署到 Linux 进行托管 介绍了如何在 Centos 上部署自托管的 .NET Core 应用程序,接下来的内容就是介绍如何使用第三方任务管理程序来 ...
- Asp.NetCore轻松学-部署到 IIS 进行托管
前言 经过一段时间的学习,终于来到了部署服务这个环节,.NetCore 的部署方式非常的灵活多样,但是其万变不离其宗,所有的 Asp.NetCore 程序都基于端口的侦听,在部署的时候仅需要配置侦听地 ...
随机推荐
- 【校招面试 之 C/C++】第17题 C 中的malloc相关
1.malloc (1)原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include ...
- iOS.Book.Effective Objective-C 2.0
1. 中文翻译版 (更新中) https://github.com/HagerHu/effective-objective-c-2.0 2. Book的主页 和 代码主页 http://www.eff ...
- what's RNA-Seq?
- Linux sudo 错误:XXX is not in the sudoers file 解决办法
最近在学习linux,在某个用户(xxx)下使用sudo的时候,提示以下错误:xxx is not in the sudoers file. This incident will be reporte ...
- [Selenium]显式等待 Explicit wait & 隐式等待 Implicit wait
显式等待 Explicit wait 显示等待 , 就是明确的要等到某个元素出现或者某个元素满足某种条件,每隔一段时间检查一次,等不到,就一直等,如果在规定的时间内还没有找到,就跳出来检查间隔的时间和 ...
- XAMPP Apache + MariaDB + PHP + Perl
https://www.apachefriends.org/zh_cn/index.html 什么是XAMPP? XAMPP是最流行的PHP开发环境 XAMPP是完全免费且易于安装的Apache发行版 ...
- NSNotificationCenter 注意
成对出现 意思很简单,NSNotificationCenter消息的接受线程是基于发送消息的线程的.也就是同步的,因此,有时候,你发送的消息可能不在主线程,而大家都知道操作UI必须在主线程,不然会出现 ...
- JavaScript的异步运行机制
----异步运行机制如下: 1.左右同步任务都在主线程上执行,形成一个执行栈 2.主线程值外,还存在一个任务队列,只要异步任务有了运行结果,就在任务队列中放置一个事件 3.一旦执行栈中的所有同步任务执 ...
- hdu-1171(多重背包+二进制优化)
题目链接: 思路:找每次最多装一半的情况,注意数组范围,前几次dp开小了,一直RE. #include<iostream> #include<cstdio> #include& ...
- UVa 10340 All in All (水题,匹配)
题意:给定两个字符串,问第一个串能不能从第二个串通过删除0个或多个字符得到. 析:那就一个字符一个字符的匹配,如果匹配上了就往后走,判断最后是不是等于长度即可. 代码如下: #include < ...