ASP.NET Core 进程外(out-of-process)托管(7)《从零开始学ASP.NET CORE MVC》

640?wx_fmt=gif


本文出自《从零开始学ASP.NET CORE MVC》
推荐文章:ASP.NET Core 进程内(InProcess)托管

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

640?wx_fmt=png

我们先简单回顾下 ASP.NET Core 中,要配置InProcess的服务器,

需要在项目文件中添加< AspNetCoreHostingModel >元素,其值为InProcess

< AspNetCoreHostingModel > InProcess </ AspNetCoreHostingModel >

使用InProcess托管,应用程序托管在IIS工作进程(w3wp.exe或iisexpress.exe)中。
使用InProcess托管,只有一个Web服务器,它是承载我们的应用程序的IIS服务器。


640?wx_fmt=other

进程内托管图示


ASP.NET Core 进程外(out-of-process)托管

有两种方法可以配置进程外托管 :

  • 方法一:将< AspNetCoreHostingModel >元素添加到应用程序的项目文件中,其值为OutOfProcess

< AspNetCoreHostingModel > OutOfProcess </ AspNetCoreHostingModel >
  • 方法二:默认为OutOfProcess托管。因此,如果我们 从项目文件中删除 < AspNetCoreHostingModel >元素,默认情况下ASP.NET Core 将使用OutOfProcess托管。


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


  • 有2个Web服务器 ,内部Web服务器和外部Web服务器。

  • 内部Web服务器是Kestrel, 外部Web服务器可以是IIS,Nginx或Apache。在上节课中我们讨论了什么是Kestrel

根据您运行asp.net Core 应用程序的方式的不同,可能会,也可能不会使用外部Web服务器。

Kestrel 是嵌入在 asp. net Core 应用程序中的跨平台 web 服务器。使用进程外(out-of-Process)托管, Kestrel 可通过以下两种方式来进行使用:

Kestrel 可以用作面向互联网的 web 服务器, 直接处理传入的 HTTP 请求。
在此模型中, 我们不使用外部 web 服务器。只使用 Kestrel, 它作为服务器可以自主面向互联网, 直接处理传入的 HTTP 请求。
当我们使用. net Core CLI 运行 asp. net Core 应用程序时, Kestrel 是唯一用于处理和处理传入 HTTP 请求的 web 服务器。

640?wx_fmt=other

kestrel直面互联网

Kestrel 还可以与反向代理服务器 (如 IIS、Nginx 或 Apache) 结合使用。

640?wx_fmt=other

配合方向代理


来个讨论

如果Kestrel可以单独用作Web服务器,为什么我们需要一个反向代理服务器?

因为Kestrel使用 "进程外(out-of-process)托管", 结合反向代理服务器是一个不错的选择, 因为它提供了额外的配置和安全性层。它可能会更好地与现有基础设施集成。它还可用于负载平衡。

因此, 在使用反向代理服务器的情况下, 它将接收来自网络的传入 HTTP 请求, 并将其转发到 Kestrel 服务器进行处理。在处理请求时, Kestrel 服务器将响应发送到反向代理服务器, 然后反向代理服务器最终通过网络将响应发送到请求的客户端。

在后面的视频课程中,我们将学习如何将ASP.NET Core应用程序部署到IIS并使用IIS作为反向代理服务器。当我们直接从Visual Studio运行asp.net Core 应用程序时,它默认使用IIS Express。
由于我们已将应用程序配置为使用进程外托管,所以当前情况下,IIS Express 已经在充当反向代理服务器了。

IIS Express接收传入的HTTP请求并将其转发给Kestrel进行处理。Kestrel处理请求并将响应发送到IIS Express。IIS Express反过来将该响应发送到浏览器。

使用进程外托管无论您是否使用反向代理服务器,Kestrel服务器都是作为托管应用程序的服务器同时处理请求的,也就是我们最开始说的自托管。
如果使用反向代理服务器接收传入的HTTP请求并将其转发到Kestrel服务器。同样,它从Kestrel服务器获取响应并将其发送到客户端。因此托管应用程序的进程名称是dotnet.exe

使用以下代码获取进程名称


我们来操作一波,给大家演示看看。记住下面这行代码,是个知识点

            System.Diagnostics.Process.GetCurrentProcess().ProcessName;

当我们使用.NET Core CLI运行asp.net Core 项目时,默认情况下它会忽略我们在.csproj文件中指定的托管设置。因此项目文件中的```AspNetCoreHostingModel``标签下的值是被忽略了的。
无论您指定的值(InProcess或OutOfProcess)如何,它始终都是OutOfProcess托管,都是通过Kestrel托管应用程序,同时处理http请求。

一个常见问题

我们可以在不使用内置的Kestrel Web服务器的情况下运行asp.net Core 应用程序吗?

答案是肯定可以的,你要相信.NET Core的开发团队。如果我们使用InProcess托管,则应用程序将托管在IIS工作进程(w3wp.exe或iisexpress.exe)中。


知识点:Kestrel不与InProcess(进程内)托管一起使用

代理服务器: 泛指IIS,Nginx或Apache等等

所以.net core 有多优秀大家知道了吧。欢迎留言互动~


硬广专区



如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦

未得到授权不得擅自转载本文内容,52abp.com保留版权

文字版目录: https://www.52abp.com/Wiki/mvc/latest/1.Intro 

代码托管地址:https://gitee.com/aiabpedu
知乎专栏:https://zhuanlan.zhihu.com/52abp

交流QQ群:952387474《微软MVP带你学ASP.NET CORE》
【收费】腾讯课堂: https://ke.qq.com/course/392589?tuin=2522cdf3 
【免费】youtube视频专区:http://t.cn/Ei0F2EB 
【免费】B站: https://space.bilibili.com/2954671 
免费的更新慢,收费的更新快,仅此而已。就这样。
 

640?wx_fmt=jpeg


「好看」的人都【在看】↓↓↓





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eShopOnContainers 知多少[10]:部署到 K8S | AKS

1. 引言断断续续&#xff0c;感觉这个系列又要半途而废了。趁着假期&#xff0c;赶紧再更一篇&#xff0c;介绍下如何将eShopOnContainers部署到K8S上&#xff0c;进而实现大家常说的微服务上云。2. 先了解下 Helm读过我上篇文章ASP.NET Core 借助 K8S 玩转容器编排的同学&…

DI是实现面向切面和面向抽象的前提

DI越来越重要DI就是依赖注入&#xff0c;现在来说&#xff0c;大部分框架都是以DI为基础组件的&#xff0c;每一个框架都有自己的DI组件&#xff0c;像dotnet core&#xff0c;java spring等&#xff0c;也都为自己的框架量身打造了DI工具。面向对象的几个原则依赖倒置原则&…

.net core 并发下的线程安全问题

抱歉&#xff0c;其实内容并不如题&#xff01;&#xff01;&#xff01;背景&#xff08;写测试demo所出现的异常&#xff0c;供大家学习与拍砖&#xff09;&#xff1a;.net core webapi项目&#xff0c;做了一个授权的filter&#xff08;真正的生产项目的话&#xff0c;JWT很…

cf1555B. Two Tables

cf1555B. Two Tables 题意&#xff1a; 一个大矩阵空间内放置一个矩阵a&#xff0c;现在要再往这个空间内放一个矩阵b&#xff0c;a移动距离len才能放下b&#xff0c;问len最小是多少 题解&#xff1a; 不难发现左右或上下移动是最佳的&#xff0c;斜着移动是最不好的。此时…

cf1555C Coin Rows

cf1555C Coin Rows 题意&#xff1a; 有一个两行m列的地图&#xff0c;每个格子都有对应的价值&#xff0c;有a&#xff0c;b两个人&#xff0c;都从左上角到右下角&#xff0c;且都只能向右向下走&#xff0c;a先出发&#xff0c;a每到一个格子&#xff0c;就会获得这个地方…

C#并行编程(2):.NET线程池

线程 Thread在总结线程池之前&#xff0c;先来看一下.NET线程。.NET线程与操作系统(Windows)线程有什么区别&#xff1f;.NET利用Windows的线程处理功能。在C#程序编写中&#xff0c;我们首先会新建一个线程对象System.Threading.Thread&#xff0c;并为其指定一个回调方法&…

ASP.NET Core launchsettings.json文件(8)《从零开始学ASP.NET CORE MVC》:

本文出自《从零开始学ASP.NET CORE MVC》推荐文章&#xff1a;ASP.NET Core 进程外(out-of-process)托管ASP.NET Core launchsettings.json文件在本视频中&#xff0c;我们将讨论在ASP.NET Core项目中launchsettings.json文件的重要性。launchsettings.json文件您将在项目根文件…

[CQOI2017] 老C的方块(网络流染色建图)

problem luogu-P3756 solution 据说要做网络流 24\text{24}24 题中的《方格取数问题》和《骑士共存问题》。 &#xff1f;&#xff1f;&#xff1f;那个不是直接最小割吗&#xff1f;哦原来是从黑白染色来理解的。我还是太水了。 这种题之所以能用网络流做&#xff0c;是因…

江湖召集:.NET开发者们看过来,这场长沙的开发者技术大会正是为你精心准备的大餐...

看过去&#xff0c;历史的尘埃与沧海桑田古语有云“近代中国&#xff0c;湖南独撑半边天”&#xff0c;湖南长沙&#xff0c;作为湖南省的省会&#xff0c;自古以来便是各界风云人士兴起之地。随着互联网时代的到来&#xff0c;长沙&#xff0c;这座历史悠久的文化名城&#xf…

C#并行编程(3):并行循环

初识并行循环并行循环主要用来处理数据并行的&#xff0c;如&#xff0c;同时对数组或列表中的多个数据执行相同的操作。在C#编程中&#xff0c;我们使用并行类System.Threading.Tasks.Parallel提供的静态方法Parallel.For和Parallel.ForEach来实现并行循环。从方法名可以看出&…

Acwing 252. 树

Acwing 252. 树 题意&#xff1a; 给定一个有 N 个点&#xff08;编号 0,1,…,N−1&#xff09;的树&#xff0c;每条边都有一个权值&#xff08;不超过 1000&#xff09;。 树上两个节点 x 与 y 之间的路径长度就是路径上各条边的权值之和。 求长度不超过 K 的路径有多少条…

.net 4.5部署到docker容器

.NET FX 应用程序也是可以容器化的&#xff0c;容器化的选项有两个&#xff1a;部署到windows容器部署到linux容器部署到windows容器由于.net本身就是运行在windows平台的&#xff0c;所以它与windows容器也是更加适合&#xff0c;你可以以iis镜像为基础&#xff0c;去编写你的…

将传统 WPF 程序迁移到 DotNetCore 3.0

介绍由于历史原因&#xff0c;基于 Windows 平台存在着大量的基于 .NetFramework 开发的 WPF 和 WinForm 相关程序&#xff0c;如果将这些程序全部基于 DotNetCore 3.0 重写一遍显然是不现实的&#xff0c;但是 DotNetCore 是未来发展的趋势。所以本文通过以 WPF 为例&#xff…

.NET Core 时代已经到了,你准备好了吗

今天很多人都收到了阿里云函数计算支持.NET Core的短信了。通过访问 https://help.aliyun.com/document_detail/112379.html 你可以看到最新的说明。现在和过去的两年不同&#xff0c;因为最恶劣的时期已经过去&#xff0c;经历过了最黑暗的时刻&#xff0c;我们正在走向光明的…

ASP.NET Core appsettings.json文件(9)《从零开始学ASP.NET CORE MVC》:

本文出自《从零开始学ASP.NET CORE MVC》推荐文章&#xff1a;ASP.NET Core launchsettings.json文件ASP.NET Core appsettings.json文件在本视频中&#xff0c;我们将讨论ASP.NET Core 项目中appsettings.json文件的重要性。在以前的ASP.NET版本中&#xff0c;我们将应用程序配…

在Windows上使用Docker运行.NetCore

今天我们来说下如何在windows下使用docker运行.net core&#xff0c;既然是docker&#xff0c;那么我们首先得在windows上安装docker。在Windows安装 docker 有两种选择 &#xff1a;1、docker for windows2、docker toolbox 区别&#xff1a;docker for windows-64位Windows 1…

浅谈C#在网络波动时防重复提交

前几天&#xff0c;公司数据库出现了两条相同的数据&#xff0c;而且时间相同&#xff08;毫秒也相同&#xff09;。排查原因&#xff0c;发现是网络波动造成了重复提交。由于网络波动而重复提交的例子也比较多&#xff1a;网络上&#xff0c;防重复提交的方法也很多&#xff0…

C#并行编程(4):基于任务的并行

C#中的任务Task在C#编程中&#xff0c;实现并行可以直接使用线程&#xff0c;但使用起来很繁琐&#xff1b;也可以使用线程池&#xff0c;线程池很大程度上简化了线程的使用&#xff0c;但是也有着一些局限&#xff0c;比如我们不知道作业什么时候完成&#xff0c;也取不到作业…

.net core 注入中的三种模式:Singleton、Scoped 和 Transient

从上篇内容不如题的文章《.net core 并发下的线程安全问题》扩展认识.net core注入中的三种模式&#xff1a;Singleton、Scoped 和 Transient我们都知道在 Startup 的 ConfigureServices 可以注入我们想要的服务&#xff0c;那么在注入的时候有三种模式可以选择&#xff0c;那么…

【西安活动】 | 4月20日「拥抱开源,又见.NET:云时代 • 新契机」

云计算日渐兴起&#xff0c;成为提升企业效率和生产力的最终解决方案&#xff0c;而云时代也为软件开发模式带来了翻天覆地的变化。可以说 .NET Core就是这个时代催生的产物。自2016年 .NET Core 1.0 发布以来&#xff0c;其强大的生命力让越来越多技术爱好者对她的未来满怀憧憬…