Web应用程序是如何启动的?入口点在哪里(如果有的话)?

smw*_*dia 13 iis

我正在使用IIS开发一些Web应用程序.我曾经相信每个应用程序都应该有一个入口点.但似乎Web应用程序没有.

我已经阅读了许多关于如何在IIS下构建ASP.NET应用程序的书籍和文章,但它们并没有解决我想知道的最明显和最基本的问题.

那么有谁能告诉我如何启动Web应用程序?传统桌面应用程序和Web应用程序在工作范例方面的区别是什么,例如启动和终止逻辑.

非常感谢.

更新 - 2011年1月23日14:14

我目前的理解是:

当某个请求到达时,IIS将提取请求中包含的URL.我想IIS必须保留某种内部表,将URL映射到磁盘上相应的物理目录.我们以下面的URL为例:

http://myhost/webapp/page1.aspx
Run Code Online (Sandbox Code Playgroud)

在上述内部表的帮助下,IIS将在磁盘上找到page1.aspx文件.然后检查此文件并找到代码隐藏代码文件.然后将构造适当的页面类实例,并且将以预定义的顺序调用其在代码隐藏文件中定义的方法.调用方法系列的输出将是发送给客户端的响应.

更新 - 2011年1月2日23:32

URL只是一个标识符,用作上述内部表的索引.使用此索引,IIS(或任何类型的Web服务器技术)可以找到资源的物理位置.然后使用一些提示(例如文件扩展名如*.aspx),Web服务器知道应该使用什么处理程序(例如asp.net ISAPI处理程序)来处理该资源.选择的处理程序将知道如何解析和执行资源文件.

所以这也解释了为什么Web服务器应该是可扩展的.

Sto*_*ica 4

这取决于您使用的语言和框架,但总的来说,有许多入口点将绑定到 HTTP 请求(例如通过 URL)。当服务器收到与这些绑定之一匹配的请求时,就会执行绑定的代码。

还可能存在基于请求的其他条件执行的各种过滤器链和拦截器。服务器启动时可能还会执行一些设置代码。最终,仍然有一个入口点 - 服务器的 main() 函数 - 但从 Web 应用程序的角度来看,重要的是请求绑定。

编辑以回应问题编辑

我从未使用过 IIS,但我假设没有“查找表”,而是一些查找规则。我将向您介绍在 Apache 服务器上调用 .jsp 页面的过程,这应该是基本相同的过程。

  1. webapp 被写入并放置在文件系统中 - 例如 C:/www/mywebapp
  2. Web 服务器被赋予一个配置规则,告诉它 URL 路径 /webapp/ 应映射到 C:/www/mywebapp
  3. Web 服务器还配置为将 .jsp 文件识别为 JSP servlet
  4. Web 服务器收到对 /webapp/page1.jsp 的请求,该请求被分派到工作线程
  5. Web服务器使用其映射规则来定位C:/www/mywebapp/page1.jsp
  6. Web 服务器将 JSP 文件中的代码包装在一个带有方法的类中serveRequest(request, response)并对其进行编译(如果尚未这样做)
  7. Web服务器调用该serveRequest函数,该函数现在是用户代码的入口点
  8. 当用户代码完成时,Web服务器将响应发送给客户端,并且工作线程终止

这是最基本的系统——基于资源的servlet(即.jsp 或.aspx 文件)。当使用 MVC 框架等技术时,绑定规则变得更加复杂,但基本概念是相同的。