zoukankan      html  css  js  c++  java
  • 7.ASP.NET Core InProcess Hosting

    这篇文章,我们一起学习ASP.NET Core InProcess Hosting.这篇文章主要讨论下面几个观点:

    1. CreateDefaultBuilder方法执行什么任务?
    2. 什么是ASP.NET Core InProcess Hosting?
    3. 怎么使用InProcess hosting Model来托管ASP.NET Core应用程序
    4. InProcess Hosting在ASP.NET Core中是如何工作的

    我们打开之前创建的空模板的ASP.NET Core项目,前面已经知道了ASP.NET Core创建了一个Program类,其中有一个Main方法。

    image

    当我们执行ASP.NET Core应用程序的时候,.NET运行时就会去寻找Main方法,Main方法是ASP.NET Core应用程序的入口。

    在上面的图片中,你可以发现,首先调用的是CreateHostBuilder方法,然后CreateHostBuilder调用Host类中静态的CreateDefaultBuilder方法,也就是CreateDefaultBuilder方法创建了主机,托管了我们的ASP.NET Core 应用程序。

    CreateDefaultBuilder方法做了哪些事情?

    除了创建主机,CreateDefaultBuilder方法还做了下面几件事情:

    1. 创建了Web服务器(后面文章会讲到)
    2. 加载主机,并根据不同的配置资源,配置应用程序(后面马上会讲到)
    3. 配置日志(后面会说到)

    我们来讨论一下,CreateDefaultBuilder方法在配置创建web服务器的时候,做了哪些事情。从主机的观点来看,一个ASP.NET Core应用程序可以有两种托管方式,一种是InProcess托管,另外一种就是OutOfProcess托管。这篇文章将InProcess托管,后面会有文章讲到OutOfProcess托管。

    怎样在ASP.NET Core中配置InProcess托管

    为了配置InProcess托管,很简单就是在项目文件中加上这个元素<AspNetCoreHostingModel>,并且写上值【InProcess

    image

    当我们使用任何模板创建ASP.NET Core Web应用程序的时候,默认的就是在IIS中使用InProcess托管,或者IIS Express托管我们的程序。

    从性能的的观点来看,进程内托管模型比OutOfProcess托管模型提供了更高的请求吞吐量。在IIS中托管,使用的就是w3wp.如果使用IIS Express托管那么进程的名字就是iisexpress.

    当我们运行程序,浏览器中看到的结果是:Hello World!

    image

    这是因为我们在Statrup中有下面的代码:

    image

    为了能显示进程的名字,需要这样写:System.Diagnostics.Process.GetCurrentProcess().ProcessName

    image

    然后运行,在浏览器中是这样的:

    image

    这是因为我们默认使用Visual Studio运行程序的时候,选项是IISExpress

    image

    IIS Express是一个轻量级的,自托管的IIS,它简化了Web应用程序的开发。最重要的一点需要记住:我们仅仅在开发阶段使用IISExpress,在生产阶段我们使用IIS。接下来的文章中,我将介绍如何在IIS中发布我们的ASP.NET Core应用程序。

    OutOfProcess Hosting

    在OutOfProcess hosting中有两种web服务器:

    1. 一个是内部服务器
    2. 还有一个就是外部服务器

    内部服务器就是Kestrel,外部服务器就是IISNginx或者Apache

    在InProcess 托管模型中,仅仅只有一个web服务器,也就是IIS。所以在InProcess 托管模型中,我们不会存在在外部服务器和内部服务器之间通讯导致的性能损耗。这也就是InProcess模型比OutOfProcess模型高的多的请求吞吐量的原因。

    InProcess-Hosting-in-ASP.NET-Core-768x320

    在接下来的文章中,我将会讲到ASP.NET Core应用程序中的 Kestrel Web服务器。这篇文章向大家解释了ASP.NET Core InProcess Hosting托管模型。希望能帮到你!

  • 相关阅读:
    python命令行传参详解,optparse模块OptionParse类的学习
    设计模式之共享模式
    用flask搭建一个测试数据生成器(v1.1)
    用flask搭建一个测试数据生成器(v1.0)
    jmeter中使用beanshell断言
    jmeter中beanshell脚本的使用
    从上帝视角看OS进程调度
    Linux网络内部原理系列
    从文件read/write一个字节的过程和所发生的磁盘IO
    深入理解系统中断(INTERUPT)
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/12637650.html
Copyright © 2011-2022 走看看