Asp.Net内部编译原理

来源:互联网 发布:基调网络监测联盟 编辑:程序博客网 时间:2024/05/05 21:14
        当我们请求WEB站点的页面时,服务器端实际的执行顺序是:
        第一  IIS捕获请求并检查分析
        第二 当IIS捕获请求信息之后,在不同的进程模型下进入CLR内部进行处理
        一 IIS捕获请求并检查分析
         很显然,当我们请求某个WEB站点时,服务器上的IIS会通过我们请求的URL来获取与之相关的信息。
         IIS捕获请求并经过检查分析,之后映射到外部模块进行真正的处理。这个外部模块就是aspnet_isapi,他是一个动态连接库文件,是IIS Internet服务器应用程序编程接口,他实现了特殊的协议,可与IIS进行文件通信。
       而aspnet_isapi负责的任务和随后的处理方式与所用的进程模型密切相关,所谓进程模型是对请求进行处理和为浏览器生成响应的一系列步骤。
       我们现在使用的进程模型大致上分为IIS5.x和IIS6.0,具体分析如下:
       1。 IIS5.x
        这里主要涉及到aspnet_isapi扩展和工作进程aspnet_wp.exe
        aspnet_isapi扩展充当一个调度程序,他将请求信息通过管道发送给工作进程,而所有活动的WEB应用程序共享相同的工作进程副本。
        该模型默认在aspnet帐户下运行,安装.net framework是自动生成该帐户。
        2。IIS6.0
        他主要涉及到http.sys和w3wp.exe
        http.sys他是一个监听程序,收集请求信息,并将其发送给该请求对应的WEB应用程序所属的应用程序池的队列中,之后工作进程从队列中取得要处理的请求进行处理。
        IIS6.0是以应用程序池这个概念为中心的,应用程序池是一组共享相同工作进程副本的WEB应用程序。
         该模型默认在network service帐户下运行,安装.net framework是自动生成该帐户。
       二 在工作进程内对请求进行处理
       虽然每个进程模型捕获请求的方式不同,但到了工作进程以后其处理几乎一致。
       请求(页面)-->工作进程(某个应用程序对应的)-->httpruntime(初始化asp.net缓寸和http环境)-->应用程序工厂(根据请求的url选择或创建响应的应用程序对象)
-->应用程序对象(根据请求的对象选择处理程序工厂)-->处理程序工厂(选择或创建处理该请求所需要的类)-->处理该请求所需要的类(该类实现了ihttphandler接口)-->
调用该类实例的processrequest方法来做真正的处理。
    
写这篇文章的目的是让大家能从通俗的角度去认识Asp.Net内部编译原理~
原创粉丝点击