IIS似乎是一个侦听传入连接的应用程序,将那里发送的数据解析为HTTP请求,并根据site
application
和{{1}将请求网址映射到目录然后根据该位置上存在(或不存在)的文件执行某些操作。
MVC同时接受HTTP请求,将其路由到控制器,控制器生成HTTP响应并将其发回。
似乎MVC处理与IIS一样的网络堆栈的相同部分,模块化网络端点(这是代码的一个相当简单的部分,艰苦的工作是由TCP上的网络堆栈的底层OS部分完成的等级),但MVC网站以“某种方式”在“IIS”中托管。
但IIS是一个庞大的计划。它必须做除连接管理之外的其他事情。它实际上是什么做什么,所有这些概念(“网站”,“应用程序”,“虚拟目录”)在项目的上下文中意味着什么,它们似乎首先取代了它们的功能?
答案 0 :(得分:0)
MVC或IIS执行任何端口侦听或HTTP解析。这是http.sys的工作,即HTTP Server API。请参阅MSDN: HTTP Server API,how exactly does http.sys work,Introduction to IIS Architectures,尤其是HTTP Request Processing in IIS。
除了配置和管理之外,IIS还在http.sys之上添加了许多功能:处理程序和模块。这些允许您运行任何类型的代码来生成或更改HTTP请求的响应。
此处的关键点是handlers。他们决定调用哪个特定软件来处理请求,或者他们自己处理请求。您有静态资源处理程序来处理例如对image,css和js文件的请求。还有处理.aspx请求的ASP.NET处理程序,请参阅Introduction to HTTP Handlers。
现在MVC与routing handler携手合作。 MVC处理程序所做的就是查看URL和路由配置,然后选择要调用哪个控制器方法来生成请求的响应。