仓酷云

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

[学习教程] ASP.NET教程之ASP.NET底层架构探究之HttpHandlers

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

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

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

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类两方面做了一些对异步处置的改善,供应了更好的功能,可是在终极公布版本中这些是不是会保存
也不知道,我同学昨天说数据挖掘很好。
分手快乐 该用户已被删除
沙发
发表于 2015-1-19 23:03:22 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
变相怪杰 该用户已被删除
板凳
发表于 2015-1-25 13:51:43 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
小魔女 该用户已被删除
地板
发表于 2015-2-2 22:19:05 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
不帅 该用户已被删除
5#
发表于 2015-2-8 13:26:24 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-25 15:19:06 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
乐观 该用户已被删除
7#
发表于 2015-3-7 22:54:23 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
海妖 该用户已被删除
8#
发表于 2015-3-15 16:04:03 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
冷月葬花魂 该用户已被删除
9#
发表于 2015-3-22 02:09:15 | 只看该作者
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-25 19:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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