ASP.NET之自定义异步HTTP处理程序(图文教程)

1.对读者想说的话:(可跳过)

在此我感谢那些看了《ASP.NET之自定义同步HTTP处理程序》这篇文章以及看到了这篇《ASP.NET 之 自定义 异步HTTP处理程序》的亲们。前面的那篇可能看过MSDN的亲们一定会发现很多熟悉的地方。而我其实就是比较详细的介绍了一下,让大家更好的理解      

PS:MSDN从头到尾都是文字且文字很统一,恐怕很多人都感觉畏惧,懒的去看,所以我将其重要的部分提取出来,使用易懂的例子和简洁的语言来叙述。当然其中也免不了错误,希望各位亲们可以指出。

2.正式的开始

前面我们学习了关于关于自定义同步HTTP处理程序,相信大家可能感觉有所成就(大牛们可能会觉得so easy)。但是这种同步的机制只能对付客户访问较少的情况或者数据处理量不大的情况(每次申请一个同步HTTP处理程序都会新建一个新的线程来处理,当申请量很大时,线程将会被堵塞,致使服务器性能低下,甚至宕机)。而今天这篇文章就是解决同步HTTP处理程序的这个致命缺点,有效的使用服务器的资源。

PS:异步(仅限在本文章下的情况): 简单来说就是一部分操作在使用我们自己创建的线程,另一部分操作由操作系统调用自身的线程有条不紊的处理,这样我们可以将简单的处理由我们自身的线程完成,而复杂的处理则交给系统管理的线程来处理。因为这些线程是系统管理的所以不会出现卡死的情况,系统内部会自动的管理。当然系统会通过通知的方式告知我们的自己的线程该处理已经完成,这样我们就可以避免使用多线程技术,却难于管理的问题。

以下为图例:

ASP.NET之自定义异步HTTP处理程序(图文教程)

二、注册与绑定(虽然前一篇已经讲述过,但是在这里仍然重新再讲一次)

为什么要有这两部呢?而且还是要注册与绑定这两个呢?

答案是 你只写一个类 vs是不可能知道你这个东西是干什么的,所以我们需要在 web.config 中注册我们自定义的HTTP处理程序。而绑定则是让iis知道我们这个站点中含有一个自定义的HTTP处理程序。(下面我将以 iis7 为例说明如何绑定)

1.注册

复制代码 代码如下:


<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="<!-- 这里写需要绑定的客户端申请的页面(*.smm,*.ffs,web1.ffe) -->" type="<!-- 这里写处理程序的类名 -->"
</httpHandlers>
</system.web>
</configuration>

以上需要自行编写的部分我都已使用注释写好

2.绑定( iis7 )

1) 打开 iis7 -》 打开  网站  节点 -》 点击你的网站的名称

2) 双击

3) 点击

4)

ASP.NET之自定义异步HTTP处理程序(图文教程)

5) 最后点击 确定 这样在 iis 中的绑定就完成了(后面的完整例子我将会以文字介绍该过程)

三、关于类的实现

这里我们将要实现两个接口的功能,下面我将分开来阐述

1. IHttpAsyncHandler 接口

需实现方法以及属性如下:

   IAsyncResult BeginProcessRequest( HttpContext context , AsyncCallback cb , Object extradata ) 
   启动对HTTP处理程序的异步调用

参数说明:
                        context : 该对象提供对用于向 HTTP 请求提供服务的内部服务器对象(如 RequestResponseSessionServer)的引用。
                    cb : 当异步操作完成后调用该委托告知我们操作已经完成
                    extradata : 处理该请求所需的所有额外数据
  返回值:
                   返回有关进程状态的IAsyncResult (可以让我们时刻查看异步调用中的当前状态)

 void EndProcessRequest( IAsyncResult result )
 进程结束时提供异步处理End方法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjdjgf.html