28
6
内容纲要
这段时间开始阅读.NET Core内部技术的书籍,发现了很多之前忽视的技术,果然还是得通过阅读,才可以加深对技术的理解。今天了解到了ASP.NET Core应用程序配合web服务器的工作原理。
Web服务器(如IIS)通过一个配置的端口与完全解耦的可执行文件通信,并将传入的请求转发给控制台应用程序。这个控制台应用程序由一个必要的HTTP模块从US进程空间生成,该HTTP模块使IIS能够支持ASP.NETCore。要将ASP.NETCore应用程序托管到其他Web服务器(如Apache或NGINX)上,必须有类似的扩展模块。
这里值得注意的是,图中给出的ASP.NETCore架构与最初的架构(即2003年将ASP.NET1.x与IIS连接起来的架构)有类似之处。当时ASP.NET有自己的工作进程,通过命名管道与IIS通信。后来,ASP.NET工作进程的任务被内置的IIS工作进程(w3wp.exe)接过,从而有了应用程序池的概念。在ASP.NETCore中,两个独立的、无关的、完全解耦的可执行文件进行通信,但是ASP.NET可执行文件并不是一个多租户工作进程,而只是托管一个基本的异步服务器来处理传入请求的应用程序的一个实例。