|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。asp.net|架构 模块是相称底层的,并且对每一个离开ASP.NET使用程序的哀求城市被触发.Http处置器加倍的专注并处置映照到这个处置器上的哀求.
Http处置器必要完成的器材十分复杂,可是经由过程会见HttpContext工具它能够变得十分壮大.Http处置器经由过程完成一个十分复杂的IHttpHandler接口(或是它的异步版本,IHttpAsyncHandler),这个接口乃至只含有一个办法-ProcessRequest()-和一个属性IsReusable.关头部分是ProcessRequest(),这个函数猎取一个HttpContext工具的实例作为参数.这个函数卖力从头至尾处置Web哀求.
独自的,复杂的函数?太复杂了,对吧?好的,复杂的接口,但其实不强大!记着WebForm和WebService都是作为Http处置器完成的,以是在这个看上往复杂的接口中包装了很壮大的才能.关头是如许一个现实,当一个哀求离开Http处置器时,一切的ASP.NET的外部工具都被筹办和设置好来处置哀求了.次要的是HttpContext工具,供应一切相干的哀求功效来吸收输出并输入回Web服务器.
对一个HTTP处置其来讲一切的举措都在这个独自的ProcessRequest()函数的挪用中产生.这像上面所展现的如许复杂:
publicvoidProcessRequest(HttpContextcontext)
{
context.Response.Write("HelloWorld");
}
也能够像一个能够从HTML模板衬着出庞大表单的WebForm页面引擎那末完全,庞大.经由过程这个复杂,可是壮大的接口要做甚么,完整取决于你的决意.
由于Context工具对你是可用的,你可用会见Request,Response,Session和Cache工具,以是你具有一切ASP.NET哀求的关头特征,能够取得用户提交的内容并前往你发生的内容给客户端.记着HttpContext工具-它是你在全部ASP.NET哀求的性命周期中的”伴侣”.
处置器的关头操纵应当是将输入写进Response工具大概更详细一点,是Response工具的OutputStream.这个输入是实践上被送回到客户真个.在幕后,ISAPIWorkerRequest办理着将输入流前往到ISAPIecb的历程.WriteClient办法是实践发生IIS输入的办法.
-ASP.NET哀求管道经由过程一系列事务接口来转发哀求,供应了更年夜的天真性.Application当哀求到来并经由过程管道时作为一个载进Web使用并触发事务的宿主容器.每一个哀求都沿着设置的Http过滤器和模块的路径走(译注:原文为HttpFiltersAndModules,应当是指HttpModule和HttpHandler).过滤器能够反省每一个经由过程管道的哀求,Handler同意完成使用程序逻辑大概像WebForm和WebService如许的使用层接口.为了向使用供应输出输入,Context工具在这个处置过程当中供应了特定于哀求的的信息.
WebForm利用一系列在框架中十分高层的接口来完成一个Http处置器,可是实践上WebForm的Render()办法复杂的以利用一个HtmlTextWriter工具将它的终极了局输入到context.Response.OutputStream了结.以是十分梦境的,毕竟即便是向WebForm如许初级的工具也只是在Request和Response工具之长进行了笼统罢了.
到了这里你大概会困惑在Httphandler中你究竟必要处置甚么.既然WebForm供应了复杂可用的HttpHandler完成,那末为何必要思索更底层的器材而保持这扩大性呢?
WebForm关于发生庞大的HTML页面来讲长短常壮大的,营业层逻辑必要图形结构工具和基于模块的页面.可是WebForm引擎做了一系列overheadintensive的义务.假如你想要做的是从体系中读进一个文件并经由过程代码将其前往的话,欠亨过WebForm框架间接前往文件会更无效率.假如你要做的是相似从数据库中读出图片的事情,其实不必要利用页面框架-你不必要模板并且断定不必要Web页面并从中捕获用户事务.
没有来由必要创建一个页面临象和Session并捕获页面级其余事务-一切这些必要实行对你的义务没有匡助的分外的代码.
以是自界说处置器加倍无效率.处置器也可用来做WebForm做不到的事变,比方不必要在硬盘上有物理文件便可用途理哀求的才能,也被称为假造Url.要做到这个,确认你在中展现的使用扩大对话框中关失落了”反省文件存在”选项.
这关于内容供应商来讲十分罕见,象静态图片处置,XML服务,URL重定向服务供应了vanityUrls,下载办理和其他,这些都不必要WebForm引擎.
异步HTTPHandler
在这篇文章中我年夜部分都在会商同步处置,可是ASP.NET运转时也能够经由过程异步HTTPhandler来撑持异步操纵.这些处置器主动的将处置”卸载”到自力的线程池的线程中并开释主ASP.NET线程,使ASP.NET线程能够处置其他的哀求.不幸的是在1.x版的.NET中,”卸载”后的处置仍是在统一个线程池中,以是这个特征之增添了一点点的功能.为了创立真实的异步举动,你必需创立你本人的线程并在回调解理中本人办理他们.
以后版本的ASP.NET2.0Beta2在IhttpHandlerAsync(译注:此处应当是指IHttpAsyncHandler,疑为作者笔误)接口和Page类两方面做了一些对异步处置的改善,供应了更好的功能,可是在终极公布版本中这些是不是会保存
也不知道,我同学昨天说数据挖掘很好。 |
|