|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
c++是语言,其实C++和java的应用范围根本就不一样的。在java应用的领域内,c++是不合适的。所以微软才搞了C#和Java对抗。server 假如你懂得Factory计划形式,这篇文章能够不必看,只需会设置IHttpHandlerFactory就能够,不懂得也没有干系,经由过程上面的文章你能够学会怎样利用IHttpHandlerFactory,同时还会分明Factory计划形式的狭义界说
在前一篇专题中解说了HttpHandler在CS中的使用和一些相干的话题。实在完成HttpHandler功效另有别的一个选择就是HandlerFactory(CS中没有效到HandlerFactory),这是经由过程承继IHttpHandlerFactory接口来完成的。
IHttpHandlerFactory接口的界说以下:
interfaceIHttpHandlerFactory
{
IHttpHandlerGetHandler(HttpContextctx,stringrequestType,stringurl,stringpathTranslated);
voidReleaseHandler(IHttpHandlerhandler);
}
该接口中界说了2个办法,GetHandler办法在哀求入手下手的时分被挪用,而ReleaseHandler在哀求停止,一切的Handler都不再必要的时分被挪用。
怎样利用呢?大抵有三个步骤:
1:界说实践处置HttpHandler的类(完成IHttpHandler接口),这个类会在HandlerFactory中被挪用以举行营业处置,一个HandlerFactory能够挪用N个HttpHandler类(否则就不叫Factory不是!)举行处置相干的营业逻辑。
2:界说HandlerFactory,例:
publicclassMyHandlerFactory:IHttpHandlerFactory
{
publicIHttpHandlerGetHandler(HttpContextctx,stringrequestType,stringurl,stringpathTranslated)
{
处置逻辑,最初前往一个HttpHandler类
}
publicvoidReleaseHandler(IHttpHandlerhandler){}
}
前一步说过,一个HandlerFactory能够处置N个HttpHandler,甚么时分该处置甚么HttpHandler就在这里的处置逻辑中完成,比方:以上一篇专题防盗链中说到的,你能够界说两个IHttpHandler完成,分离处置对图片与紧缩文件的哀求。因为GetHandler办法中传进了HttpContext的高低文,因而能够对高低文中的Url哀求举行判别,然后启用分歧的HttpHandler类。
3:在Web.Config文件中注册这个HandlerFactory,注册的体例与HttpHandler是一样的。例:
<httpHandlers>
<addverb="*"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:从部署和松懈耦合思索,假如你的webapplication充足年夜(我今朝还没有计划过这类年夜型app),你就要思索在改换HttpHandler处置类的时分该不应往修改Web.config的设置,这类修改将会从头启动全部app,关于一些体系而言这是不成以任意举行的。这个时分,一致一个出口的IHttpHandlerFactory很主要,这个出口绝对稳定,而IHttpHandler完成能够经由过程外挂自界说的xml文件来完成松懈耦合,使用一些反射甚么的就能够完成了。
假如对IHttpHandlerFactory有其他看法的伴侣请留下你的概念。
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。 |
|