asp.net 管道处理模型源码

常说管道处理模型的20多个事件,顺序执行。这写顺序执行的事件,控制了asp.net的流程

这20几个事件在httpApplication 中。在这个类中,确实可以看到很多事件,他们是怎么串起来的呢?

里面有个ApplicationStepManager类,可以看到这个流程如下。代码还有其他看法。

其实下面的代码是经典模式的,在调用处,容易找出集成模式的代码。

internal class ApplicationStepManager : StepManager
	{
		private IExecutionStep[] _execSteps;

		private WaitCallback _resumeStepsWaitCallback;

		private int _currentStepIndex;

		private int _numStepCalls;

		private int _numSyncStepCalls;

		private int _endRequestStepIndex;

		internal ApplicationStepManager(HttpApplication app)
			: base(app)
		{
		}

		internal override void BuildSteps(WaitCallback stepCallback)
		{
			ArrayList arrayList = new ArrayList();
			HttpApplication application = base._application;
			bool flag = false;
			UrlMappingsSection urlMappings = RuntimeConfig.GetConfig().UrlMappings;
			flag = (urlMappings.IsEnabled && urlMappings.UrlMappings.Count > 0);
			arrayList.Add(new ValidateRequestExecutionStep(application));
			arrayList.Add(new ValidatePathExecutionStep(application));
			if (flag)
			{
				arrayList.Add(new UrlMappingsExecutionStep(application));
			}
			application.CreateEventExecutionSteps(HttpApplication.EventBeginRequest, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventAuthenticateRequest, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventDefaultAuthentication, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventPostAuthenticateRequest, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventAuthorizeRequest, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventPostAuthorizeRequest, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventResolveRequestCache, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventPostResolveRequestCache, arrayList);
			arrayList.Add(new MapHandlerExecutionStep(application));
			application.CreateEventExecutionSteps(HttpApplication.EventPostMapRequestHandler, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventAcquireRequestState, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventPostAcquireRequestState, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventPreRequestHandlerExecute, arrayList);
			arrayList.Add(application.CreateImplicitAsyncPreloadExecutionStep());
			arrayList.Add(new CallHandlerExecutionStep(application));
			application.CreateEventExecutionSteps(HttpApplication.EventPostRequestHandlerExecute, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventReleaseRequestState, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventPostReleaseRequestState, arrayList);
			arrayList.Add(new CallFilterExecutionStep(application));
			application.CreateEventExecutionSteps(HttpApplication.EventUpdateRequestCache, arrayList);
			application.CreateEventExecutionSteps(HttpApplication.EventPostUpdateRequestCache, arrayList);
			this._endRequestStepIndex = arrayList.Count;
			application.CreateEventExecutionSteps(HttpApplication.EventEndRequest, arrayList);
			arrayList.Add(new NoopExecutionStep());
			this._execSteps = new IExecutionStep[arrayList.Count];
			arrayList.CopyTo(this._execSteps);
			this._resumeStepsWaitCallback = stepCallback;
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ASP.NET Web手机框架是一个开的框架,旨在提供为移动设备优化的网页应用程序开发环境。该框架基于ASP.NET平台,能够使用C#或VB.NET等编程语言进行开发。其设计目标是使开发者能够轻松地为不同类型的移动设备创建响应式网页应用程序。 ASP.NET Web手机框架码是指该框架的全部或部分代码,可以用于学习框架的工作原理,定制化开发或调试问题。通过查看代码,开发者可以深入了解框架内部的实现细节,并根据自身需求进行调整和扩展。 ASP.NET Web手机框架码通常包括以下主要部分: 1. 控件库码:包含用于开发手机网页应用程序的各种控件,如按钮、列表、表单等。这些控件经过优化,可在不同尺寸和分辨率的移动设备上提供更好的用户体验。 2. 页面模板码:包含用于创建网页应用程序的基本模板,开发者可以根据需要进行修改。这些模板通常包含了主题样式和布局结构,有助于提高开发效率。 3. 逻辑代码码:包含用于处理业务逻辑的代码,如数据访问、验证、事件处理等。开发者可以根据自己的需求进行修改和优化,以实现特定的功能和交互效果。 在使用ASP.NET Web手机框架码之前,开发者需要了解ASP.NET平台的基本知识和开发经验,才能更好地理解和应用代码。同时,还需要结合文档和教程等资,以更好地使用码进行开发工作。通过合理地使用和理解ASP.NET Web手机框架码,开发者可以提升手机网页应用程序的质量和性能,提供更好的用户体验。 ### 回答2: ASP.NET Web手机框架是一个用于开发适用于移动设备的Web应用程序的开框架。它基于ASP.NET技术,可以帮助开发人员快速构建适应不同移动设备的网页应用。 该框架提供了一组用于处理移动设备用户界面的控件,比如按钮、文本框和下拉列表等。这些控件可以根据设备的特性,如屏幕大小和触摸手势,自动调整样式和布局。 ASP.NET Web手机框架码是用来构建和扩展这个框架的工具和资。它包括了框架的核心代码和相关文件,可以帮助开发人员了解和修改框架的工作原理。 码提供了许多示例和模板,可以用来创建基于框架的移动网页应用。开发人员可以根据自己的需求,定制和扩展这些示例代码,以适应不同的移动设备和业务场景。 ASP.NET Web手机框架码的优势在于其开性,这意味着任何人都可以查看和修改代码,以满足自己的需求。这种开放性促进了更好的协作和共享,使开发人员能够共同推动框架的发展。 总之,ASP.NET Web手机框架码通过提供一套用于开发移动网页应用的工具和资,帮助开发人员构建适应不同移动设备的用户界面,并提供了定制和扩展的灵活性,使得开发过程更加高效和便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值