`
webcode
  • 浏览: 5948619 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ASP.NET的运行原理与运行机制

 
阅读更多

当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块。在ASP.NET 3.5中,这个模块叫做HttpHandler(HTTP处理程序组件),之所以.aspx文件可以被服务器处理,就是因为在服务器端有默认的 HttpHandler专门处理.aspx文件。IIS在将这条请求发送给能够处理这个请求的模块之前,还需要经过一些HttpModule的处理,这些都是系统默认的Modules(用于获取当前应用程序的模块集合),在这个HTTP请求传到HttpHandler之前要经过不同的HttpModule 的处理。这样做的好处,一是为了一些必需的过程,二是为了安全性,三是为了提高效率,四是为了用户能够在更多的环节上进行控制,增强用户的控制能力。 ASP.NET 3.5运行原理如图1.1所示。

图1.1 ASP.NET 3.5运行原理

说明:HttpModule模块是一个组件,可以注册为ASP.NET 3.5请求生命周期的一部分,当处理该组件时,该组件可以读取或更改请求或响应。HttpModule模块通常用于执行需要监视每个请求的特殊任务,如安全或站点统计信息。

ASP.NET 3.5运行机制如图1.2所示。

通常情况下,ASP.NET框架搭建在Windows Server(服务器版操作系统)+IIS(Web服务器,是Internet信息服务管理器的英文缩写)环境中,在安装.NET Framework时,安装程序将会在IIS中注册ASP.NET所需的ISAPI扩展(aspnet_isapi.dll),这就使得作为 ASP.NET宿主的IIS在接收到客户端的HTTP请求后,将响应请求的控制权交给ASP.NET运行。

ASP.NET运行时接收到请求后,会判断站点是否为第一次被访问,如果是第一次访问,则运行初始化工作(如加载Bin目录中的DLL动态链接库,读取Web.Config网站配置文件,初始化HttpApplication实例,编译和加载Global.asax文件等)。ASP.NET运行时还负责创建请求响应线程的HttpContext上下文实例和创建承载响应结果的HttpTextWriter实例。然后,ASP.NET运行时寻找合适的 HttpHandler(通常就是具有的ASP.NET页面)处理HTTP请求,并等HttpHandler返回请求处理结果。最后,ASP.NET运行时在完成一些后续工作之后,如保存Session、异常处理,再通过IIS把响应结构返回给客户端。

图1.2 ASP.NET 3.5运行机制

注意:ASP.NET ISAPI工作的主要任务就是安排ASPNET_WP.exe处理请求,并监视ASPNET_ WP.exe进程的执行情况,如果ASPNET_WP.exe进程不能完成任务,ASP.NET ISAPI就安排一个新的ASPNET_WP.exe来处理工作。ASPNET_WP.exe的主要任务是将请求交给一系列称为HTTP管道的托管对象。如果把ASP.NET ISAPI比做销售商,那么ASPNET_WP.exe就是生产商,而HTTP管道就是生产的流水线,负责流水线的小组就是HttpRuntime。生产商ASPNET_WP.exe会将订单(HTTP请求)交给HttpRuntime小组的工作人员 ProcessRequest(HttpWorkerRequest wr),HttpRuntime根据内部的分工,最终由ProcessRequestInternal(HttpWorkerRequest wr)在流水线上进行生产。

分享到:
评论

相关推荐

    asp.net运行原理

    asp.net的运行原理图,前人总结的,简单易懂,大家可以瞧瞧。

    HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】

    相对来说TCP协议是基于连接和三次握手的(相对可靠与安全),然而B/S架构的网站,由于同时在线的人数会很多,如果都与服务器保持连接状态.服务器的承载是相当大的, 因而衍生出HTTP协议.简单的说:请求发起之后服务器端立刻...

    模拟ASP.NET MVC是如何运行过程

    为了更好的演示其实现原理,我创建一个简单的ASP.NET Web应用来模拟ASP.NET MVC的路由机制。这个例子中的相关组件基本上就是根据ASP.NET MVC的同名组件设计的,只是我将它们进行了最大限度的简化,因为我们只需要用...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    ASP.NET Web API 2框架揭秘

    ASP.NET Web API 2框架揭秘是一本注重实证的书,功能各异、多达120个可供下载的示例,大量实践与实用性扩展,可直接用于解决实际开发问题。全新的学习方法,通过完整论证来实现彻底的融会贯通。本书可以作为讲设计...

    asp.net教学讲义

    6.2.2母版页运行机制 98 6.2.3 母版页的优点 100 6.3 创建母版页 100 6.4 创建内容页 102 6.5 皮肤和主题的概念 104 6.6 样式的应用 105 6.6.1 对单独页面元素使用样式 105 6.6.2 将样式移动到样式表 105 6.6.3 样式...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术part1

    如果扎实地掌握了ASP.NET控件的运行机制,开发一个页面级的ASP.NET应用程序会变得非常简单。《庖丁解牛:纵向切入ASP.NET3.5控件和组件开发技术》宗旨就是让开发人员真正理解ASP.NET技术,帮助开发人员提高ASP.NET...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术part2

    如果扎实地掌握了ASP.NET控件的运行机制,开发一个页面级的ASP.NET应用程序会变得非常简单。《庖丁解牛:纵向切入ASP.NET3.5控件和组件开发技术》宗旨就是让开发人员真正理解ASP.NET技术,帮助开发人员提高ASP.NET...

    ASP.NET3.5从入门到精通

    1.1.2 ASP.NET 与ASP 1.1.3 ASP.NET 开发工具 1.1.4 ASP.NET 客户端 1.1.5 ASP.NET 3.5 新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) ...

    ASP.NET 3.5 开发大全

    1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    1.1.4 要点4:ASP.NET运行在公共语言运行库内 1.1.5 要点5:ASP.NET是面向对象的 1.1.6 要点6:ASP.NET支持所有的浏览器 1.1.7 要点7:ASP.NET易于部署和配置 1.2 ASP.NET的演变 1.2.1 ASP.NET1.0和ASP...

    ASP.NET 3.5 开发大全word课件

    1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...

    ASP.NET+AJAX实现进度条上传文件

    通过asp.net缓存机制实现,上传的过程中,不断的将上传信息往缓存里面写,直到文件上传完成,而在另外一个通过guid获取缓存的信息,信息包括你想要的信息,比如上传了多少字节、消耗了多长时间等。

    ASP.NET4高级程序设计(第4版) 3/3

    1.1.4 要点4:ASP.NET运行在公共语言运行库内 6 1.1.5 要点5:ASP.NET是面向对象的 7 1.1.6 要点6:ASP.NET支持所有的浏览器 8 1.1.7 要点7:ASP.NET易于部署和配置 8 1.2 ASP.NET的演变 9 1.2.1 ASP.NET...

    ASP.NET 3.5 开发大全11-15

    1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    12.1 asp.net模板属性控件机制 463 12.1.1 模板属性介绍 463 12.1.2 asp.net对模板控件的支持 464 12.1.3 repeater控件模板实现机制解析 466 12.2 自定义控件应用示例 469 12.2.1 模板控件功能 469 12.2.2 ...

    ASP.NET 3.5 开发大全1-5

    1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...

    asp.net 仿PetShop的Reapter控件分页功能

    使用.net 2003和MS SQL ...尽管.net中已经提供了一些控件实现了自动的分页功能,但我自己感觉要想真正成为编程高手,不仅仅懂得去用,还应该了解运行的原理和机制。像DataGrid等其他控件的分页功能,应该是这个原理!

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    11.1.2 母版页运行机制 11.2 创建母版页 11.3 创建内容页 11.4 本章小结 第12章 WebPart部件 12.1 WebPart基础知识 12.1.1 WebPart部件概述 12.1.2 W曲部件具体应用 12.1.3 Web部件基本控件 12.2 创建...

Global site tag (gtag.js) - Google Analytics