全部博文(141)
分类: 嵌入式
2012-04-27 21:32:03
系列文章:
今天的文章的比较的容易,主要讲述IIS中三个比较重要的组件:协议监听者(Protocol Listeners),WWW服务(World Wide Web Publishing Service)和WAS(Windows Process Activation Service),理解这三个组件的功能,是理解IIS的必须的知识。
下面,我们首先来看第一个。
协议监听者(Protocol Listeners)
我们知道,很多不同类型的应用程序都需要它们的客户端以不同的协议与它们进行通信,我们稍微简单的来举几个例子让大家明白:
在这里各种不同类型的应用中,协议监听者就是一个负责监听特定协议的请求,然后把请求传递给IIS的组件。每一个协议都有它自己的监听者。IIS7中包括了四个协议的监听者:HTTP.SYS,NET.TCP,NET.PIPE和NET.MSMQ。如果要对其他的协议进行监听,那么可以采用PlugIn的方式写新协议的监听者组件,然后插入到IIS7中(就是采用所谓的“插件式”方式)。
IIS 7中采用了HTTP.SYS来对HTTP请求进行监听,同时在安全性方面也有了改进,因为它也可以对SSL的请求进行监听。另外,对于HTTP.SYS,在IIS6和IIS7中都支持一下功能:
下面,我们来看第二个组件。
WAS(Windows Process Activation Service)
WAS的主要的职责就是去读取applicationHost.config配置文件中的配置项。有些配置项是用来配置协议监听者的。在之前我们讨论过,每一个协议都有一个监听者(在IIS6中,可以支持的协议只有HTTP协议,在IIS7中因为引入了插件式的协议监听者的方式,所以可以处理很多的协议,如果大家还记得话,要把WCF部署在IIS6中,那么就只能通过HTTP协议)。
如果WAS直接与每个特定的协议监听者交互,那么WAS就与这些协议的监听者仅仅的耦合在了一起,不能与其他的协议监听者交互(因为我们无法修改WAS的代码,除非微软发布新的版本)。所以在IIS7中,在这里就引入了协议监听适配器,其实就是采用了adapter模式了。让WAS依赖抽象,而不是依赖具体的实现。
协议监听适配器将WAS与具体的协议的监听者隔离。那么每一个协议都有一个协议的适配者。例如HTTP协议的适配者知道如何去适配HTTP.SYS,如果对设计模式比较熟悉的朋友,应该非常清楚这一点了。
WAS读取applicationHost.config配置文件中的配置信息,然后把这些信息用在协议监听适配者上。协议监听适配者采用这些配置的信息来监听特定通道的请求。
WAS除了读取配置信息以外,它还负责其他一些比较重要的职责:
理解了上面的内容之后,那么现在应该就非常清楚IIS中请求的处理流程了:
WWW服务(World Wide Web Publishing Service)
WWW服务的功能从IIS6到IIS7发生了很大的变化。一个最主要的变化就是WWW服务可以支持多个协议监听者,而不是仅仅只是支持一个HTTP.SYS。这个重大的改变使得我们在IIS中宿主WCF,并且支持多个协议成为可能。
在IIS6中,WWW服务的职能如下:
我们可以很快的发现:在上述列出的WWW服务的职能中,最后两个职能其实与HTTP协议没有多大的关系。换句话说,如果应用程序池和工作进程可以接受如何类型协议的请求,那么,WWW服务最后的那两个功能其实与协议无关。这里就有点功能的杂糅了。
在IIS7中,最后的两个智能就从WWW服务中剥离出去,就成为了我们之前谈的WAS。也就是说,在IIS6中,是没有WAS这个明确的组件的,因为这个组件的功能被包含在了WWW服务中。
把IIS6中WWW服务的最后两个功能分离之后,就可以让WAS去为所有的协议服务,而不仅仅只是为HTTP协议。
OK,IIS的基础知识算是普及完毕了,我们下一篇就可以进入正题了。、
本篇的pdf可以在这里下载: