ASP.NET中Web应用程序

开发 后端
本文介绍在 ASP.NET 中,Web应用程序和会话状态被分别进行维护,通过 HttpApplication 和 HttpSessionState 分离 Web应用程序与会话的功能。

HTTP 协议之所以能够获得如此大的成功,其设计实现的简洁性和无状态连接的高效率是很重要的原因。而为了在无状态的 HTTP 请求和有状态的客户端操作之间达到平衡,产生了服务器端会话 (Session) 的概念。客户端在连接到服务器后,就由 Web 服务器产生并维护一个客户端的会话;当客户端通过无状态 HTTP 协议再次连接到服务器时,服务器根据客户端提交的某种凭据,如 Cookie 或 URL 参数,将客户关联到某个会话上。这种思路在各种开发语言和开发环境中大量得到应用。

在 ASP.NET 中,Web应用程序和会话状态被分别进行维护,通过 HttpApplication 和 HttpSessionState 分离 Web应用程序与会话的功能。应用程序层逻辑在 Global.asax 文件中实现,运行时编译成 System.Web.HttpApplication 的实例;会话则作为单独的 System.Web.SessionState.HttpSessionState 实例,由服务器统一为每个用户会话维护,通过 ASP.NET 页面编译成的 System.Web.UI.Page 对象子类的 Session 属性访问。关于 ASP.NET 中不同层次关系可参考我以前的一篇文章《.NET 1.1中预编译ASP.NET页面实现原理浅析 自动预编译机制浅析》。

ASP.NET 在处理客户端请求时,首先将根据客户端环境,生成一个 System.Web.HttpContext 对象,并将此对象作为执行上下文传递给后面的页面执行代码。

我们可以看到,HttpRuntime 在处理页面请求之前,根据 HttpWorkerRequest 中给出的环境,构造 HttpContext 对象,并以次对象作为参数从应用程序池中获取可用应用程序。简要代码如下:
以下内容为程序代码:

  1. private void HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)  
  2. {  
  3. // 构造 HTTP 调用上下文对象  
  4. HttpContext ctxt = new HttpContext(wr, 0);  
  5. //...  
  6. // 获取当前 Web 应用程序实例  
  7. IHttpHandler handler = HttpApplicationFactory.GetApplicationInstance(ctxt);  
  8. // 调用 handler 实际处理页面请求  

以上介绍ASP.NET中Web应用程序

【编辑推荐】

  1. ASP.NET中的数据源控件
  2. 介绍ASP.NET的XML Web服务使用
  3. ASP.NET应用程序的web.config文件
  4. 概述ASP.NET XML Web服务
  5. ASP.NET中实现HTTP请求
责任编辑:佚名 来源: IT168
相关推荐

2009-07-21 15:23:55

预编译Web应用程序ASP.NET

2009-07-24 10:41:00

ASP.NET Web

2009-07-24 11:25:53

Web应用程序工程ASP.NET MVC

2009-07-27 16:09:50

2009-07-20 16:08:04

ASP.NET应用程序

2009-08-05 10:16:54

部署ASP.NET应用

2009-07-29 17:01:13

2009-07-22 17:32:40

ASP.NET应用程序

2009-07-23 13:26:21

2009-07-21 15:02:19

ASP.NET应用程序

2009-07-28 14:54:47

web.config文ASP.NET应用程序

2009-07-23 14:25:03

ASP.NET 2.0

2009-07-29 17:21:10

2009-07-28 09:10:34

ASP.NET Web

2009-07-20 16:03:14

ASP.NET 2.0

2009-07-28 10:11:06

ASP.NET应用程序

2009-07-21 15:14:32

预编译应用程序ASP.NET

2009-08-04 11:46:09

2009-07-27 17:46:42

WCF服务ASP.NET应用程序

2009-07-22 18:07:55

论坛应用程序ASP.NET MVC
点赞
收藏

51CTO技术栈公众号