working-yycc

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  3 Posts :: 1 Stories :: 0 Comments :: 0 Trackbacks

公告

昵称:yycc
园龄:4年8个月
粉丝:0
关注:0

搜索

 
 

常用链接

最新评论

2007年6月8日 #

下面就开始具体的HTTP处理程序的学习

首先要介绍两个接口,实际上HTTP处理程序只不过是实现该接口的托管类。
同步接口 IHttpHandler,这个接口只有两个成员
公共属性  IsReusable       获得一个布尔值,指示另一个请求是否可以使用该HTTP处理程序的实例
                         如果 IHttpHandler 实例可再次使用,则为 true;否则为 false。
 
公共方法  ProcessRequest  该方法 处理Http请求。参数 HttpContext对象,它提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用。

下面当然是进行一个helloword级别的demo啦

第一步  自定义一个实现了IHttpHandler的类
using System.Web;


namespace WebApplication1
{
    
public class SimpleHandler : IHttpHandler
    {
        
public void ProcessRequest(HttpContext context)
        {
            context.Response.Write(
"<H1>This is an HttpHandler Test.</H1>");
            context.Response.Write(
"<p>Your Browser:</p>");
            context.Response.Write(
"Type: " + context.Request.Browser.Type + "<br>");
            context.Response.Write(
"Version: " + context.Request.Browser.Version);
        }

        
public bool IsReusable
        {
            
get { return true; }
        }
    
    }
}
可以看见该类只是单纯的实现了IHttpHandler接口,做的事情就是让相应流中写出浏览器版本号之类的信息

第二步
向web.config注册信息
<httpHandlers>
  
<add verb="*" path="Default.aspx" type="WebApplication1.SimpleHandler"/>
</httpHandlers>

add节点的属性
verb  表示受支持的一些Http动词列表 如GET,PUT,POST,通配符(*)
path  表示程序需要处理的资源 如:*.aspx,a url
type  表示一个逗号隔离的类/程序集组合,如果没有程序集可以省略。

在完成了以上2步之后我们浏览Default.aspx时,虽然我们没有对页面作任何操作但是页面显示效果如下



异步接口 IHttpAsycHandler,该接口同样也只有两个成员
公共方法
BeginProcessRequest     初始化一个对指定Http处理程序的异步调用
IAsyncResult BeginProcessRequest (
    HttpContext context,//一个HttpContext对象
    AsyncCallback cb,//异步方法完成时要调用的委托
    Object extraData//
处理该请求所需的所有额外数据
)

EndProcessRequest       终止异步调用
void EndProcessRequest (
    IAsyncResult result//
包含有关进程状态信息的IAsyncResult
)

接下来的文章中我会介绍一些负责详细的例子。

posted @ 2007-06-08 00:23 yycc 阅读(51) 评论(0) 编辑

2007年6月6日 #

已经计划了很久要对这块做个具体的总结和学习,下面会分为几个具体的部分进行。
首先需要介绍的是什么是 HTTP 处理程序
MSDN是这样介绍的:

ASP.NET HTTP 处理程序是响应对 ASP.NET Web 应用程序的请求而运行的过程(通常称为“终结点”)。最常用的处理程序是处理 .aspx 文件的 ASP.NET 页处理程序。用户请求 .aspx 文件时,页通过页处理程序来处理请求。

一般来说标准的HTTP 处理程序分为以下几种

ASP.NET 页处理程序 (*.aspx)


用于所有 ASP.NET 页的默认 HTTP 处理程序。

Web 服务处理程序 (*.asmx)


用于使用 ASP.NET 创建的 Web 服务页的默认 HTTP 处理程序。

ASP.NET 用户控件处理程序 (*.ascx)


用于所有 ASP.NET 用户控件页的默认 HTTP 处理程序。

跟踪处理程序 (trace.axd)


显示当前页跟踪信息的处理程序。


但是如果需要ASP.NET以一种非标准方式来处理某些请求时,就可以编写自定义的HTTP 处理程序
下面需要说明几点
 ●
HTTP 处理程序可以同步工作也可以异步的工作
    当
HTTP 处理程序以同步方式进行工作时,知道它处理完HTTP请求才返回。
    当
HTTP 处理程序以异步方式进行工作时,处理程序运行进程的行为与向用户发送响应无关。当您需要启动一个可能耗费很长时间的应用程序进程,而用户又无需等候进程完成以便从服务器获取响应时,异步处理程序非常有用。
 ●如果创建一个类文件作为您的 HTTP 处理程序时,比如在地址栏键入***.abc
   你必须要让IIS知道究竟是哪个程序处理扩展名为abc,比如要在IIS 中将处理程序类文件的扩展名映射到 您相应的类中,您还需要在Web.config 文件中注册该处理程序并将 .abc文件扩展名映射到该处理程序所需的元素。
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.abc"
type="classname"/>
</httpHandlers>

</system.web>
</configuration>

接下来的会分别介绍IHttpHandler,IHttpAsyncHandler接口,以及一些自定义HTTP处理程序的实现方案。
posted @ 2007-06-06 23:49 yycc 阅读(45) 评论(0) 编辑

几经周折,终于我的技术blog开张了。
希望日后这可以记录我的生活上的喜怒哀乐,技术上的心得体验。
加油!~working-yycc

posted @ 2007-06-06 00:03 yycc 阅读(17) 评论(0) 编辑