Web应用程序中如何使用Asp.Net核心托管模型?



Asp.net核心对托管模型进行了重大改进。期望在早期版本中通过代理Web服务器(例如Windows上的IIS,Apache或NGINX)托管Asp.net Core Web应用程序。但是,新的Asp.net core 2.2允许直接在IIS中的Windows中托管Asp.net应用程序,而无需外部服务器。因此,使用简单的进程内托管机制可以提高吞吐量。

ASP.NET Core中的托管模型

ASP.NET是Microsoft的一项技术,可让您在Web服务器端创建动态页面。

托管ASP.NET与基于Windows的软件以及操作系统本身完全集成。该技术被认为是非常安全可靠的,并且易于使用。它主要用于开发应用内产品。

ASP.NET Core中的托管模型有两种类型,即进程内托管和进程外托管。在ASP.Net Core 2.2之前,只有一种托管模型,即进程外托管,但由于性能原因,引入了Asp.net core 2.2版本的进程内托管模型。

Asp.net Core中进程内托管模型的介绍

以前的ASP.NET Core版本需要使用通过IIS代理的进程外托管模型在IIS中托管应用程序。命中IIS或IIS Express的请求将转发到Kestrel Web Server中运行的ASP.NET Core Web应用程序。但是,在新的进程内托管中,仅一台服务器用于托管,如IIS,Nginx或Linux。这意味着,不是将请求转发到Kestrel,而是直接在IIS应用程序池内部托管了一个新的Web服务器实现(IISHttpServer),它将为请求提供服务。在ASP.NET Core 3.1中,每当您使用现有模板开发新应用程序时,进程内托管模型都将用作默认模型。

显然,与“进程外”托管模型相比,此托管模型具有更高的吞吐量和性能增强。

进程外托管模型

在进程外托管模型中,您可以将Kestrel服务器直接用作面向用户请求的服务器,也可以将应用程序部署到IIS中,IIS将充当代理服务器并将请求发送到内部Kestrel服务器。在这种托管模型中,您有两个托管选项,即使用Kestrel和Proxy Server:

1.使用红est

在这种情况下,Kestrel本身就充当边缘服务器,它直接服务器用户请求,这意味着只能将Kestrel服务器用于该应用程序。

2.使用代理服务器

由于Kestrel服务器的限制,因此不能在所有应用程序中使用它。在这种情况下,必须使用功能强大的服务器,例如IIS,Apache或NGINX。因此,在这种情况下,该服务器充当备用代理服务器,它将把每个请求重定向到运行应用程序的内部Kestrel服务器。在这里,两个服务器(例如IIS和Kestrel)正在运行。

对于在.NET Core 2.2早期版本中实现的所有应用程序,此托管模型是默认模型。使用这种类型的局限性之一,例如性能下降。

最后的想法:

根据事实,大多数ASP.Net Web开发公司当然都希望使用In-Process托管模型。由于它消耗较少的资源并提供良好的性能。由于不需要为Kestrel进行额外的处理,并且还避免了IIS与Kestrel之间的额外通信。但是,在某些情况下,您可能希望选择进程外托管,例如在Windows和Linux中托管相同的Web应用程序。在谈论在其他平台上托管应用程序时,Kestrel是用于处理所有平台上的HTTP请求的主要机制。

但是,除非对Kestrel有非常特定的要求,否则在IIS上运行In-Process是最佳方法。

主要图片来源:Farzad Nazifi在Unsplash上​​拍摄的照片




评论 (0)

发表评论