快捷搜索:

asp源码怎么用(网上下载的网站源代码怎么用)

asp源码怎么用(网上下载的网站源代码怎么用)

  在这个特殊的春节,大家想必都在家出不了们,远看已经到了回城里上班的日子,但是因为一只蝙蝠的原因导致我们无法回到工作岗位,大家可能有的在家远程办公,有些在家躺着看书,有的是在家打游戏;在这个特殊无聊的日子,我果断从无聊的被窝中 开启了流量共享wifi 来进行core 3.1 源代码的解读和学习,并且把学习到的东西分享给大家。

  现在我这里使用.NETCORE 3.1 最新稳定发布版本来进行以上问题的解析,带大家解决以上问题的疑惑,学习完大家可以对ASP.NETCORE 项目会有一个不一样的理解和领悟.

  刚刚接触ASP.NET core 的同学们估计都会觉得和之前的ASP.NET 设计大不一样,代码风格也有很大的变化,以前的ASP.NET 是全家桶框架模式,里面包含了所有的实现,你用的到的用不到的都集成在里面;然而ASP.NET CORE 框架做了大的改变,以最小化抽象设计,通过扩展方法完成易用性扩展.

  解读过源代码的同学们都可以发现大多api都是最小化单元抽象接口方式进行设计,其他复杂的方法api都是通过扩展方法进行扩展提供,这也是.NET Core 高效易扩展的一大优势原因.

  对于ASP.NET Core应用程序来说,我们要记住非常重要的一点是:其本质上是一个独立的控制台应用,它并不必须需在IIS内部托管且并不需要IIS来启动运行(而这正是ASP.NET Core跨平台的基石)。ASP.NET Core应用程序拥有一个内置的Self-Hosted(自托管)的Web Server(Web服务器),用来处理外部请求。

  不管是托管还是自托管,都离不开Host(宿主)。在ASP.NET Core应用中通过配置并启动一个Host来完成应用程序的启动和其生命周期的管理。而Host的主要的职责就是Web Server的配置和Pilpeline(请求处理管道)的构建。

  Build() :负责创建 IHost,看过源代码的同学可以发现 Build的过程 会配置各种东西,本身通过管道模式进行了一系列的默认或者自定义的配置以及服务注册的构建(下面会详细讲解)

  其主要涉及到两个关键对象 IHostBuilder和 IHost,它们的内部实现是ASP.NET Core应用的核心所在。下面我们就结合源码并梳理调用堆栈来一探究竟!

  从代码中可以发现有一个_hostBuilt 的变量,细心的同学可以发现该变量主要是用于控制是否build 过,所以这里可以大胆猜测只能build 一次该Host;现在看下源代码解析图:

  以前web项目是需要搭建在iis 中托管运行,但是ASP.NETCORE 项目可以直接通过命令行进行托管运行,运行后可以直接浏览器打开,你们有没有考虑过为什么?,细心的同学查看项目属性也会发现项目的输出类型也是控制台项目,如图:

  在上面的源代码分析过程中可以发现启动时会启动一个 Kestrel 服务器( ConfigureWebHostDefaults方法中会调用 UseKestrel),所以命令后启动一个控制台应用程序后相当于启动了一台web服务器;下面简要的概括下 Kestrel服务器的优势:

  内部封装了对 libuv的调用,作为I/O底层,屏蔽各系统底层实现差异;有了Kestrel才能真正的实现 跨平台.

  好了,想必同学们到这里已经对上面 两个疑惑有了清晰的答案了。这里我抛出一个疑问,看了上面的代码解读网上下载asp源码怎么运行到桌面asp教程,大家有没有发现CORE 和ASP.NET 有了很大的不同,这是什么样的设计改进呢?敬请期待下期我们一起来学习ASP.NET CORE 的牛逼的 管道模型.

  如果您觉得不错,请动动手指关注下,觉得有瑕疵敬请在下面留言讨论,我们一起创作一个良好的讨论环境,谢谢您的支持!!!

您可能还会对下面的文章感兴趣: