我已经阅读了很多关于如何在IIS下构建ASP.NET应用程序的书籍和文章,但是它们并没有解决我想知道的最明显和最基本的事情.
任何人都可以告诉我如何启动Web应用程序?传统的桌面应用程序和Web应用程序在其工作范例方面有什么区别,例如启动和终止逻辑.
非常感谢.
更新 – 1 – 23:14 2011/1/4
我目前的理解是:
当一些请求到达时,请求中包含的URL将由IIS提取.我想,IIS必须维护某种内部表,它将URL映射到磁盘上的相应物理目录.以下列URL为例:
http://myhost/webapp/page1.aspx
在上述内部表的帮助下,IIS会将page1.aspx文件放在磁盘上.然后检查该文件并找到代码隐藏代码文件.然后,将构建正确的页面类实例,并在预定义的顺序中调用在代码隐藏文件中定义的方法.一系列调用方法的输出将是发送给客户端的响应.
更新 – 2 – 23:32 2011/1/4
URL只不过是用作上述内部表的索引的标识符.使用此索引,IIS(或任何类型的Web服务器技术)可以找到资源的物理位置.然后有一些提示(如文件扩展名称* .aspx),Web服务器知道应该使用什么处理程序(如asp.net ISAPI处理程序)来处理该资源.该选择的处理程序将知道如何解析和执行资源文件.
所以这也解释了为什么Web服务器应该是可扩展的.
解决方法
还可能存在根据请求的其他条件执行的各种过滤器链和拦截器.服务器启动时,可能还会出现一些设置代码.最终,仍然有一个入口点 – 服务器的main()函数 – 但是从Web应用程序的角度来看,它是请求绑定的重要性.
针对问题编辑进行编辑
我从来没有使用IIS,但我会假设没有“查找表”,而是一些查找规则.我将通过在Apache服务器上调用.jsp页面来与您进行交谈,这应该是基本相同的过程.
> webapp被写入并放置在文件系统中 – 例如C:/ WWW / mywebapp
> Web服务器被给予一个配置规则,告诉它URL / webapp /应映射到C:/ www / mywebapp
> Web服务器也被配置为将.jsp文件识别为JSP servlet
> Web服务器接收到/webapp/page1.jsp的请求,将其分派到工作线程
> Web服务器使用其映射规则来定位C:/www/mywebapp/page1.jsp
> Web服务器使用方法serveRequest(请求,响应)将JSP文件中的代码包装在一个类中,并将其编译(如果尚未完成)
> Web服务器调用serveRequest函数,它现在是用户代码的入口点
>当用户代码完成时,Web服务器将响应发送给客户端,并且工作线程终止
这是最基本的系统 – 基于资源的servlet(即.jsp或.aspx文件).当使用像MVC框架这样的技术时,绑定规则变得复杂得多,但基本概念是相同的.