随笔 - 23  文章 - 0 评论 - 135 trackbacks - 19
<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

欢迎,第Friend Finder Dating Services位访客

与我联系

搜索

 

常用链接

留言簿

我参与的团队

我的标签

随笔分类

随笔档案

朋友

积分与排名

  • 积分 - 54707
  • 排名 - 1119

最新评论

阅读排行榜

评论排行榜

IIS 5 6以不同的方式工作

 

当一个请求来到时,IIS检查脚本映射(扩展名映射)然后把请求路由到aspnet_isapi.dll.这个DLL的操作和请求如何进入ASP.NET运行时在IIS56中是不同的.2显示了这个流程的一个粗略概览.

 

IIS5,aspnet_isapi.dll直接寄宿在inetinfo.exe进程中,如果你设置了Web站点或虚拟目录的隔离度为中或高,则会寄宿在IIS单独的(被隔离的)工作进程中.当第一个ASP.NET请求来到,DLL(aspnet_isapi.dll)会开始另一个新进程aspnet_wp.exe并将请求路由到这个进程中来进行处理.这个进程依次加载并寄宿.NET运行时.每个转发到ISAPI DLL的请求都会通过命名管道调用被路由到这个进程来.

 

2-从较高层次来看请求从IISASP.NET运行时,并通过请求处理管道的流程.IIS5IIS6通过不同的方式与ASP.NET交互,但是一旦请求来到ASP.NET管道,整个处理流程就是一样的了.

 

不同于以前版本的服务器,IIS6ASP.NET做了全面的优化

 

 

IIS6-应用程序池万岁

 

IIS6对处理模型做了意义重大的改变,IIS不再直接寄宿象ISAPI扩展这样的外部可执行代码.IIS总是创建一个独立的工作线程-一个应用程序池-所有的处理都发生在这个进程中,包括ISAPI dll的执行.应用程序池是IIS6的一个很大的改进,因为它允许对指定线程中将会执行什么代码进行非常细粒度的控制.应用程序池可以在每个虚拟路径上或者整个Web站点上进行配置,这样你可以将每个Web应用隔离到它们自己的进程中,这样每个应用都将和其他运行在同一台机器上的Web应用完全隔离.如果一个进程崩溃了,不会影响到其他进程(至少在Web处理的观点上来看是如此).

 

不止如此,应用程序池还是高度可配置的.你可以通过设置池的执行扮演级别(execution impersonation level )来配置它们的运行安全环境,这使你可以定制赋予一个Web应用的权限(同样,粒度非常的细).对于ASP.NET的一个大的改进是,应用程序池覆盖了在machine.config文件中大部分的ProcessModel节的设置.这一节的设置在IIS5中非常的难以管理,因为这些设置是全局的而且不能在应用程序的web.config文件中被覆盖.当运行IIS6,ProcessModel相关的设置大部分都被忽略了,取而代之的是从应用程序池中读取.注意这里说的是大部分-有些设置,如线程池的大小还有IO线程的设置还是从machine.config中读取,因为它们在线程池的设置中没有对应项.

 

因为应用程序池是外部的可执行程序,这些可执行程序可以很容易的被监控和管理.IIS6提供了一系列的进行系统状况检查,重启和超时的选项,可以很方便的用来检查甚至在许多情况下可以修正程序的问题.最后IIS6的应用程序池并不像IIS5的隔离模式那样依赖于COM+,这样做一来可以提高性能,二来提高了稳定性(特别对某些内部需要调用COM组件的应用来说)

 

尽管IIS6的应用程序池是单独的EXE,但是它们对HTTP操作进行了高度的优化,它们直接和内核模式下的HTTP.SYS驱动程序进行通讯.收到的请求被直接路由给适当的应用程序池.InetInfo基本上只是一个管理程序和一个配置服务程序-大部分的交互实际上是直接在HTTP.SYS和应用程序池之间发生,所有这些使IIS6成为了比IIS5更加的稳定和高效的环境.特别对静态内容和ASP.NET程序来说这是千真万确的.

 

一个IIS6应用程序池对于ASP.NET有着天生的认识,ASP.NET可以在底层的API上和它进行交互,这允许直接访问HTTP缓存API,这样做可以将ASP.NET级别的缓存直接下发到Web服务器.

 

IIS6,ISAPI扩展在应用程序池的工作进程中运行. .NET运行时也在同一个进程中运行,所以ISAPI扩展和.NET运行时的通讯是发生在进程内的,这样做相比IIS5使用的命名管道有着天生的性能优势.虽然IIS的寄宿模型有着非常大的区别,进入托管代码的接口却异常的相似-只有路由消息的过程有一点区别.

 

ISAPIRuntime.ProcessRequest()函数是进入ASP.NET的第一站

posted on 2006-08-31 09:19 tmfc 阅读(2728) 评论(12)  编辑 收藏 网摘 所属分类: ASP.NET

FeedBack:
#1楼 2006-08-31 10:52 simonw      
希望lz能给个完整的word或pdf文档下载的.
  回复  引用  查看    
#2楼[楼主] 2006-08-31 10:54 tmfc      
@simonw
很好的建议,等全部整理完一定给出。:)

  回复  引用  查看    
#3楼 2006-08-31 11:10 t o m[未注册用户]
扮演级别(?)
应该是Identity吧

  回复  引用    
#4楼[楼主] 2006-08-31 11:30 tmfc      
@t o m
已经将原文补上,原文为execution impersonation level ,可能是指设置运行应用程序池的用户帐号吧(在IIS6的应用程序池设置页中为标识,也就是tom所说的Identity),我对于windows的安全机制不是非常熟悉,所以这里也理解的不是很透彻。

  回复  引用  查看    
不错,支持一下,不过有很多还是看不懂,我看了一下,不过,对于我们开发程序来说,好像不会有什么好处吧,好像都没有办法用到
  回复  引用    
路过
  回复  引用    
#7楼[楼主] 2006-08-31 13:02 tmfc      
@sunny[匿名]
谢谢你的支持。(一)已经提到过“对我而言了解平台的内幕通常会带来满足感和舒适感,深入了解也能帮助我写出更好的应用.知道可以使用哪些工具以及他们是怎样作为整个复杂框架的一部分来互相配合的可以更容易地找出最好的解决方案,更重要的是可以在出现问题时更好的解决它们”,作为一个技术人员,我想都会想了解系统底层是怎么运行的吧,而且开发到一定程度之后会发现这些东西还是很有用处的。

  回复  引用  查看    
#8楼 2006-08-31 14:20 tom      
期待第四部分
虽然我已经看了原文了 :)

  回复  引用  查看    
#9楼[楼主] 2006-08-31 14:28 tmfc      
@tom
哈哈,看过原文的话正好可以给我做个检查啊,有翻译的不对的地方就请您多多指正了。

  回复  引用  查看    
支持一下
  回复  引用  查看    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 490755




相关文章:

相关链接: