ASP.NET Core跨平台 技术内幕
ASP.NET Core设计初衷是 开源跨平台、高性能Web服务器 ,其中跨平台特性较早期ASP.NET是一个显著的飞跃,.NET现可以理直气壮与JAVA同台竞技,而ASP.NET Core的高性能特性更是成为致胜法宝。 ASP.NET Core 2.1+为IIS托管新增In-Process模型并作为默认选项( 使用IISHttpServer替代了Kestrel,dotnet程序由IIS网站进程w3wp.exe内部托管 )。 为了展示ASP.NET Core跨平台特性,本文还是重点着墨 经典的Out-Process托管模型。 宏观模型 为解耦平台差异,程序内置Http服务组件Kestrel,由平台web服务器转发请求到Kestrel。 老牌web服务器定位成 反向代理服务器 ,转发请求到ASP.Net Core程序(分别由IIS AspNetCore Module 和Nginx配置参数完成) 常规代理服务器,只用于代理内部主机对外网的连接需求,一般不支持外部对内部网络的访问请求; 当一个代理服务器能够代理外部网络的主机,访问内部网络,这种代理服务器被称为反向代理服务器 。 平台web代理服务器、ASP.NET Core程序(dotnet.exe) 均为独立进程,平台自行决定互动细节,只需确保平台web服务器与Kestrel形成Http通信。 Kestrel