WF4.0实战(十八):模拟asp.net生命周期
2012-03-09 00:00
225 查看
概述:
大多数.net程序员都熟悉:浏览器向iis服务器发送一个请求,会发生一些什么事情。今天,我将使用WF+WCF模拟一下整个处理过程。当然这里只是模拟,与实际还是有差距的,如果叙述的有问题,请指出。主要是为了说明:用流程的视觉去看待asp.net请求处理过程,你会发现它其实不难。好了,还是照旧,先看效果,在说如何实现,最后总结,附代码下载。
对于一个来自客户端的请求,我将iis的处理总结为两个流程
1、创建Asp.net环境(如果是第一次请求)
2、使用MHPM处理请求(M:HttpModule、H:HttpHandler、P:Asp.net Page、M:HttpModule)
模拟的原型是:一个aspx页面上有一个button,点击这个button去请求iis服务
模拟的实际是:一个wpf窗体上有一个button,点击这个button去调用一个服务端的WCF服务,这个服务里面包含了模拟asp.net生命周期的wf流程,这个wcf服务返回MHPM处理请求的步骤。
1、在服务端创建一个文本文件,来模拟iis创建asp.net环境。
2、使用一个顺序工作流来模拟MHPM事件处理请求,并将处理步骤返回给客户端。本来想返回一段html脚本的,打算以后完善吧。
效果:
1、模拟的处理结果:在wpf页面上输出处理的步骤。
2、在服务端模拟iis创建一个asp.net宿主环境:模拟为将创建的步骤写在一个文本文件中。
实现:
这个流程处理比较大,我分几个步说明:
1、先看整个大流程,和我之前说的一样分了两个流程去处理,一个为flowchart,一个是顺序工作流,如下图:
2、看下创建Asp.net环境的flowchart,双击进去查看,如下图:
上图可以很清楚地看出来,首先检查请求页面的后缀名,根据后缀名确定处理的dll,看是否能处理这个请求,例如如果是aspx,将请求传递‘aspnet_isapi.dll’处理。接着判断是否是第一次请求,如果是第一次请求,使用ApplicationManager类创建运行站点的应用程序域。这个应用程序域用来区别同一个iis上的不同asp.net应用程序的环境。这个应用程序域会创建HttpRuntime对象等来构建宿主环境。这个宿主环境紧接着会创建‘HttpContext’ , ‘HttpRequest’ 和‘HttpResponse’等对象。如果是第一次请求还要创建一个HttpApplication,并将HttpApplication分配给‘HttpContext’ 等对象。如果不是第一次,可以从处理池中取HttpApplication。最后将这个请求交给HttpApplication处理。详见msdn。
3、使用MHPM处理请求,这个流程也很长,分四步查看,整个流程如下图,两个HttpModule、一个HttpHandler、和一个Asp.net Page:
3.1 第一个HttpModule,如下图:
3.2 HttpHandler
3.3 ASP.NET Page页面生命周期:
3.4 第二个HttpModule,如下图:
总结:
asp.net请求处理就是一个流程,故我使用了wf去模拟这个流程,我将这个流程宿主在wcf中来模拟将asp.net应用程序宿主在iis中。
这篇文章其实能说很多很多,asp.net的每个处理步骤都有很多东西,我一时很难说清楚,所以画了这么一个流程来帮助自己理解,后来就写了这篇文章,希望对您也有帮助。如果您对文章有意见和见解,请给我留言,谢谢。
代码:http://files.cnblogs.com/zhuqil/wfaspdotnetpagelifecycle.rar
原文链接:
http://www.cnblogs.com/zhuqil/archive/2010/05/25/wfaspdotnetpagelifecycle.html
大多数.net程序员都熟悉:浏览器向iis服务器发送一个请求,会发生一些什么事情。今天,我将使用WF+WCF模拟一下整个处理过程。当然这里只是模拟,与实际还是有差距的,如果叙述的有问题,请指出。主要是为了说明:用流程的视觉去看待asp.net请求处理过程,你会发现它其实不难。好了,还是照旧,先看效果,在说如何实现,最后总结,附代码下载。
对于一个来自客户端的请求,我将iis的处理总结为两个流程
1、创建Asp.net环境(如果是第一次请求)
2、使用MHPM处理请求(M:HttpModule、H:HttpHandler、P:Asp.net Page、M:HttpModule)
模拟的原型是:一个aspx页面上有一个button,点击这个button去请求iis服务
模拟的实际是:一个wpf窗体上有一个button,点击这个button去调用一个服务端的WCF服务,这个服务里面包含了模拟asp.net生命周期的wf流程,这个wcf服务返回MHPM处理请求的步骤。
1、在服务端创建一个文本文件,来模拟iis创建asp.net环境。
2、使用一个顺序工作流来模拟MHPM事件处理请求,并将处理步骤返回给客户端。本来想返回一段html脚本的,打算以后完善吧。
效果:
1、模拟的处理结果:在wpf页面上输出处理的步骤。
2、在服务端模拟iis创建一个asp.net宿主环境:模拟为将创建的步骤写在一个文本文件中。
实现:
这个流程处理比较大,我分几个步说明:
1、先看整个大流程,和我之前说的一样分了两个流程去处理,一个为flowchart,一个是顺序工作流,如下图:
2、看下创建Asp.net环境的flowchart,双击进去查看,如下图:
上图可以很清楚地看出来,首先检查请求页面的后缀名,根据后缀名确定处理的dll,看是否能处理这个请求,例如如果是aspx,将请求传递‘aspnet_isapi.dll’处理。接着判断是否是第一次请求,如果是第一次请求,使用ApplicationManager类创建运行站点的应用程序域。这个应用程序域用来区别同一个iis上的不同asp.net应用程序的环境。这个应用程序域会创建HttpRuntime对象等来构建宿主环境。这个宿主环境紧接着会创建‘HttpContext’ , ‘HttpRequest’ 和‘HttpResponse’等对象。如果是第一次请求还要创建一个HttpApplication,并将HttpApplication分配给‘HttpContext’ 等对象。如果不是第一次,可以从处理池中取HttpApplication。最后将这个请求交给HttpApplication处理。详见msdn。
3、使用MHPM处理请求,这个流程也很长,分四步查看,整个流程如下图,两个HttpModule、一个HttpHandler、和一个Asp.net Page:
3.1 第一个HttpModule,如下图:
3.2 HttpHandler
3.3 ASP.NET Page页面生命周期:
3.4 第二个HttpModule,如下图:
总结:
asp.net请求处理就是一个流程,故我使用了wf去模拟这个流程,我将这个流程宿主在wcf中来模拟将asp.net应用程序宿主在iis中。
这篇文章其实能说很多很多,asp.net的每个处理步骤都有很多东西,我一时很难说清楚,所以画了这么一个流程来帮助自己理解,后来就写了这篇文章,希望对您也有帮助。如果您对文章有意见和见解,请给我留言,谢谢。
代码:http://files.cnblogs.com/zhuqil/wfaspdotnetpagelifecycle.rar
原文链接:
http://www.cnblogs.com/zhuqil/archive/2010/05/25/wfaspdotnetpagelifecycle.html
相关文章推荐
- WF4.0实战(十八):模拟asp.net生命周期
- WF4.0实战(十四):ASP.NET结合WF4.0完整示例
- WF4.0实战(十四):ASP.NET结合WF4.0完整示例
- WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程
- WF4.0实战(十四):ASP.NET结合WF4.0完整示例
- ASP.NET 4.0 专题实务(I) – 入门实战篇(VB)的「勘误表」
- ASP.NET 2.0 页(Page)生命周期概述
- 详解ASP.NET页面生命周期
- ASP.NET 4.0 Session过期 一个奇怪的问题
- 模拟ASP.NET的Windows集成验证用户标识
- IIS 7.0 的 ASP.NET 应用程序生命周期
- ASP.NET生命周期
- ASP.NET页面生命周期与应用程序生命周期
- 在ASP.NET应用程序中使用身份模拟(Impersonation)
- 注册asp.net 4.0 到iis
- ASP.NET 4.0中使用FreeTextBox和FCKeditor遇到安全问题警告的解决办法
- MongoDB实战开发 【零基础学习,附完整Asp.net示例】(转)
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- ASP.NET 页生命周期概述
- 第五十讲 ASP.NET实战编程(三)