ASP.NET Ajax架构中ashx一般处理程序的运用
摘要:ashx一般处理程序可处理Ajax请求,通过继承HttpHandler类或实现IHttpHandler接口,免去了普通aspx页面控件解析以及页面处理的过程,页面响应能力强。介绍了ASP.NET Ajax的架构,叙述了使用ashx一般处理程序Ajax请求;在用户注册页面中使用Ajax实时检测用户名是否重复,改善了用户体验。
关键词:ASP.NET; Ajax; ashx文件(一般处理程序);
0、引言
ashx一般处理程序,可用它来处理Ajax请求,通过继承HttpHandler类(或是实现IHttpHandler接口),从而免去了普通aspx页面控件解析以及页面处理的过程。NET Framework 在默认情况下,把aspx WEB页面的Request请求交给HttpHandlerFactory来处理的,当页面的一个HTTP请求到达时,HttpHandlerFactory会提供出一个HttpHandler容器,HTTP请求最终交给HttpHandler容器中的ProcessRequest方法来处理的。Ajax是Asynchronous JavaScript and XML的缩写,即异步JavaScript和XML技术。【2】通过该技术的使用,实现了页面的局部刷新,减小了网络流量,改善用户体验,提升了系统的运行速度。在ASP.NET中结合使用JQuery+ashx一般处理程序,实现Ajax技术。
1 、ASP.NET Ajax架构
ASP.NET Ajax使得Ajax程序设计变得简单,使用ASP.NET中的Ajax可快速创建包含具有快速响应能力且熟悉的用户界面元素的网页,丰富了用户的体验。【2】ASP.NET Ajax中的JavaScript是跨平台的,支持多个浏览器,不会因PostBack而让整个页面重新加载造成闪动,可以实现Web页面局部更新,异步取回服务器端的数据,用户无需等待也不被打断,提升页面响应能力。
1.1、ASP.NET Ajax组成jquery实现ajax
ASP.NET Ajax主要有四个部分,Ajax服务器端控件、Ajax服务器端扩展控件、Ajax 服务器端远程Web Service桥、Ajax客户端代理。ASP.NET从4.0版开始,完全集成了Ajax 框架,在Visual Studio 2010及以上版本中工具箱里就可以到Ajax控件.ASP.NET Ajax客户端架构主要有API、API函数、基础类库、封装的XMLHttpRequest对象、Ajax XML引擎、ASP.NET Ajax客户端控件等。
在Ajax应用中,Ajax引擎相当于中间通讯层,Web页面HTTP请求通过Ajax引擎与服务器端进行通信,响应返回的结果提交给Ajax引擎,再由Ajax引擎来决定将这些数据显示到页面的指定位置.在Ajax中,变成对Ajax引擎的一次调用.只对部分页面进行更新。
Ajax Web页面的工作过程如图1所示:
图1 Ajax工作过程
2、ashx一般处理程序
一般处理程序HttpHandler是一种.NET WEB组件,扩展名为.ashx文件,采用它来处理Ajax请求,当文件需要动态返回来自查询字符串或XML和其它非HTML网页的图像时。采用JQuery和.NET技术,ashx页面接收参数,然后返回值.浏览页面时是无法看到编写的源代码的.ashx文件在.NET中要继承IHttpHandler接口,该接口里有IsReusable成员,指定IHttpHandler实例是否可以用来处理多个请求、方法ProcessRequest(HttpContext context)处理接受到的Http请求。
3、Ajax+ashx实现页面异步加载
各类WEB应用中都有数据库的访问操作,注册是一个常用的功能。应用Ajax设计ASP.NET Web注册页面,Ajax无刷新感检测用户名。测试用户名是否重名,只刷新部分页面。
具体设计思路如下:
(1)需要一个一般处理程序.ashx,传入用户名进行检索,设计Select语句,如果用户名已使用或未使用返回一个不同值的标识变量。
(2)使用JQuery的ajax,这里使用()方式,请求刚才的ashx文件,并将用户名作为参数传过去,get()是Request.QueryString接收,Ajax过程完成之后会返回
标识变量,再根据此标识确定是否可以使用新填写的注册用户名。
3.1、注册界面
注册界面设计如图2所示:需在网站主目录中添加JQuery插件jquery-1.4.1-vsdoc.js,在页面加上JQuery插件.
图2 注册页面界面
3.2 、一般处理程序isName.ashx
使用.ashx文件(一般处理程序)实现IHT-TPHandler接口,不像aspx要继承Page 类,处理控件和事件等,HttpHandler是HTTP请求的真正处理中心,直接用于处理客户端发送来的请求,并将服务器端的处理结果返回给客户端.ashx文件的具体处理过程要比aspx 要简单得多。
连接数据库;
查用户表是否有strName这条记录;
查结果放入boolName真假值;
3.3、JQuery使用
在注册Web页面中,用户名文本框失去焦点事件CheckUsername(),HTML+JavaScript 用$.ajax(url)这个函数发送数据到ashx文件,此文件用Request.QueryString接收数据。
关键代码如下:
3.4 、运行效果
页面即时出现提示用户名是否可用,用户无刷新抖动的感觉。
图3 用户名检测即时效果
4、其它技术实现Ajax.
在ASP.NET中实现Ajax,可根据个人习惯使用JavaScript、jquery插件,还可以选择.NET自己封装的Ajax控件,方法各有特点。
使用Ajax扩展EXT控件,优势在于支持UI,需安装AjaxControlToolkit,或是需要添加引用System.Web.Extensions.dll。在建Ajax页面时一定先添加ScriptManager控件,执行Ajax JavaScript库的
链接,才能让Page局部更新起作用。再添加UpdatePanel控件,并在其ContentTemplate内容模板添加内置控件、表格、HTML代码等.这样可以使用很少的客户端脚本或不使用客户端脚本就能创建丰富的客户端行为,局部更新可避免整页回发的开销。需要在Web.Config的元素中添加或修改元素。
NET Framework 4.0之前版本中使用ASP.NET Ajax,需要在ScriptManager控件所在页面,通过脚本调用Web服务,要指明Web服务所在的文件地址,扩展名为asmx Web Service 文件,WebServices+JQuery可实现Ajax页面部分刷新;在.NET Framework 4.0以后版本Ajax 中调用WCF服务。
5、总结
通过ashx来调用HttpHandler类,HttpHandler是一个彻底自定义Http请求方法,ashx少了处理了html的过程。免去了普通.aspx页面的控件解析以及页面处理的过程,直接返回Web http请求想要返回的结果,速度快.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如生成动态图片、动态文本等内容。
.ashx文件也有缺点,它处理控件的回发事件非常麻烦,需自己手动完成;并且它只能处理一个请求,如有多个请求需写对应的多个ashx文件。
参考文献
肖斌,汪敏.基于ASP.NET框架的Web应用研究.通信技术,2011,44(4):149-151.
【2】杨树林,胡洁萍.ASP.NET程序设计案例教程.北京:人民邮电出版社,2012:221-223.
赛奎春,顾彦玲.ASP.NET项目开发全程实录.北京:清华大学出版社,2015:360-361.
李萍,王得燕,杨文珺.ASP.NET(C#)动态网站开发案例教程.北京:机械工业出版社,2019:182.
于雷.基于Ajax的在线考试即时保存技术的设计与实现.吉林广播电视大学学报,2017(192):95-96.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。