新闻资讯
在.net core中web服务器实现与使用
发布时间:2023-02-06 00:15
  |  
阅读量:
字号:
A+ A- A
本文摘要:一. ASP.NET Core Module 在先容ASP.NET Core Web实现之前,先来相识下ASP.NET Core Module。该模块是插入 IIS 管道的本机 IIS 模块(本机是指法式所部署的服务器)。是基于windows平台处置惩罚 IIS和历程内IISHttpServer或Kestrel。 用于: (1) 在 IIS 事情历程 (w3wp.exe) 内托管 ASP.NET Core 应用,称为历程内托管模型。

环球体育app登录网站

一. ASP.NET Core Module  在先容ASP.NET Core Web实现之前,先来相识下ASP.NET Core Module。该模块是插入 IIS 管道的本机 IIS 模块(本机是指法式所部署的服务器)。是基于windows平台处置惩罚 IIS和历程内IISHttpServer或Kestrel。

用于:  (1) 在 IIS 事情历程 (w3wp.exe) 内托管 ASP.NET Core 应用,称为历程内托管模型。  (2) 将 Web 请求转发到运行 Kestrel 服务器的后端 ASP.NET Core 应用,称为历程外托管模型。

  在历程内托管时,该模块会使用 IIS 历程内服务器实现,即IISHttpServer。在历程外托管时,该模块仅适用于 Kestrel。该模块与 HTTP.sys 不兼容。关于IIS 在 Windows 上托管 ASP.NET Core。

安装ASP.NET Core Model,在 "asp.net core 系列 9 情况" 中有先容。    --公布到iis上的设置节点     <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> 二. windows平台web服务器先容  在windows平台下,asp.net core有以下几种HTTP 服务器组件:    (1) Kestrel服务器是默认跨平台 HTTP 服务器实现。    (2) IISHttpServer 是IIS 的历程内服务器。    (3) HTTP.sys 服务器是仅用于 Windows 的 HTTP 服务器,它基于 HTTP.sys 焦点驱动法式和 HTTP 服务器 API。

  当使用 IIS 或 IIS Express 时,应用法式会在以下其中一个历程中运行:    (1) 在IIS事情历程(历程内宿主模型)与IIS HTTP服务器的相同历程中。推荐设置为In-process(用于windows上历程内托管)。    (2) 独立于IIS事情历程(历程外宿主模型)的历程中使用Kestrel服务器。

设置为OutOfProcess   1.1 历程内托管模型 In-process hosting model    使用历程内宿主,ASP.NET Core应用法式运行在与其IIS worker历程相同的历程中。历程内托管比历程外托管提供了更好的性能,因为请求不会通过环回适配器举行署理,环回适配器是一个网络接口,将传出的网络流量返回到同一台机械。

    由 ASP.NET Core Module执行应用初始化:(1)加载CoreCLR、(2)挪用 Program.Main。以及处置惩罚 IIS 本机请求的生存期。

    下图说明晰 IIS、ASP.NET Core Module和历程内托管的应用之间的关系:     ASP.NET Core Module吸收本机请求,并将它通报给 IISHttpServer。IISHttpServer 将请求从本机转换为托管的 IIS 历程内服务器实现。    IISHttpServer 处置惩罚请求之后,请求会被推送到 ASP.NET Core 中间件管道中。中间件管道处置惩罚该请求并将其作为 HttpContext 实例通报给应用的逻辑(Application code)。

应用的响应通报回 IIS,IIS 将响应推送回提倡请求的客户端。  1.2 历程外托管模型 Out-of-process hosting model    因为ASP.NET Core运行在独立于IIS事情历程的历程中, 因此该模块卖力历程治理。该模块在第一个请求到达时启动 ASP.NET Core 应用的历程,并在应用关闭或瓦解时重新启动该应用。

    下图说明晰 IIS、ASP.NET Core Module和历程外托管的应用之间的关系:    ASP.NET Core Module在启动时通过情况变量指定端口,IIS 集成中间件将服务器设置为侦听 http://localhost:{PORT}。执行其他检查,拒绝不是来自该ASP.NET Core Module的请求。    Kestrel 从ASP.NET Core Module获取请求后,请求会被推送到 ASP.NET Core 中间件管道中。

中间件管道处置惩罚该请求并将其作为 HttpContext 实例通报给应用的逻辑(Application code)。IIS 集成添加的中间件会将方案、远程 IP 和 pathbase 更新到帐户以将请求转发到 Kestrel。应用的响应通报回 IIS,IIS 将响应推送回提倡请求的 HTTP 客户端。       最后对于非windows平台, asp.net core使用Kestrel Web服务器。

