知识大全 ASP.NET底层架构之从浏览器到ASP.NET

Posted

篇首语:读书是易事,思索是难事,但两者缺一,便全无用处。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET底层架构之从浏览器到ASP.NET相关的知识,希望对你有一定的参考价值。

ASP.NET底层架构之从浏览器到ASP.NET  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     让我们从一个典型的ASP NET Web请求的生命周期的起点开始 当用户输入一个URL 点击了一个超链接或者提交了一个HTML表单(form)(一个POST请求 相对于前两者在一般意义上都是GET请求) 或者一个客户端程序可能调用了一个基于ASP NET的WebService(同样由ASP NET来处理) 在Web服务器端 IIS 或 获得这个请求 在最底层 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中配置的 当然可以在nfig中覆蓋配置)被配置来将请求路由到指定的HTTP Handler上 每个handler都是一个处理特殊扩展的 NET类 可以从一个简单的只包含几行代码的Hello World类 到非常复杂的handler如ASP NET的页面或者WebService的handler 当前 只要了解ASP NET的映射机制是使用扩展名来从ISAPI接收请求并将其路由到处理这个请求的handler上就可以了        对在IIS中自定义Web请求处理来说 ISAPI是第一个也是最高效的入口        ISAPI连接        ISAPI是底层的非托管Win 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服务管理界面上看到这些映射 如图 查看网站根目录的属性中的主目录配置页 然后查看配置|映射      图 :IIS映射了多种扩展名如 ASPX到ASP NET的ISAPI扩展 通过这个机制请求会在Web服务器这一层被路由到ASP NET的处理管道        由于 NET需要它们中的一部分 你不应该设置手动这些扩展名 使用aspnet_regiis exe这个工具来确保所有的映射都被正确的设置了:        cd < NetFrameworkDirectory>        aspnet_regiis – i        这个命令将为整个Web站点注册特定版本的ASP NET运行时 包括脚本 (扩展名) 映射和客户端脚本库(包括进行控件验证的代码等) 注意它注册的是< Net FrameworkDirectory>中安装的特定版本的CLR(如 ) aspnet_regiis的选项令您可以对不同的虚拟目录进行配置 每个版本的 NET框架都有自己不同版本的aspnet_regiis工具 你需要运行对应版本的aspnet_regiis来为web站点或者虚拟目录来配置指定版本的 NET框架 从ASP NET 开始提供了ASP NET配置页面 可以通过这个页面在IIS管理控制台来交互的配置 NET版本  做人要厚道 请注明转自酷网动力( ASPCOOL ) cha138/Article/program/net/201311/12692

相关参考

知识大全 ASp.net 剖析三层架构

ASp.net剖析三层架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 ASP.NET多频道网站架构实现方法[1]

ASP.NET多频道网站架构实现方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!主体架构 

知识大全 ASP.NET项目开发指南:系统架构

ASP.NET项目开发指南:系统架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 ASP.NET网站开发的架构设计

ASP.NET网站开发的架构设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET网站

知识大全 另类的ASP.NET快速开发架构体系

另类的ASP.NET快速开发架构体系  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JVPL和m

知识大全 ASP.NET多频道网站架构实现方法[2]

ASP.NET多频道网站架构实现方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  经验分

知识大全 Asp.net多频道网站开发架构浅析

Asp.net多频道网站开发架构浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们打开门户

知识大全 大型高性能ASP.NET系统架构设计

大型高性能ASP.NET系统架构设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Web前端系

知识大全 ASP.NET项目开发指南:Blog系统架构

ASP.NET项目开发指南:Blog系统架构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &n

知识大全 主攻ASP.NET.3.5.MVC架构之重生

主攻ASP.NET.3.5.MVC架构之重生  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs