zoukankan      html  css  js  c++  java
  • ASP.NET Core 进程内(InProcess)托管

    ASP.NET Core 进程内(InProcess)托管

    • 在 ASP.NET Core 中的进程内(InProcess)托管模型
    • 什么是 Kestrel 服务器

    当一个 ASP.NET Core 应用程序执行的时候,.NET 运行时会去查找 Main()方法,因为它是这个应用程序的起点。

    然后,Main()方法调用静态类WebHost中的静态方法CreateDefaultBuilder()
    这个CreateDefaultBuilder()方法执行几个任务,如:

    • 将 Kestrel 用作 Web 服务器并启用 IIS 集成。
    • 从种配置源中加载配置。
    • 配置日志记录

    在以后的文章中,我们将讨论 asp.net core 中可用的各种配置源,加载主机和应用程序配置信息以及配置日志记录等内容。

    在本节中,让我们了解CreateDefaultBuilder()方法用于配置和设置 Web 服务器的功能。 ASP.NET Core 应用程序可以托管在进程内(InProcess)或进程外(OutOfProcess)中。 在本视频中,我们将讨论进程内(InProcess)托管,在下一个视频中,我们将讨论进程外(OutOfProcess)托管。

    进程内(InProcess)托管

    若要配置 InProcess 宿主, 请将<AspNetCoreHostingModel>添加到应用的项目文件中, 其中的值为 InProcess

    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    

    当我们选择使用一个可用的项目模板,创建一个新的 ASP.NET Core 项目时,该项目默认为所有的 IIS 和 IIS Express 的配置都是作为进程内托管(InProcess)。

    在 InProcess 托管的情况下,CreateDefaultBuilder()方法调用UseIIS()方法并在 IIS 工作进程**(w3wp.exe 或 iisexpress.exe)***内托管应用程序。

    • 从性能的角度来看,InProcess 托管比 OutOfProcess 托管提供了更高的请求吞吐量。
    • 对于 IIS,执行应用程序的进程名称是w3wp,对于 IIS Express,它是iisexpress
    • 要获取执行应用程序的进程名称,请使用System.Diagnostics.Process.GetCurrentProcess().ProcessName
    • 当我们从 Visual Studio 运行项目时,它默认使用 IISExpress。
    • IIS Express是 IIS 的轻量级自包含版本,针对应用程序开发进行了优化。我们不会将它用于生产。在生产中我们会使用 IIS。
    • 我们会在后面的课程中带着大家,在 IIS 上部署 ASP.NET Core 应用程序。

    进程外(out-of-Process)托管

    • 有 2 个 Web 服务器 ,内部 Web 服务器和外部 Web 服务器。
    • 内部 Web 服务器是 Kestrel, 外部 Web 服务器可以是 IIS,Nginx 或 Apache。
    • 使用 InProcess 托管,只有一个 Web 服务器,承载 asp.net Core 应用程序的 IIS。 因此,在内部和外部 Web 服务器之间,他们的代理和请求不没有性能的损失。

    什么是 Kestrel

    Kestrel 是 ASP.NET Core 的跨平台 Web 服务器。.NET Core 支持的所有平台和版本都支持它。它默认包含在 ASP.NET Core 中作为内部服务器。 Kestrel 本身可以用作边缘服务器,即面向互联网的 Web 服务器,它可以直接处理来自客户端的传入 HTTP 请求。

    在 Kestrel 中,用于托管应用程序的进程是dotnet.exe。当我们使用.NET Core CLI(命令行界面)运行.NET Core 应用程序时,应用程序使用 Kestrel 作为 Web 服务器。

    .NET Core CLI 是一个用于开发.NET 核心应用程序的跨平台工具。使用 CLI 命令我们做:

    • 根据指定的模板创建新项目,配置文件或解决方案
    • 恢复.Net Core 项目所需的所有依赖项和工具包
    • 生成项目及其所有依赖项
    • 运行.net Core 项目等等......

    我们可以使用.NET Core CLI 做很多事情。

    简单说下 CLI

    使用.NET Core CLI 运行我们的 Asp.Net Core 应用程序。

    • 启动 Windows 命令提示符
    • 将目录更改为包含 asp.net Core 项目的文件夹,然后执行dotnet run命令
    • C: Projects Source epos StudentManagement StudentManagement > dotnet run

    在.NET Core CLI 生成并运行项目之后,它会显示用于访问应用程序的 URL。 在我的例子中,应用程序可以通过访问浏览器地址在 http://localhost:5000 查看内容。

    于 Kestrel,用于托管和执行应用程序的进程是dotnet.exe

    因此,当我们导航到http://localhost:5000时,我们将看到显示进程名称dotnet
     

    欢迎添加个人微信号:Like若所思。

    欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!


     

  • 相关阅读:
    硬件接口通信速度
    python socket非阻塞及python队列Queue
    pandaboard用wifi时打不开网页
    pandaboard安装ubuntu14.04系统遇到的问题
    创建ROS工作空间和包
    CAN 和 CANopen的区别和联系
    各种通信方式总汇
    ROS中的CMakeLists.txt
    备忘录模式
    class文件概述
  • 原文地址:https://www.cnblogs.com/cool2feel/p/11445698.html
Copyright © 2011-2022 走看看