• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET之自定义异步HTTP处理程序(图文教程)

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了http://asp.net,http://www.asp.net,自定义控件 asp.net,自定义表单 asp.net,asp.net等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、前言

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

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

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

2.正式的开始

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

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

以下为图例:

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

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

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

1.注册
</div>

2.绑定( iis7 )

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

2) 双击

3) 点击

4)

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

三、关于类的实现

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

1. IHttpAsyncHandler 接口

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

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

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

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


    参数说明:
                          result : 有关进程状态的IAsyncResult(这里的result跟BeginProcessRequest返回的是同一个对象,只是内部的属性等等改变了)

注: 但是我们还要实现不在IHttpAsyncHandler接口中的一个属性和一个方法,否则IIS会报错

bool IsRusable
表明是否使用池,只需要实现get,返回false表示不使用,返回true表示使用。

   void ProceessRequest( HttpContext context )
同步HTTP处理程序被调用的方法(这里并不会调用该方法,但是必须实现)



  2. IAsyncResutl 接口

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

      Object AsyncState
  获取用户定义的对象(其实就是以上的 extradata 并且只要实现get )

  WaitHandler AsyncWaitHandle
  获取用于等待异步操作完成的 WaitHandle (一般都是返回NULL 并且只要实现get )  bool CompletedSynchronously
  获取异步操作是否同步完成的指示(一般都是返回false)  bool IsCompleted
  获取异步操作是否已完成的指示

  四、实现该功能(iis7 / asp.net 4.0 / vs2010 / windows 7 64bit )

注: 1.新建空web项目,并添加 App_Code 文件夹,并部署在 iis 上

    2.在App_Code中新建一个类,命名为"AsyncRequestHandler.cs"(这里的命名不影响,但是类名是关键)

    3.在 AsyncRequestHandler.cs 中引用 "System.Threading" 命名空间

下面我们将一步一步的学习实现这个功能,虽然只是一个很简单的例子,但是可以让你在以后的开发中更加灵活的运用。

1.实现 IHttpAsyncHandler 接口
代码如下:
/// 当BeginProcessRequest中的 return op;与异步的处理完成后调用(调用完既呈现页面)

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
  • ASP.NET设置404页面返回302HTTP状态码的解决方法
  • ASP.NET笔记之Session、http、web开发原则、xss漏洞的详细介绍
  • ASP.NET之自定义同步HTTP处理程序(图文教程)
  • ASP.NET之自定义异步HTTP处理程序(图文教程)
  • asp.net Http异常eurl.axd出错信息解决方法
  • ASP.NET生成eurl.axd Http异常错误的处理方法
  • asp.net 截取Http请求的实现代码
  • asp.net 模拟提交有文件上传的表单(通过http模拟上传文件)
  • 运行asp.net时出现 http错误404-文件或目录未找到

相关文章

  • 2017-05-11超好用轻量级MVC分页控件JPager.Net
  • 2018-08-20使用微信PC端的截图dll库实现微信截图功能
  • 2017-05-11ASP.NET文件上传Upload的实现方法
  • 2017-05-11asp控件和html控件的概念区别
  • 2017-05-11ASP.NET中配合JS实现页面计时(定时)自动跳转
  • 2017-05-11.net平台推送ios消息的实现方法
  • 2018-08-20ASP.NET MVC重写RazorViewEngine实现多主题切换
  • 2017-05-11.Net读取Excel 返回DataTable实例代码
  • 2017-05-11asp.net获取网站绝对路径示例
  • 2017-05-11.NET建造者模式讲解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP.NET也像WinForm程序一样运行的实现方法
    • .NET读写Excel工具Spire.Xls使用 重量级的Excel图表功能(5)
    • .NET的DateTime函数获取上个月的起始和截止时间的方法
    • ASP.NET图片处理三类经典问题
    • c#中常用的js语句
    • asp.net Request获取url信息的各种方法比较
    • asp.net下Request.QueryString取不到值的解决方法
    • System.Web.Routing入门及进阶
    • asp.net HttpHandler操作Session的函数代码
    • ASP.NET页面间的传值的几种方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有