All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET的一个bug的发现和解决_.net资料_编程技术
学习动态网页技术PHP中错误处理的一些方法_php资料_编程技术
在DataGrid控件中获取数据项中各列的数据内容_[Asp.Net教程]
ASP.NET技巧:请求网址并解析返回的html_[Asp.Net教程]
五个常见,PHP,数据库问题_php资料_编程技术
一个程序详细研究DataReader_[Asp.Net教程]
PHP技巧:理解动态网页技术PHP与数组的应用_[PHP教程]
单击gridview中记录在右下方显示详细信息_[Asp.Net教程]
GDI+绘制柱型图分析商品月销售情况
asp.net源程序编译为dll文件并调用过程_[Asp.Net教程]
Reading number is top 10 pictures
大人物的礼物
初五接财神啦!五路财神齐来到
美丽的桂林风光1
Discharge accidentally Actresses by the breast3
含苞欲放的素颜美少女3
Absolutely shocked. National geographic 50 animal photographys9
A man's favorite things8
中国女孩大胆自拍,显露完美身材2
你白吃了多少药
In 2013 hercules Arnold classic1
Download software ranking
Boxer's Top ten classic battle5
Boxer vs Yellow2
Proficient in Eclipse
变速齿轮3.26
apache-tomcat-6.0.33
Unix video tutorial3
Unix video tutorial19
Prostitutes diary
Tram sex maniac 2 (H) rar bag18
电车之狼R
aaa published in(发表于) 2013/12/6 10:24:53 Edit(编辑)
ASP.NET底层架构之从浏览器到ASP.NET_.net资料_编程技术

ASP.NET底层架构之从浏览器到ASP.NET_.net资料_编程技术

ASP.NET底层架构之从浏览器到ASP.NET_.net资料_编程技术-数科优化网
  让我们从一个典型的ASP.NET Web请求的生命周期的起点开始。当用户输入一个URL,点击了一个超链接或者提交了一个HTML表单(form)(一个POST请求,相对于前两者在一般意义上都是GET请求)。或者一个客户端程序可能调用了一个基于ASP.NET的WebService(同样由ASP.NET来处理)。在Web服务器端,IIS5或6,获得这个请求。在最底层,ASP.NET和IIS通过ISAPI扩展进行交互。在ASP.NET环境中这个请求通常被路由到一个扩展名为.aspx的页面上,但是这个流程是怎么工作的完全依赖于处理特定扩展名的HTTP Handler是怎么实现的。在IIS中。aspx通过’应用程序扩展’(又称为脚本映射)被映射到ASP.NET的ISAPI扩展DLL-aspnet_isapi.dll。每一个请求都需要通过一个被注册到aspnet_isapi.dll的扩展名来触发ASP.NET(来处理这个请求)。

  依赖于扩展名ASP.NET将请求路由到一个合适的处理器(handler)上,这个处理器负责获取这个请求。例如,WebService的。asmx扩展名不会将请求路由到磁盘上的一个页面,而是一个由特殊属性(Attribute)标记为WebService的类上。许多其他处理器和ASP.NET安装,当然你也可以自定义处理器。所有这些HttpHandler在IIS中被配置为指向ASP.NET ISAPI扩展,并在web。config(译著:ASP.NET中自带的handler是在machine。config中配置的,当然可以在web.config中覆盖配置)被配置来将请求路由到指定的HTTP Handler上。每个handler都是一个处理特殊扩展的。NET类,可以从一个简单的只包含几行代码的Hello World类,到非常复杂的handler如ASP.NET的页面或者WebService的handler。当前,只要了解ASP.NET的映射机制是使用扩展名来从ISAPI接收请求并将其路由到处理这个请求的handler上就可以了。

  对在IIS中自定义Web请求处理来说,ISAPI是第一个也是最高效的入口。

  ISAPI连接

  ISAPI是底层的非托管Win32 API。ISAPI定义的接口非常简单并且是为性能做了优化的。它们是非常底层的-处理指针和函数指针表来进行回调-但是它们提供了最底层和面向效率的接口,使开发者和工具提供商可以用它来挂接到IIS上。因为ISAPI非常底层所以它并不适合来开发应用级的代码,而且ISAPI倾向于主要被用于桥接接口,向上层工具提供应用服务器类型的功能。例如,ASP和ASP.NET都是建立在ISAPI上的,Cold Fusion,运行在IIS上的多数Perl,PHP以及JSP实现,很多第三方解决方案(如我的Wisual FoxPro的Web连接框架)都是如此。ISAPI是一个杰出的工具,可以为上层应用提供高效的管道接口,这样上层应用可以抽象出ISAPI提供的信息。在ASP和ASP.NET中,将ISAPI接口提供的信息抽象成了类型Request和Response这样的对象,通过它们来读取ISAPI请求中对应的信息。将ISAPI想像成管道。对ASP.NET来说,ISAPI dll是非常的”瘦”的,只是作为一个路由机制来将原始的请求转发到ASP.NET运行时。所有那些沉重的负担和处理,甚至请求线程的管理都发生在ASP.NET引擎内部和你的代码中。

  作为最为协议,ISAPI同时支持ISAPI扩展和ISAPI过滤器(Filter)。扩展是一个请求处理接口,提供了处理Web服务器的输入输出的逻辑-它本质上是一个处理(事物?)接口。ASP和ASP.NET都被实现为ISAPI扩展。ISAPI过滤器是挂接接口,提供了查看进入IIS的每一个请求的能力,并能修改请求的内容或者改变功能型的行为,例如认证等。顺便提一下,ASP.NET通过了两种概念映射了类似ISAPI的功能:Http Handler类似扩展,Http Module类似过滤器。我们将在后面详细讨论它们。

  ISAPI是开始一个ASP.NET请求的最初的入口。ASP.NET映射了好几个扩展名到它的ISAPI扩展,此扩展位于。NET框架的目录下:

  <.NET FrameworkDir>\aspnet_isapi.dll

  你可以在IIS服务管理界面上看到这些映射,如图1。查看网站根目录的属性中的主目录配置页,然后查看配置|映射。

  

  图1:IIS映射了多种扩展名如。ASPX到ASP.NET的ISAPI扩展。通过这个机制请求会在Web服务器这一层被路由到ASP.NET的处理管道。

  由于.NET需要它们中的一部分,你不应该设置手动这些扩展名。使用aspnet_regiis.exe这个工具来确保所有的映射都被正确的设置了:

  cd <.NetFrameworkDirectory>

  aspnet_regiis – i

  这个命令将为整个Web站点注册特定版本的ASP.NET运行时,包括脚本 (扩展名) 映射和客户端脚本库(包括进行控件验证的代码等)。注意它注册的是<.Net FrameworkDirectory>中安装的特定版本的CLR(如1.1,2.0)。aspnet_regiis的选项令您可以对不同的虚拟目录进行配置。每个版本的.NET框架都有自己不同版本的aspnet_regiis工具,你需要运行对应版本的aspnet_regiis来为web站点或者虚拟目录来配置指定版本的。NET框架。从ASP.NET2.0开始提供了ASP.NET配置页面,可以通过这个页面在IIS管理控制台来交互的配置.NET版本。




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.