深入解析Asp.NET架构

添加人:yeemio零级(113分)   添加时间:2007-08-31    阅读次数:4175  收藏此教程
HttpHandler:
HttpHandler实现了ISAPI Extention的功能,他处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的实现通过实现IHttpHandler接口来达到。
HTTP处理程序是实现了System.Web.IHttpHandler接口的.NET组件。任何实现了IHttpHandler接口的类都可以用于处理输入的HTTP请求。HTTP处理程序与ISAPI扩展有些类似。HTTP处理程序和ISAPI扩展的差别在于在URL中可以使用HTTP处理程序的文件名称直接调用它们,与ISAPI扩展类似。
HttpHandler的实现,实现我们的HTTP处理程序包含以下步骤:
编写一个实现IHttpHandler接口的类。
在web.config或machine.config文件中注册这个处理程序。
在Internet服务管理器中把文件扩展(你想要处理的文件扩展名)映射到ASP.NETISAPI扩展DLL(aspnet_isapi.dll)上。
 
我们来看一个例子,打开IIS服务器,属性,主目录下有个配置,里面你就可以找到你的程序所执行文件所要调用的.dll文件。我们可以看到.aspx就是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll这个文件
来执行的。这里还可以添加你自己任意定义任意扩展名文件,定义了后你的服务器就可以认识这些人间,注意只是你的服务器,别人的不认识。这时候大家就会对网络上流行的各式各样的后缀名不奇怪了吧,可以自己定义的。
我们自己定义一个带.xxx后缀的。
添加一个类库,引用的相应的命名空间,
 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using System.Web;
 5namespace MyHandler
 6{
 7    public class NewHandler:IHttpHandler
 8    {
 9        public NewHandler()
10        {
11            // TODO: 此处添加构造逻辑
12        }

13        Implementation of IHttpHandler
37    }

38}
然后再web.config里面配置相应节点:这里不懂的参考前边的,XXX就是我们刚才定义那个后缀名。
<httpHandlers>
        <add verb="*" path="*.xxx"
               type="MyHandler.NewHandler,MyHandler" />
      </httpHandlers>
然后添加一个测试页面,就可以了。
HttpHandler之间的关系是这样的:
发送一个Http请求,然后判断是否存在自定义的HttpHandler,如果存在的话由自定义的HttpHandler处理Http请求,否则由系统默认的HttpHandler处理
Http请求。
在HttpHandler中访问Session:
不能直接通过HttpContext访问。
必须实现IRequiresSessionState接口。
IRequiresSessionState接口指定目标HTTP处理程序接口具有对会话状态值的读写访问权限。这是一个标记接口,没有任何方法。
怎样实现呢,我们还是来看例子吧:添加类库,引用相应的命名空间。
 1using System;
 2using System.Web;
 3using System.Web.SessionState;
 4namespace MyHandler
 5{
 6    public class NewHandlerSession : IHttpHandler, IRequiresSessionState
 7    {
 8        public NewHandlerSession()
 9        {
10            // TODO: 此处添加构造逻辑
11        }

12        Implementation of IHttpHandler
39    }

40}
然后配置Web.config的节点:
 <httpHandlers>
        <!--<add verb="*" path="*.xxx"
               type="MyHandler.NewHandler,MyHandler" />-->
       <add verb="*" path="*"
               type="MyHandler.NewHandlerSession,MyHandlerSession" />
      </httpHandlers>
这样就可以了。
这里还有一个定时器实现的例子。
ASP.NET事件模型机制:
ASP.NET之所以对于以前的ASP是一个革命性的巨变,在很大程度上是由于ASP.NET技术是一种完全基于事件驱动的全新技术。
在ASP.NET中事件的触发和处理分别是在客户端和服务器段进行的。
ASP.NET中,如果频繁和服务器进行事件信息的传递,会大大降低服务器的处理效率和性能,因而有些事件如OnMouseOver没有提供。
但提供了Change事件。为了提高效率它们被缓存在客户端。等到再一次事件信息被发送到服务器端时一同发送回去。
3页 第3上一页123下一页
相关的教程: ASP.NET
收藏此教程

当前平均分: 0.0(2 次打分)

-5-4-3-2-1012345
评论主题
您的大名
您的评论
验证码 点击换一个验证码
知识库搜索: