IIS 7.0对请求的监听和分发机制上又进行了革新性的改进,主要体现在对于Windows进程激活服务(Windows Process Activation Service,WAS)的引入,将原来(IIS6.0)W3SVC承载的部分功能分流给了WAS。
对于IIS 6.0来说,W3SVC主要承载着三大功能:
· HTTP请求接收:接收HTTP.SYS监听到的HTTP请求;
· 配置管理:从元数据库(Metabase)中加载配置信息对相关组件进行配置;
· 进程管理:创建、回收、监控工作进程。
在IIS 7.0,后两组功能被移入WAS中,接收HTTP请求的任务依然落在W3SVC头上。
WAS的引入为IIS 7.0一项前所未有的特性:同时处理HTTP和非HTTP请求。在WAS中,通过一个重要的接口:监听器适配器接口(Listener Adapter Interface)抽象出不同协议监听器监听到的请求。
至于IIS下的监听器,除了基于网络驱动的HTTP.SYS提供HTTP请求监听功能外,WCF提供了3种类型的监听器:TCP监听器、命名管道(Named Pipes)监听器和MSMQ监听器。
从这个意义上讲,IIS 7.0中的W3SVC更多地为HTTP.SYS起着监听适配器的功能。
WCF提供的这3种监听器和监听适配器定义在程序集SMSvcHost.exe中,你可以通过下面的目录找到该程序集:%windir%\Microsoft.NET\Framework\v3.0\Windows CommunicationFoundatio。
WCF提供的这3种监听器和监听适配器最终以WindowsService的形式体现,虽然它们定义在一个程序集中,我们依然通过服务工作管理器(SCM,Service Control Manager)对其进行单独的启动、终止和配置。
SMSvcHost.exe提供了4个重要的WindowsService:
ü NetTcpPortSharing:为WCF提供TCP端口共享;
ü NetTcpActivator:为WAS提供基于TCP的激活请求,包含TCP监听器和对应的监听适配器;
ü NetPipeActivator:为WAS提供基于命名管道的激活请求,包含命名管道监听器和对应的监听适配器;
ü NetMsmqActivator:为WAS提供基于MSMQ的激活请求,包含MSMQ监听器和对应的监听适配器。