分享

Asp.Net运行原理

 昵称10504424 2013-07-03

使用图片及反编译工具阐述.NetFrameWork如何帮我们处理来自浏览器的请求

 

详述图片:

1、三个Client(浏览器)透过Internet(IIS)服务器发送请求

  1.1如果请求html静态页面或者js .css jpg等静态资源 IIS服务器直接返回对应资源信息

  1.2如果请求的是.aspx.ashx等动态页面,比如:127.0.0.1:1001/Web/Sample.ashx。 IIS无法处理.aspx.ashx这样的请求【因为IISaspx出现的要早,IIS只能处理asp动态页面请求】,便通过扩展机制将请求交给ASPNET_isapi.dll来处理,请求再被交给HttpRuntime

    1.2.1HttpRuntime会将[http请求报文]封装到HttpContext对象的HttpRequest属性中,并通过HttpApplicationFactory来创建一个【HttpApplication(为什么用工厂创建HttpApplication,图片中有解释)

      1.2.1.1HttpApplication调用处理管道(内部19个事件8个事件创建被请求的页面类对象

          在第1112事件之间调用页面类对象的PR方法(方法内部就是创建页面内容)

Sample.ashx 代码很简单 输出服务器当前时间

 

using System;

using System.Web;

 

namespace Sample{

    public class GetServerDateTime : IHttpHandler {

        public void ProcessRequest(HttpContext context) {

            context.Response.ContentType = "text/plain";
       //Response:[http响应报文]即上图HttpResponse

            //ResponseWrite方法是将内容加到响应报文体中

            context.Response.Write(DateTime.Now.ToString());//DateTime.Now.ToString()即页面内容

        }

        public bool IsReusable {

            get {

                return false;

            }

        }

    }

}

 

反编译工具查看ISAPIRuntime内部实现 加深对1.2.1步骤的理解

 

图片看不清楚的话 另存为本地看吧  画图的时候没有考虑博客页的宽度

以上便是Asp.Net内部运行的原理,只要出现"原理"二字,都会变得难懂,前提是大家要明白 浏览器与服务器 之间就是请求与响应的过程,简言之.NetFrameWork就是(小三)偶尔才会担当翻译动态页面的职责。有可能我描述的不够好,如果大家不懂,欢迎提问

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多