文档章节

WF4.0实战(十八):模拟asp.net生命周期

晨曦之光
 晨曦之光
发布于 2012/03/09 12:46
字数 945
阅读 89
收藏 0

概述:  

    大多数.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页面上输出处理的步骤。

aspx

    2、在服务端模拟iis创建一个asp.net宿主环境:模拟为将创建的步骤写在一个文本文件中。

aspx2

 

实现:

这个流程处理比较大,我分几个步说明:

    1、先看整个大流程,和我之前说的一样分了两个流程去处理,一个为flowchart,一个是顺序工作流,如下图:

aspx3

    2、看下创建Asp.net环境的flowchart,双击进去查看,如下图:

aspx4

    上图可以很清楚地看出来,首先检查请求页面的后缀名,根据后缀名确定处理的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:

aspx5

    3.1     第一个HttpModule,如下图:

aspx6 

    3.2     HttpHandler

aspx7

    3.3     ASP.NET Page页面生命周期:

aspx8

    3.4     第二个HttpModule,如下图:

aspx9 

 

总结:

         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

本文转载自:http://www.cnblogs.com/zhuqil/archive/2010/05/25/wfaspdotnetpagelifecycle.html

共有 人打赏支持
晨曦之光
粉丝 390
博文 4426
码字总数 2559
作品 0
深圳
程序员
私信 提问
【转】WF4.0实战系列索引

WF4.0实战系列索引 从WF4.0 betal1出来的时候就开始使用WF4.0,由于资料不多,学习过程也非常艰苦。今年四月份的时候打算写WF4.0实战系列,由于今年是本命年故坚持写了24篇文章。这个系列的文...

夏春涛
2013/08/18
0
0
WF4.0实战(十):分布式酒店订房系统

这篇文章主要是实现一个分布式的酒店订房功能。主要阐述如何通过WCF加WF实现一个分布式系统模型。 这个Demo的场景说明: 一家酒店将房间信息存储在SQL Server数据库中,酒店的工作人员根据客...

王二狗子11
2018/01/01
0
0
WF4.0实战(二十一):Windows Server AppFabric中宿主WF4.0应用程序

在之前的一篇博文Windows Server AppFabric介绍上,简单的介绍了一下Windows Server AppFabric。这篇文章中,我将介绍一下,如何在将WF4.0应用程序宿主到Windows Server AppFabric中,以及如...

王二狗子11
2018/01/01
0
0
《Artech的WCF技术剖析系列》系列技术文章整理收藏

《Artech的WCF技术剖析系列》系列技术文章整理收藏 WCF技术剖析系列来自博客园的Artech,Artech在这个系列中帮助大家对WCF有更全面的认识。收藏在这里供大家学习参考 1WCF技术剖析之一:通过...

开元中国2015
2015/06/22
24
0
《Pro ASP.NET MVC 3 Framework》学习笔记目录

《Pro ASP.NET MVC 3 Framework》简介: 作者: Adam Freeman 和 Steven Sanderson 出版社: Apress; New 平装: 820页 语种: 英语 ISBN: 1430234040 声明:笔记里面按我自己的理解翻译了大部分...

mszhangxuefei
2012/02/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
8
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部