【问题标题】:What does IIS do with MVC projectsIIS 对 MVC 项目有什么作用
【发布时间】:2015-06-12 19:54:23
【问题描述】:

IIS 似乎是一个应用程序,它侦听传入的连接,解析那里作为 HTTP 请求发送的数据,并根据 siteapplicationvirtual directory 将请求 url 映射到目录,然后执行一些操作基于该位置上存在(或不存在)的文件。

同时,MVC 接收一个 HTTP 请求,将其路由到一个控制器,该控制器生成一个 HTTP 响应并将其发回。

似乎 MVC 处理与 IIS 完全相同的网络堆栈部分,以网络端点为模(这是代码中相当简单的部分,艰苦的工作由 TCP 上的网络堆栈的底层操作系统部分完成级别),但 MVC 站点以某种方式托管在 IIS 中。

但是 IIS 是一个庞大的程序。它必须做一些连接管理以外的事情。它实际上做什么,以及所有这些概念(“站点”、“应用程序”、“虚拟目录”)在似乎首先取代其功能的项目上下文中意味着什么?

【问题讨论】:

  • 我已经阅读文档好几天了,但我仍然不知道 IIS 是做什么的。您对适合此问题范围的网站有什么建议吗?

标签: asp.net-mvc iis


【解决方案1】:

MVC 和 IIS 做任何端口监听或 HTTP 解析。那是 http.sys 的工作,也就是 HTTP Server API。请参阅MSDN: HTTP Server APIhow exactly does http.sys workIntroduction to IIS Architectures,尤其是HTTP Request Processing in IIS

IIS 在 http.sys 之上添加了许多功能,除了配置和管理:处理程序和模块。这些允许您运行任何类型的代码来生成或更改对 HTTP 请求的响应。

这里的重点是handlers。他们决定将调用哪个特定软件来处理请求,或者他们自己处理请求。您有静态资源处理程序来处理例如对图像、css 和 js 文件的请求。还有处理 .aspx 请求的 ASP.NET 处理程序,请参阅Introduction to HTTP Handlers

现在 MVC 与 routing handler 携手合作。 MVC 处理程序所做的只是查看 URL 和您的路由配置,然后选择调用哪个控制器方法来生成请求的响应。

【讨论】:

  • 所以如果我理解正确的话,IIS 是一个解释配置(可能包括“站点”、“应用程序”和“虚拟目录”)的程序,并基于该配置告诉 http. sys 调用哪个处理程序。处理程序是一种软件,它在给定 http 请求时创建 http 响应,并将其返回给 http.sys。 MVC 项目是处理程序的一个示例。是这样吗?
  • 不完全是:处理程序是一个 IIS 概念,而不是 http.sys 概念。此外,所有 MVC 处理程序所做的就是执行 MVC 项目中的程序集。 MVC 项目本身并不是一个处理程序。
  • 所以,回顾一下:http.sys 接收数据,并将其解析为 http 请求。它将它提供给 IIS。 IIS 被配置为通过某处的某些配置使用 MVC 处理程序处理请求。 MVC 处理程序是一个程序集,它配置在某处(其他?)以加载我的项目的程序集,并调用这些程序集以确定要调用哪个控制器,然后调用该控制器。 MVC 处理程序接收回 http 响应,将其交给 IIS,然后 IIS 将其交给 http.sys,后者将其写回网络套接字?
  • 在这种情况下,“已安装”意味着加载到 .NET 运行时并传递配置值?
猜你喜欢
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
相关资源
最近更新 更多