• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
wenyue
博客园    首页    新随笔    联系   管理    订阅  订阅

Asp.net运行原理?

1.浏览器发送请求到服务器
2.(IIS)服务器软件接收到请求
3.请求被通过拓展程序(ISAPI)给ForamWork(简写FW)

4.FW调用ISAPIRuntime里的ProcessRequest方法处理请求,在此PR中
又调用了isapiRequest的CreateWorkerRequest方法,来分析
请求报文,并将请求报文封装到一个WorkRquest对象中,
然后调用HttpRunTime的方法,ProcessRequsetNo……方法在其中,

4.1创建HttpContext对象-将根据wr对象里的请求报文数据,
将请求报文封装到HttpContext对象里的一个叫做HttpRequest对象中,然后
再为HttpContext对象里的HttpResopnse((每次输出都放到一个缓冲中)内部实现:向浏览器输出响应报文,调用它的write方法它并没用立刻输出去,而是,里面有一个HtmlWriter在HtmlWriter有一个buff[]缓冲区)
初始化(主要是HtmlWriter)

4.2要创建HttpApplication对象(因为真正创建被请求的一面类对象和执行页面对象的
PR方法都是在这个对象的方法中完成)通过工厂创建:HttpApplicationFactory.GetApplication(context);


5.当HttpApplication对象后,调用它的BeginPR方法,开始处理请求页面,这个PR方法会先后调用19个标准的处理事件(19个事件并不全部执行,以为有些事件用户没有应用)
第一个是BeginRequest(在这里也可以实现mvc)最后一个是EndRequest 在第八个事件时创建被请求的页面类对象,并装化成IHttpHander接口对象
在第11和第12事件(其实是12和13事件 单前面有一个事件可以不管它)执行的中间,调用页面对象的PR方法,执行代码.
(Http请求管道:包含19个事件方法也叫过滤器)
其中事件就是委托

6.在调用FinishRuntime方法在产生响应报文头和响应报文体(在第11和第12事件中获取)
发送会浏览器

posted @ 2011-09-02 01:21  wenyue  阅读(202)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3