文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.NetCommunity Server专题五:IHttpHandlerFactory
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
·ASP.NET网络编程中经常会用到的27个函数集
·ASP.NET之上传文件管理策略
·专家:用.NET动态创建类的实例讲解
·ASP.NET WEB服务和Flash打造MP3播放器
·精通ASP.NET中弹出窗口技术
·asp.net常用代码
·asp.net创建文件夹的IO类的问题
·Asp.Net函数集
·Asp.net cache 简述
·如何最大限度提高.NET的性能 (续)
热点TOP10
·DataTable控件的使用
·ASP.NET上传文件的实例
·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
·ASP.NET购物车的实现及结算处理
·在ASP.NET中防止注入攻击[翻译]
·使用ASP.NET2.0的ReportViewer查看RDLC报表
·asp.net程序中最常用的三十三种编程代码
·ASP.NET 2.0的导航控件treeview和menu的实例
·asp.net常用代码
·Lucene.net 实现全文搜索
·在C#后代码里使用IE WEB Control TreeView
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·Access 通用数据访问类(asp.net 2.0 c#)
·.Net分页控件发布
·ASP.NET之上传文件管理策略
·AspNetPager分页控件--使用方法
·asp.net 2.0中gridview里嵌套dropdownlist
·ASP.net在线购物商城系统完全解析
·手把手教你在Win2003下配置ASP.NET开发环境

Community Server专题五:IHttpHandlerFactory

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


  如果你了解Factory设计模式,这篇文章可以不用看,只要会配置IHttpHandlerFactory就可以,不了解也没有关系,通过下面的文章你可以学会如何使用IHttpHandlerFactory,同时还会明白Factory设计模式的广义定义

  在前一篇专题中讲解了HttpHandler在CS中的运用以及一些相关的话题。其实实现HttpHandler功能还有另外一个选择就是Handler Factory(CS 中没有用到Handler Factory),这是通过继承IHttpHandlerFactory接口来实现的。

  IHttpHandlerFactory接口的定义如下:

interface IHttpHandlerFactory
{
IHttpHandler GetHandler(HttpContext ctx, string requestType, string url,string pathTranslated);
void ReleaseHandler(IHttpHandler handler);
}

  该接口中定义了2个方法,GetHandler方法在请求开始的时候被调用,而ReleaseHandler在请求结束,所有的Handler都不再需要的时候被调用。

  如何使用呢?大致有三个步骤:

  1:定义实际处理HttpHandler的类(实现IHttpHandler接口),这个类会在HandlerFactory中被调用以进行业务处理,一个HandlerFactory可以调用N个HttpHandler类(不然就不叫Factory不是!)进行处理相关的业务逻辑。

  2:定义HandlerFactory,例:

public class MyHandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext ctx,string requestType,string url,string pathTranslated)
{
\\处理逻辑,最后返回一个HttpHandler类
}
public void ReleaseHandler(IHttpHandler handler) {}
}

  前一步说过,一个HandlerFactory可以处理N个HttpHandler,什么时候该处理什么HttpHandler就在这里的处理逻辑中实现,例如:以上一篇专题防盗链中说到的,你可以定义两个IHttpHandler实现,分别处理对图片与压缩文件的请求。由于GetHandler方法中传入了HttpContext的上下文,因此可以对上下文中的Url请求进行判断,然后启用不同的HttpHandler类。

  3:在Web.Config文件中注册这个HandlerFactory,注册的方式与HttpHandler是一样的。例:

<httpHandlers>
<add verb="*" path="*.*"
type="MyNamespace. MyHandlerFactory, MyAssembly" />
</httpHandlers>

  注意,这里不要再对HttpHandler进行配置了,无论你定义了多少IHttpHandler实例,只要他们是通过HttpHandlerFactory调用实现其功能,在这里都不要去注册它,不然就重复了。

  IHttpHandlerFactory其实非常简单,存在的思想就是Factory设计模式(Factory模式:利用给Factory对象传递不同的参数,以返回具有相同基类或实现了同一接口的对象,这里指返回具有同一IHttpHandler接口的对象)。

  什么时候你要使用IHttpHandlerFactory而不去使用IHttpHandler,我就个人的开发经验做一下总结:

  1:在一个项目中需要使用很多IHttpHandler的时候,而且对这些IHttpHandler判断都重复做一个同样的前期处理,如果防盗链的例子中对图片和压缩两个不同HttpHandler的处理,但是他们对URL的判断都是一致的,在.Text中使用了IHttpHandlerFactory,而不是IHttpHandler,对于URL的请求全都(*.asmx、Error.aspx除外)转交由一个IHttpHandlerFactory入口统一处理。

  2:从部署和松散耦合考虑,如果你的web application足够大(我目前还没有设计过这种大型app),你就要考虑在更换HttpHandler处理类的时候该不该去改动Web.config的配置,这种改动将会重新启动整个app,对于一些系统而言这是不可以随便进行的。这个时候,统一一个入口的IHttpHandlerFactory很重要,这个入口相对不变,而IHttpHandler实现可以通过外挂自定义的xml文件来实现松散耦合,运用一些反射什么的就可以实现了。

  如果对IHttpHandlerFactory有其他见解的朋友请留下你的观点。

(出处:清风网络学院






上一篇:Community Server专题四:HttpHandler

下一篇:Community Server专题六:Delegates & Events

Community Server专题五:IHttpHandlerFactory 相关文章:
·SQL server 2005安装问题汇总
·Sql server优化50法
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·SQL Server 2005 中的分区表和索引
·SQL Server 练习题
·把Windows Server 2003配置为NAT路由器
·提高查询速度:SQL Server数据库优化方案
·关闭Windows Server 2003关机事件跟踪程序
·SQL SERVER中的union,cube,rollup和cumpute运算符
·部署 Microsoft SQL Server 2005 群集
Community Server专题五:IHttpHandlerFactory 相关软件:
·SQL Server 2000 基础系列课程视频
·Windows 2003 Server 简体中文企业版(免激活)ISO
·Microsoft SQL Server 2005 Enterprise Edition SP1简体中文企业版
·逐步精通数据库 sql server 视频教程
·简体中文 Windows 2000 Server 培训教程
·MS SQL Server 2000 四合一
·青春期性教育专题片(下)
·IMail Server v7.13 无限制破解版
·Microsoft.SQL.Server.2005.简体中文开发版
·Active Server Pages & Web 数据库(PDG)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot