仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 585|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET教程之Community Server专题五:IHttpHandler...

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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就不能在手机上执行,手机的游戏也不能直接在微机上执行。
深爱那片海 该用户已被删除
沙发
发表于 2015-1-19 18:00:19 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
板凳
发表于 2015-1-25 09:45:44 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-2 21:35:31 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
蒙在股里 该用户已被删除
5#
发表于 2015-2-8 06:22:25 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-24 12:44:03 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-7 12:16:50 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
admin 该用户已被删除
8#
发表于 2015-3-15 05:17:07 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
柔情似水 该用户已被删除
9#
发表于 2015-3-21 18:43:09 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 02:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表