本文出自《从零开始学 CORE MVC》
推荐文章:Core中的Main方法
Core 进程内(InProcess)托管
在这个视频中我们将讨论
在 Core中的进程内(InProcess)托管模型
什么是Kestrel服务器
当一个 Core 应用程序执行的时候,.NET 运行时会去查找Main()
方法,因为它是这个应用程序的起点。
然后,Main()
方法调用静态类WebHost
中的静态方法CreateDefaultBuilder()
。
这个CreateDefaultBuilder()
方法执行几个任务,如:
将Kestrel用作Web服务器并启用IIS集成。
从种配置源中加载配置。
配置日志记录
在以后的课程中,我们将讨论core中可用的各种配置源,加载主机和应用程序配置信息以及配置日志记录等内容。
在本视频中,让我们了解CreateDefaultBuilder()
方法用于配置和设置Web服务器的功能。
Core应用程序可以托管在进程内(InProcess)或进程内(InProcess)中。
在本视频中,我们将讨论进程内(InProcess)托管,在下一个视频中,我们将讨论进程内(InProcess)托管。
进程内(InProcess)托管
NEW
﹀
﹀
﹀
若要配置 InProcess 宿主, 请将<AspNetCoreHostingModel>
添加到应用的项目文件中, 其中的值为InProcess
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
当我们选择使用一个可用的项目模板,创建一个新的Core项目时,该项目默认为所有的IIS和IISExpress的配置都是作为进程内托管(InProcess)。
在InProcess托管的情况下,CreateDefaultBuilder()
方法调用UseIIS()
方法并在IIS工作进程(w3wp.exe或iisexpress.exe)*内托管应用程序。
从性能的角度来看,InProcess托管比OutOfProcess托管提供了更高的请求吞吐量。
对于IIS,执行应用程序的进程名称是w3wp,对于IIS Express,它是iisexpress
要获取执行应用程序的进程名称,请使用System.Diagnostics.Process.GetCurrentProcess().ProcessName
当我们从VisualStudio运行项目时,它默认使用IISExpress。
IIS Express是IIS的轻量级自包含版本,针对应用程序开发进行了优化。我们不会将它用于生产。在生产中我们会使用IIS。
我们会在后面的课程中带着大家,在IIS上部署Core应用程序。
进程外(out-of-Process)托管
NEW
﹀
﹀
﹀
有2个Web服务器,内部Web服务器和外部Web服务器。
内部Web服务器是Kestrel,外部Web服务器可以是IIS,Nginx或Apache。
使用InProcess托管,只有一个Web服务器,承载Core应用程序的IIS。
因此,在内部和外部Web服务器之间,他们的代理和请求不没有性能的损失。
什么是Kestrel
Kestrel是Core的跨平台Web服务器。.NETCore支持的所有平台和版本都支持它。它默认包含在Core中作为内部服务器。
Kestrel本身可以用作边缘服务器,即面向互联网的Web服务器,它可以直接处理来自客户端的传入HTTP请求。
在Kestrel中,用于托管应用程序的进程是dotnet.exe
。当我们使用.NET Core CLI
(命令行界面)运行.NETCore应用程序时,应用程序使用Kestrel作为Web服务器。
.NETCoreCLI是一个用于开发.NET核心应用程序的跨平台工具。使用CLI命令我们做:
根据指定的模板创建新项目,配置文件或解决方案
恢复.Net Core 项目所需的所有依赖项和工具包
生成项目及其所有依赖项
运行.net Core项目等等......
我们可以使用.NETCoreCLI做很多事情。
简单说下CLI
使用.NETCoreCLI运行我们的Core应用程序。
启动Windows命令提示符
将目录更改为包含 Core 项目的文件夹,然后执行dotnet run
命令
C:\Projects\Source\repos\StudentManagement\StudentManagement>dotnet run
在.NETCoreCLI生成并运行项目之后,它会显示用于访问应用程序的URL。
在我的例子中,应用程序可以通过访问浏览器地址在
http://localhost:5000查看内容。
于Kestrel,用于托管和执行应用程序的进程是dotnet.exe
。
因此,当我们导航到http://localhost:5000
时,我们将看到显示进程名称dotnet
。
下一个视频:Core中的进程外托管模型
硬广专区
如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦
未得到授权不得擅自转载本文内容,保留版权
文字版目录:/Wiki/mvc/latest/1.Intro
代码托管地址:/aiabpedu
知乎专栏:/52abp
交流QQ群:952387474《微软MVP带你学CORE》
【收费】腾讯课堂:/course/392589?tuin=2522cdf3
【免费】youtube视频专区:/Ei0F2EB
【免费】B站:/2954671
免费的更新慢,收费的更新快,仅此而已。就这样。
「好看」的人都【在看】↓↓↓