前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习asp.net_IIS6.0进程模型

学习asp.net_IIS6.0进程模型

作者头像
习惯说一说
修改2019-08-09 09:45:54
1.7K0
修改2019-08-09 09:45:54
举报

如果Web服务器操作系统是Windowsserver2003,则IIS6.0进程模型是asp.net的默认选择。其名称明确之处,该模型需要IIS6.0、然后,在windows2003的服务器上,仍然可以让asp.net遵守IIS5.0进程模型的规则。可以通过修改machine.config文件中的<processModel>节,显示的启用该模型。

  <processModelenable="true">

  当然,我并不建议且滑倒IIS5.0进程模型,虽然这样做是合法的。主要原因在于:IIS6.0利用不同的内部模块的管道来处理一个入站请求,并且只有在仿真模式下运行时才能模仿IIS5.0的行为。IIS6.0管道以一个名为完wp.exe的工作进程为中心。所有被分配给同一个应用程序池的Web应用程序共享该可执行进程的一个副本。用IIS6.0的行话来说,一个应用程序池是一组共享相同的工作进程的副本的Web用用程序。IIS6.0使我们能够指定应用程序池,以实现Web服务器上托管的各应用程序所需的隔离程度。

  w3wp.exeworker进程加载aspn_isapi.dll;该ISAPI扩展又加载通用语言运行库(CLR),并启动ASP.NET运行库管道来处理该请求。当IIS6.0进程模型正在使用时,内置的ASP.NET工作进程会被禁用。

  注意:只有asp.net1.1完全利用IIS6.0进程模型。如果把asp.net1.0安装到一台windows2003机器上,则默认的进程模型是IIS5.0进程模型。之所以会这样,是因为asp.net1.1所带的aspnet_isapi.dll能够识别它的宿主,并根据需要加载CLR。asp.net1.0所带的aspnet_isapi.dll只能把请求转发给asp.net工作进程,绝对不会加载CLR。

  下图为IIS6.0进程模型

  IIS6.0作为内核级模块实现其HTTP监听程序。因此,所有的输入请求首先由http.sys驱动程序以内核模式进行管理。没有任何的第三方代码会与该监听程序交互,并且没有任何的用户模式冲突会影响IIS的稳定性。http.sys驱动程序监听请求,并把他们投递到合适的应用程序池的请求队列。一个称为饿哦Web管理服务的模块读取IIS冤苦,并指示http.sys驱动程序创建与元库中所注册应用程序池一样多的请求队列。

  总之,在IIS6.0进程模型下,asp.net运行的更快,因为在inetinfo.exe可执行进程和工作进程之间,不需要任何进程间的通信。http请求直接在托管CLR的工作进程中被交付。此外,asp.net工作进程不是一个特俗进程,它只是IIS工作进程的一个副本。这一事实将进程回收、页面输入缓存和运行状况检查的负担(转交给IIS)。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档