关于ASP.NET运行机制原理。。。个人总结_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 关于ASP.NET运行机制原理。。。个人总结

关于ASP.NET运行机制原理。。。个人总结

 2013/8/1 16:13:17  一枚小菜鸟  博客园  我要评论(0)
  • 摘要:1.浏览器封装一个HTTP协议报文发送到服务器2.服务器拿到请求后进行解析,若为HTML,CSS,JS等此类静态文件,则IIS直接进行查询,把文件封装后返回给客户端3.①若请求为aspx,ashx等此类动态网页程序,IIS是处理不了的,IIS会交给自己的扩展AspNet_Isapi.dll,(其中I和S分别的代表intert,serives),②扩展把请求交给ISAPRuntime,此类的PR方法通过扩展程序的ECB句柄拿到请求的信息,再把请求封装成HttpWorkRequest对象
  • 标签:总结 .net ASP.NET net 运行 个人

1.浏览器封装一个HTTP协议报文发送到服务器

2.服务器拿到请求后进行解析,若为HTML,CSS,JS等此类静态文件,则IIS直接进行查询,把文件封装后返回给客户端

3.①若请求为aspx,ashx等此类动态网页程序,IIS是处理不了的,IIS会交给自己的扩展AspNet_Isapi.dll,(其中I和S分别的代表intert ,serives),

   ②扩展把请求交给ISAPRuntime,此类的PR方法通过扩展程序的ECB句柄拿到请求的信息,再把请求封装成HttpWorkRequest对象,然后交给HttpRunTime的PR方法。

 ③HttpRuntime的PR方法内部通过HttpWorkRequest对象封装了HttpContext上下文对象(HttpContext包含了HttpRequest请求对象及HttpResponse响应信息,并且

      HttpContext对象在每次的请求中都是独立的。非共享的)

   ④此时的HttpRuntime会通过HttpApplication的Factor创建HttpApplication实例,并将HttpContext传递到HttpApplication实例的管道内部,在整个管道内部           HttpContext会 一直流动(默认23个事件,有19个事件供开发人员进行注册)(通过HttpApplication池的技术提过HttpApplication创建的性能),如果应用程序        Global.asax文件,则ASP.NET自动创建Global.asax类(继承自HttpApplication)的一个实力,并使用该派生类表示应用程序,

    管道内部的几个主要事件:

        Ⅰ 第七个事件获取缓冲

        Ⅱ 第八个事件穿件页面类对象,(最终就是创建IhttpHandler实例)

        Ⅲ 第九个事件为页面加载Session

        Ⅳ 9-10看URL或Cookie有没有SessionId,如果仅用Cookie后台发送302跳转下,在URL理村SessionId

        Ⅴ 第11-12事件执行第八个时间创建对象的PR方法,若创建的是页面对象,则执行页面生命周期,若是一般处理程序,则不执行页面生命周期

           页面生命周期:

          ㈠ 简版

            页面初始化          Page_Init  
             加载View State    LoadViewState   
            回发数据处理       LoadPostData   
            页面加载             Page_Load   
            回发通知             RaisePostDataChangedEvent  
            回发事件处理       RaisePostBackEvent  
            页面预渲染          Page_PreRender   
            保存                   viewstate SaveViewState   
            Page渲染            Page_Render   
            Page 卸载           Page_UnLoad  

          ㈡详细版

            初始化包括三个阶段:

            1)PreInint()预初始化

               A.调用OnPreinit方法引发PreInit事件

               B.利用App_Themes目录中的内容进行初始化主题。以动态实现一个PageThem属性值,并创建一个编译类的实例。

               C.应用模板页

            2)开始初始化,将所创建的控件树上的控件都new一个实例并赋默认值。

               A.递归初始化Controls集合中的控件,初始化包括设置这些控件的属性。

               B.递归应用控件皮肤。

               C.调用OnInit方法以引发自身的Init事件,接着递归调用子控件的OnInit方法来引发他们的Init事件。

               D.调用自身的TrackViewState方法重启自身的视图状态跟踪,接着递归调用子控件的TrackViewState方法重启自身的视图状态跟踪。

            3)InitComplete()初始化完成

            4.加载ViewState处理回发数据:

               加载页面状态,解析隐藏域中的ViewState,ViewState保持的值赋值到对应的控件中。把需要触发事件的控件放到一个集合当中去。 

            5.预加载(PreLoad)

             页面调用OnPreLoad方法以引发PreLoad事件,该事件表示页面生命周期进 入加载阶段。对应sapx.cs中的Page_Load事件。

            6.加载(Load)

               页面首先调用自身的OnLoad方法以引发自身的Load事件,接着递归调用 Contorls集合中控件的OnLoad方法以引发它们的Load事件。

            7.ProcessPostData第二次处理回发数据

            8.触发改变的事件和点击事件。

            9.页面加载完成

            10.预渲染,对空间树进行最后一次处理

            11.保存当前页面的状态。

            12.页面渲染

   ⑤管道执行完毕后,按原路讲重新组合好的HTML返还给客户端

                                                    以上是本人从这些天的学习中作出的总结,若有错误欢迎指正

                                                                一枚小菜鸟奉上..求关注..求粉

 

上一篇: asp.net 大数据导出execl实现分开压缩并下载 下一篇: 没有下一篇了!
发表评论
用户名: 匿名