这是默认跨平台 HTTP 服务器实现。二. Kestrel 服务器  Kestrel 是 ASP.NET Core 项目模板中包罗的默认 Web 服务器。默认情况下,ASP.NET Core 项目模板使用 Kestrel。

在 Program.cs 中,模板代码挪用 CreateDefaultBuilder,后者在后台挪用 UseKestrel。Kestrel 的使用方式如下:    (1) 它自己就是一个边缘服务器,直接处置惩罚来自网络(包罗Internet)的请求。        (2) 与反向署理服务器(如 Internet Information Services (IIS)、Nginx 或 Apache)联合使用。

反向署理服务器吸收来自 Internet 的 HTTP 请求,并将这些请求转发到 Kestrel。三. IISHTTPServer 服务器   IISHTTPServer是 IIS 的历程内服务器且为历程内部署所必须。ASP.NET Core Module 用于处置惩罚 IIS 和 IISHTTPServer之间的本机 IIS 请求。

  若要设置用于历程内托管的应用,请将 <AspNetCoreHostingModel> 属性添加到值为 InProcess(历程外托管使用 OutOfProcess 举行设置)的应用项目文件。如果文件中不存在 <AspNetCoreHostingModel> 属性,则默认值为 OutOfProcess    <PropertyGroup>     <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>    </PropertyGroup>    InProcess时使用 IIS HTTP 服务器 (IISHttpServer) 而不是 Kestrel 服务器。OutOfProcess时使用 Kestrel 服务器,而不是 IIS HTTP 服务器 (IISHttpServer) 四. HTTP.sys服务器 如果 ASP.NET Core 应用在 Windows 上运行,则 HTTP.sys 是 Kestrel 的替代选项。

为了获得最佳性能,通常建议使用 Kestrel。在应用向 Internet 公然且所需功效受 HTTP.sys(而不是 Kestrel)支持的方案中,可以使用 HTTP.sys。

  设置 ASP.NET Core 应用以使用 HTTP.sys。构建 Web 主机时挪用 UseHttpSys 扩展方法,同时指定所需的 HTTP.sys 选项。

在 Visual Studio 中,默认启动设置文件是针对 IIS Express 的。若要作为控制台应用运行该项目,请手动更改所选设置文件。public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseHttpSys(options => { // The following options are set to default values. options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonymous = true; options.MaxConnections = null; options.MaxRequestBodySize = 30000000; options.UrlPrefixes.Add("http://localhost:5000"); });  五. http/2.0支持  以下部署方案中的 ASP.NET Core 支持 HTTP/2    Kestrel操作系统:Windows Server 2016/Windows 10 或更高版本具有 OpenSSL 1.0.2 或更高版本的 LinuxmacOS 的未来版本将支持 HTTP/2目的框架:.NET Core 2.2 或更高版本HTTP.sys操作系统:Windows Server 2016/Windows 10 或更高版本目的框架:不适用于 HTTP.sys部署。

IIS(历程内)操作系统:Windows Serve IIS 10 或更高版本IIS 10 或更高版本目的框架:.NET Core 2.2 或更高版本IIS(历程外)操作系统:Windows Serve IIS 10 或更高版本IIS 10 或更高版本面向民众的边缘服务器毗连使用 HTTP/2,但与 Kestrel 的反向署理毗连使用 HTTP/1.1。目的框架:不适用于 IIS 历程外部署。

  总结:     (1) ASP.NET Core Module模块是适应于windows平台上的iis。    (2) 历程内托管模型是使用 IISHttpServer是适应于windows平台上 IIS 的历程内服务器,。

将ASP.NET Core Module吸收的请求转换为托管的 IIS 历程内服务器实现。用IISHttpServer服务器。    (3) 历程外托管模型是独立于iis, 可以做反向署理, 用Kestrel 服务器,可以应用在windows或linux平台上。

    (4) 如果 ASP.NET Core 应用在 Windows 上运行,则 HTTP.sys 是 Kestrel 的替代选项。为了获得最佳性能,通常建议使用 Kestrel。    (5) Kestrel 是 ASP.NET Core 项目模板中默认 Web 服务器.可以联合反向署理服务器一起使用(如 Internet Information Services (IIS)、Nginx 或 Apache)。


本文关键词:在,.net,core,中,web,服务器,实现,与,使用,一,环球体育app登录网站

本文来源:环球体育app登录网站-www.bjshbsh.com