.NET之ASP Web Application快速入门

<< .NET之ASP Web Services 快速入门 | .NET之ASP WebApplication快速入门(5) >>
  发布日期:24/11/2007 02:51:38 发布者:[快乐开发网]  来源:[本站]  浏览:[]  评论:[]
字体:    

.NET之ASP Web Application快速入门

Application1.aspx

[点击这里运行例程]

| [查看源代码]



页面首次打开时,将激活application和session的Onstart事件。关于这些事件触发程序,请看下面使用VB、C#以及JScript三种语言编写的代码: C#

void Application_Start() {

Response.Write("Application is Starting...");

}

void Session_Start() {

Response.Write("Session is Starting...");

Session.Timeout = 1;

}

VB

Sub Application_Start()

Response.Write("Application is Starting...")

End Sub

Sub Session_Start()

Response.Write("Session is Starting...")

Session.Timeout = 1

End Sub

JScript

function Application_Start() : void {

Response.Write("Application is Starting...");

}

function Session_Start() : void {

Response.Write("Session is Starting...");

Session.Timeout = 1;

}

每次请求发生时,都会激活BeginRequest 和EndRequest 事件。比如,当页面被刷新时,来自BeginRequest、EndRequest

和Page_Load 方法的信息将显现出来。注意,当放弃当前的session时(点击"End this session"按钮),将产生一个新session,接着再次触发Session_OnStart事件。
Application 或 Session作用范围内的对象
在Global.asax文件中,我们可以通过object标记定义静态对象,这些对象可以是.NET框架类,也可以是经典的COM组件。其作用范围可以是appinstance、session或者application中的任一种。 如果一个对象的作用范围是Appinstance,就表示这个对象明确属于HttpApplication的一个实例,并且不被共享。

请看下面定义对象作用范围的例子:

<object id="id" runat="server" class=".NET

Framework class Name" scope="appinstance">


<object id="id" runat="server" progid="Classic

COM ProgID" scope="session"/>


<object id="id" runat="server" classid="Classic

COM ClassID" scope="application"/>

什么是HttpHandlers 和 factories(Http处理器和工厂)

ASP.NET提供了一套低级别的请求/响应API,利用它们我们就可以使用.NET框架类服务于输入的HTTP求,它们就是HTTPHandlers

和Factories。HTTPHandlers 和Factories可以说是ASP.NET框架的中枢。Factories(工厂)将每个请求分配给一个handler(处理器),由这个处理器再负责处理请求。具体实现步骤就是创建支持System.Web.IHTTPHandler接口的类,并执行ProcessRequest()方法。当不要求高级别页面框架提取的服务处理HTTP请求时,处理器经常很有用途。处理器的一般用途包括过滤器和仿CGI应用,特别是那些返回二进制数据的应用。

ASP.NET接收的每一个HTTP输入请求最终被一个特殊的类实例IHTTPHandler所处理,IhttpHandlerFactory提供了处理器到IHTTPHandler实例的基础下部组织。ASP.NET自带3个标准的IhttpHandlerFactory类:PageHandlerFactory,RestrictedResourceFactory和WebServiceHandlerFactory。我们还可以有选择的创建并注册附加factories(工厂)以支持更丰富的请求决定和激活场合。

配置HttpHandlers 和 Factories

HTTPHandlers 和factories 作为config.web文件的一部分进行配置。ASP.NET定义了一个"httphandlers"配置节,在这里可以添加和删除HTTPHandlers和factories。这些配置信息可以通过子目录而继承下来。

比如,下面这些代码位于config.web文件的头部,目的就是映射所有关于.aspx文件的请求到PageHandlerFactory类:

<httphandlers>

...

<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"

/>

...

</httphandlers>
创建自定义HttpHandler

要自定义一个handler,可以执行IhttpHandler,并在config.web文件的httphandlers一节中添加类信息。下面举例说明如何创建自定义一个HttpHandler,将所有的请求对应到"SimpleHandler.aspx"中:

.NET之ASP Web Application快速入门

SimpleHandler

[点击运行程序]

| [查看源代码]



自定义HttpHandler可以通过执行IhttpHandler接口来创建,这个接口只有两个方法。通过调用IsReusable,一个HTTP

factory就能够查询handler(处理器)以判断是否同一实例可以用于服务多个请求。ProcessRequest方法接受HttpContext实例作为参数。这里的例子中,请求数据被忽略,一个常量字符串作为响应发送到客户端。请看下面使用VB、C#以及JScript三种语言编写的代码:

C#

public class SimpleHandler : IHttpHandler {

public void ProcessRequest(HttpContext context) {

context.Response.Write("Hello World!");

}

public bool IsReusable() {

return true;

}

}

VB

Public Class SimpleHandler : Inherits IHttpHandler

Public Sub ProcessRequest(context As HttpContext)

context.Response.Write("Hello World!")

End Sub

Public Function IsReusable() As Boolean

Return(True)

End Function

End Class

JScript

public class SimpleHandler implements IHttpHandler {

public function ProcessRequest(context:HttpContext) : void {

context.Response.Write("Hello World!");

}

public function IsReusable() : Boolean {

return true;

}

}

将编译的处理器集合放置到application的/bin目录下面后,我们就可以指定处理器类到请求的目标上。在这里,所有对"SimpleHandler.aspx"的请求将被路由到SimpleHandler类的一个实例上,它生存于名字空间Acme.SimpleHandler中。

结 语

以上通过原理与实例讲述了.NET之ASP Web Application的概念及使用,我们看到了如何使用三种不同的编程语言达到目的。你会发现,我们正在慢慢地触及.NET的神奇思想,领会.NET的震撼力量。我们有理由相信,凭借如此强大的工具,开发人员将更具创造力!
打印 】【 收藏 】【 推荐 】 
相关文章
·暂无
推荐文章
热门文章
评一评
正在读取…

  笔名:

  评论:

   

【注】 发表评论必需遵守以下条例: