动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ ASP.NET技巧 ]的信息



本月文章推荐
.Web应用程序ASP.NET开发电子商务.
.ASP.NET中如何调用存储过程.
.ASP.Net全局变量的设置和读取方法.
.asp.net如何连接sql server2000数.
.在ASP.NET中创建安全的web站点(.
.关于2.0 中的用户控件编程使用.
.page事件顺序(.net2.0) .
.求素数(质数)的算法.
.利用ASP.NET的内置功能抵御Web攻.
.ASP.NET实现匿名访问控制.
.关于asp.net c#中对cookie的操作.
.DataSet 添加数据集、行、列、主.
.ASP.NET2.0中使用数据源控件之基.
.如何在GridView中一次性批量更新.
.用post方法从网上抓取信息.
.获取本机上配置好的Oracle服务名.
.ASP.Net使用缓存技术提高效率.
.用GZip压缩和解压.
.windows 2003下asp.Net站点无法使.
.Login控件在UpdatePanel内当验证.

ASP.NET的本质之IIS以及进程模式

发表日期:2007-9-6 |


  ASP.net对于编写WEB应用程序以及组件来说是一个很好的框架,但是由于他的庞大性对于很多人来说要了解他的每一个细节好象是否不太可能,我一直认为有必要了解一下基层结构的工作原理以便在设计时获取更高的性能,在接下来的一系列文章中,我将要描叙一下WEB的生命周期,从当请求被服务器接受开始,传送到ASP.net管道处理一直到生成回送信息(如:HTML)在管道处理后期。

  介绍

  Microsoft Active Server Pages(微软动态网页服务),同样也被大家称为ASP,首先是在1996年末年发布的,为程序员提供一个用来建立WEB应用程序丰富复杂的框架。几年后,他的基础构造发展改进了很多,也就是大家现在所了解的ASP.net.ASP.net是一个用来构件WEB应用程序的框架,也就是说,他必须运行在WEB服务上,用客服端-服务端模型了表述的话通常是浏览器发送不同类型的资源请求到WEB服务器。在出现动态服务器资源生成技术(如CGI,PHP,JSP以及ASP),所有的WEB服务只能接受客服端的静态资源请求并把他们回送到客服端。

  表面上看起来,这样在服务端和客户端的交互是非常的简单。会话通过HTTP协议进行,他是一个建立在TCP和IP协议(用来在2个连接到不同类型的网络端点交换数据,如我们所知道的WWW万维网)上的应用程序级协议。

  本质上任何动态服务器技术需要运行在特定WEB服务上,同样ASP.net紧密地和微软因特网信息服务,也叫做IIS。

  不同的服务选择不同的方式去生成动态资源等等。。。我们将要解析一下IIS是怎么做到的当一个请求信息一旦到达服务端以及最后回送到客户端。

  IIS and ISAPI 扩展

  如上面提到的,静态资源不需要被服务器处理;一旦这样的资源请求到达服务器,服务器只需要从文件系统中找到他的内容并且以字节流形式发送到客户端通过HTTP协议。静态资源可以是图片,javascript,CSS或者普通HTML页面。很显然服务器需要知道怎样去区分静态和动态资源,动态资源需要如何被处理而不是直接发送回客户端。因此出现了ISAPI扩展,ISAPI是因特网服务应用程序编程的接口。ISAPI作为模块被执行如早期的Win32.dll.IIS依靠ISAPI来处理特定的资源。通过IIS映射ISAPI扩展和文件的方式,把每种文件扩展类型关联到特定的ISAPI扩展,也就是说,当一个请求某种文件的请求到达,IIS处理并转到相应的ISAPI扩展,以确认这种请求能被处理。

  图表1:在IIS5.0中配置ISAPI扩展映射

  

  ISAPI扩展明显需要符合一个通用接口,这样他们才能被IIS调用并提供必要的数据用来处理请求和生成回送。

  如图1,.ASP扩展名被映射到asp.dll ISAPI扩展;在ASP处理时段,这个组件负责执行所有需要的任务去生成回送,也就是说,通过收集请求信息,并使得他能够在ASP页面可用,其他ASP内部对象,解析并执行ASP页面最后以HTML形式返回结果。

  尽管,这样相对于CGI技术来说已经是很大的进步了,但是ASP.net更强大。

  在安装ASP.net后,ASP.net配置IIS 把ASP.net指定的文件请求重定向到一个新的ISAPI扩展aspnet_isapi.dll.这个扩展有些不同于以前的asp.dll扩展。

  表格I:aspnet_isapi.dll在IIS应用程序中的映射

  ExtensionResource Type

  .asaxASP.NET 应用程序文件. 常用的有 global.asax.

  .ascxASP.NET 用户控件文件.

  .ashxHTTP handlers, the managed counterpart of ISAPI extensions.

  .asmxASP.NET web services.

  .aspxASP.NET web pages.

  .axdASP.NET internal HTTP handlers.

  除了表格1所列出的文件扩展名,ASP.net ISAPI扩展也管理其他一些通常不提供给浏览器访问的文件扩展类型,如Visual Studio工程文件,资源文件以及配置文件。

  ASP.NET处理模型

  到目前为止,我们已经明白当请求一个asp.net文件的请求传到IIS后,他被转递到aspnet_isapi.dll,他是asp.net相关处理的主要入口点。实际上,这个扩展明显依赖于系统上IIS的版本,因此处理模型是通过asp.net运行时通过有序的操作执行来处理请求并生成回送,也许有那么一点改变。

  在IIS5.X,所有asp.net相关请求通过ISAPI扩展被分配到外部工作进程叫做aspnet_wp.exe.ISAPI扩展,在IIS进程(inetinfo.exe)中运行,再传递控制权连同所有关于当前传入请求的信息到aspnet_wp.exe。2个进程间的通信通过命名管道(众所周知IPC[内部进程通信]机制建立。ASP.NET工作进程执行ISAPI扩展的大部分任务。注意一下每个WEB应用程序的实质,以及与IIS下不同虚拟目录的通讯,他们在asp.net工作进程同一个进程的上下文中被执行。为了实现读取各自执行中上下文ASP.net引入了应用程序域的概念,缩写AppDomains.他们可以被认为是一个轻量级的进程。更多的将在后面介绍。

  如果运行在IIS6上,aspnet_wp.exe进程没有被使用,选择一个更优的进程叫做w3wp.exe.同时,inetinfo.exe也不再用来传递HTTP请求到ISAPI扩展,尽管这样他还是保持为其他协议的请求提供服务。虽然IIS6能够运行在兼容模式下并且模拟之前的行为,但是相对于先前的IIS5处理模型有了很多的变化。相对早期最大改变,当处理模型运行在IIS5上,传入进来的请求以lower-kernel-level形式然后传递到正确的ISAPI扩展,从而避免在内部信息处理方面花费过多的操作。在下面的段落中,我们将进行更深入的研究。

  IIS5.0 处理模型

  在windows2000以及XP系统上这是默认的处理模型。如上所说他有IIS inetinfo.exe进程默认在TCP端口80监听传入的HTTP请求并且把他们推送进队列等待处理。如果请求类型是asp.net,处理将委托给asp.net isapi扩展 aspnet_isapi.dll.这样轮流通过命名管道与asp.net工作进程通信,最终工作进程处理并传递请求到asp.net HTTP运行时环境。图表2将具体描叙这个过程。

  图表2:IIS5.0处理模型

  

  图表2显示一个我们尚未提到过的元素—ASP.NET HTTP运行时环境。目前他并不是我们这编文章的主题,他将在接下来的文章中被解析。HTTP运行时可以被看作一个黑色盒子,所有ASP.NET指定处理在这里发生,所有的受管制代码运行场所,从HTTP运行时一直到httphandler最终处理请求并生成回送都在这里被处理。这里还涉及到asp.net管道或http运行时管道。

  就这个模型有一个有趣的地方就是所有请求,一旦被ISAPI扩展处理,就被传递到asp.net工作进程。每次活动时间有且仅有一个进行实例,一个例外,后面讨论。因此所运行在IIS上的asp.net web应用程序实际上也运行在工作进程上。尽管如此,这并不意味着所有应用运行在同一个上下文上并共享他们所有的数据。值得一提,asp.net引入APPDomain概念,本质上是一种提供独立和安全边界的受管制轻量级进程。每个IIS虚拟目录在一个APPDomain里执行,他将自动加载到工作进程只要资源是属于第一次请求的应用程序。一旦appdomain被加载,换句话说,当前请求所有需要的程序集被加载到appdomain–实际上是传递到asp.net管道处理。若干appdomains能够这样运行在同样的进程中,当多个请求对于同样的appdomain能够在多个线程出来。尽管如此,一个线程并不属于一个appdomain,他能为多个不同的appdomians处理多个请求,但是同一个给定的时间一个线程属于一个APPdomain.

  处于性能目的,工作线程能够根据一些标准(通过MACHINCE.CONFIG文件配置)被回收。这些标准包括进程生命周期,请求以及队列数量,空闲时间,内存分配。一旦达到这些参数中一项临界值,ISAPI扩展将生成一个新的工作进程实例用来处理请求。实际上,先前的进程实例并没有被关闭,但是他被终止服务等待的请求。

  IIS6.0处理模型

  IIS6是WINDOWS2003系统默认的。在IIS5处理模型的上他有几个改变和改进。其中之一最大改变就是应用程序池概念。在IIS5系列应用程序上,即所有的appDomains—运行在asp.net工作进程上。为了在安全以及特性上完成一个出色的界定,IIS6处理模型允许应用程序运行在同一个工作进程的不同拷贝上。每个应用程序池能够包含多个appdomains(运行在单独一个工作进程拷贝上).换而言之,这个变化是从单一进程运行所有程序到多个进程运行每一个应用池。这个模型也叫做工作过程隔离模式。

  例外一个大变化相对先前的模型在IIS监听所有传入数据方面。在IIS5里,由IIS进程,inetinfo.exe监听指定的TCP端口。在IIS6中,传入请求被处理并队列在核心级别来替换先前通过核心驱动调用http.sys的用户模式;这种方法有几个优势相对于先前的模式被叫作 kernel-level 请求队列。

  图表3 IIS6处理模型

  

  图表3主要由请求处理组成。一旦一个请求到达核心级别设备驱动http.sys,然后发送到相应的应用程序池队列,每个队列属于一个指定的应用程序池。

  工作进程负责加载asp.net ISAPI扩展,依次加载 CRL 委派所有工作到HTTP运行时。

  W3WP.exe进程与IIS5下面的aspnet_wp.exe不同,他不是asp.net特有的,能够用来处理任何类型的请求。什么样的ISAPI模块被加载类型根据需要的服务资源类型。

上一篇:asp.net如何连接sql server2000数据库 人气:6753
下一篇:ASP.NET构架与安全机制之Http请求处理 人气:3770
浏览全部ASP.NET的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-23 Menalto Gallery v2.3 Rc1 多国语
2008-7-23 深度学习网址导航系统 v2.6.1
2008-7-23 因特达crm2008客户关系管理系统
2008-7-23 60度 CMS v1.0 Build 080723
2008-7-23 幻影动漫网视频系统(Ppdong) v1.
2008-7-23 好易祝福墙 2008
2008-7-23 APJE私服发布系统 v2.0 PHP版
2008-7-23 毕业论文在线指导系统源码
2008-7-23 Jacky法律在线网站源码
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