| IIS
|
Apache
独立的请求处理机制
是
是(有限)
MPM
是
是
线程支持
是
是(在适当的操作系统上)
三、动态组件
在IIS中,开发动态应用的主要工具是ASP,ASP实际上是一种允许将代码嵌入到HTML页面的解决方案的统称。服务器根据客户端的请求解析ASP页面,将ASP页面生成的HTML结果发回到客户端。ASP系统允许开发者使用各种编程语言,包括Visual Basic、VBScript、JavaScript、Java和C/C++,还有各种源代码开放的编程语言,诸如Perl和Python。另外,IIS继续支持传统的CGI应用开发方式,还有以ISAPI筛选器为特征的IIS特有的筛选、执行系统。
Apache的设计目标也是支持多种编程语言,或者通过CGI模式执行,或者直接将语言解释器嵌入到Apache环境然后以动态模块调用的形式执行,对于用PHP、Perl和Python之类语言编写的动态组件,这种处理方式显著地提到了性能。
这两种系统都支持JSP模型,而且大多数JSP应用程序只要很少的修改就可以在两种平台之间迁移。其他一些语言也相似,但效果各不相同,例如只要安装了ChilliSoft ASP组件(www.chillisoft.com),Unix平台也同样能够支持ASP。
当前,Unix还不能支持的一项特性是Microsoft.NET环境。IIS 6.0和Windows Server 2003不仅大量地应用了.NET框架技术,而且已经与.NET框架紧密结合。
特性
IIS
Apache
ASP
是
使用ChilliSoft ASP
CGI
是
是
Perl
是
是
Python
是
是
PHP
是
是
JSP
是
是
集成.NET支持
是
否
四、安全和验证
IIS因其与操作系统的紧密结合而获益良多,Windows中配置、管理和验证用户的系统同时也为IIS服务器提供了安全和验证服务,由于只需要管理一个安全系统,管理负担大大减轻。同时,在适当的配置下,用户只要登录到Windows,就可以同时通过Intranet自动登录到IIS服务器上的应用。
由于整个操作系统以及IIS服务器都使用同一个身份验证系统,所以分配Web网站所在文件系统的访问权限也很方便。例如,当用户登录到Web应用,他访问网站各个目录的权限也已经由用户和组的授权情况决定。
相比之下,Apache的安全和管理系统不象IIS那样与操作系统紧密结合在一起。虽然有一些模块和适配器能够支持各种不同的验证和安全资源,包括活动目录(Active Directory)、Unix密码文件、LDAP服务器,但从整体上看,Apache服务器与它所支持的操作系统的分离程度比较大。例如,当用户身份用Unix密码文件验证时,Apache仍会忽略底层文件系统上设置的文件权限。
从通信安全的角度来看,两种Web服务器都支持SSL加密技术,允许使用IPSec技术。
特性
IIS
Apache
安全登录
是
是
SSL
是
是
基本验证
是
是
摘要验证
是
是
LDAP验证
是
是,需要第三方模块的支持
活动目录验证
是
是,需要第三方模块的支持
Passport验证
是
否
五、性能
性能评测向来很困难,因为不管待评测的系统是多么相似,配置方面稍作改动,性能就可能发生极大地变化。虽然在同样的硬件上一律采用默认设置也能评出一个“优胜者”,但这不能反映出被评测系统真正的性能。同样地,我们还可以配置出这样的一个IIS服务器和一个Apache服务器,或者使其具有优异的性能,或者使其具有低劣的性能,但仍不能获得真正有价值的性能评比结果。
因此,一种更好的办法也许是分析各个系统的性能潜力。IIS集成了大量改善性能的特性,在多处理器系统上工作进程模式显著地提高了性能,ASP和ISAPI扩展使得应用程序能够从处理请求的进程直接运行。另外,以内核模式运行的http.sys也能够从缓冲区或磁盘将静态内容或简单的动态内容直接提供给客户端,避免了将请求转发给工作进程的开销。
Apache同样也有类似的功能。Apache能够缓冲许多信息,mod_perl和mod_php之类的工具使得动态页面和模板页面的执行速度几乎达到了静态页面的水平。这些模块类似于IIS环境中的ASP和ISAPI筛选器,直接把解释器嵌入到了Apache执行环境之中,避免了调用外部应用程序的开销,极大地提高了性能。
特性
IIS
Apache
内存缓冲
是
是
磁盘缓冲
是
否
内建的执行支持
是,需要合适的ISAPI筛选器
是,需要合适的模块
带缓冲的执行支持
是,需要ASP/ASP.NET
是,需要mod_perl等模块
六、管理
两种Web服务器系统在管理方面的差别很大。管理Apache的主要途径是编辑文本格式的配置文件,虽然有许多命令行工具、Web工具和GUI界面的工具可供选用,但它们实际上都依赖于文本配置文件来更新配置信息。例如,Comanche就为Apache系统提供了一个完善的管理界面。gui.apache.org提供了各种工具的清单。
用文本文件提供配置信息有其优点,例如很容易在多台机器之间实现配置信息共享,可以方便地将配置信息从一个文件复制到另一个配置文件。当然缺点也有,例如配置文件比较容易损坏。如果不进行“软”重启,Apache不能使用修改后的配置信息,所以在重新启动Apache之前,管理员必须确保配置信息确实有效,这可以借助内建的测试机制来完成。
相比之下,IIS提供的系统配置工具就要丰富多了。虽然底层的配置信息主要保存在XML格式的文本文件之中,但IIS允许管理员在系统运行的时候修改配置和底层的文件。由于配置文件是XML格式,结构要比普通文本文件严格得多,同时又有足够的灵活性支持各种不同的配置需要。为便于远程支持,Windows Server 2003还集成了一个telnet服务器,使得管理员能够利用各种命令行工具远程管理服务器。
在IIS众多的配置编辑工具中,比较常用的包括一个微软管理控制台的管理单元,一个Web方式的管理系统,还有添加、更新和配置各种组件的一组命令行工具。管理员可以随时手工编辑XML文件,IIS服务器将立即自动反映出修改后的配置,不需要重新启动。另外,XML配置文件也很容易移植,方便了多台机器之间的配置信息共享。
IIS的MMC管理单元为网络上的多台服务器提供了一个一致的、分布式的管理界面,不过,在Apache这边,Webmin之类基于Web的管理工具,或者Comanche之类的专用GUI工具,也具有同样的功能。
特性
IIS
Apache
文本格式的配置文件
是,XML文件
是
命令行管理
是
有限
远程命令行管理接口
是
是
基于Web的管理
是
是,通过Webmin等工具
图形用户界面的管理工具
是
是,通过Comanche等工具。
七、可靠性
在比较IIS和Apache的过程中,可靠性也许是争议最大的一个项目了。根据资料,两种服务器最新版本之间的差异很小,在实验室里,一个Windows Server 2003系统从2003年1月开始运行一个Web网站——到现在已经有8个多月了,期间安装了各种必要的更新软件,但没有重新启动服务器;作为对比,旁边的一个Apache/Solaris系统已经运行了335天,也没有出现问题。
在IIS 6.0中,大部分的请求通常由工作进程处理,IIS 6.0为工作进程提供了大量的管理和控制机制。为了提高可靠性,IIS可以隔离各个应用程序,让应用程序运行在各自独立的内存和执行空间之中,或者与其他应用程序共享执行空间。这意味着,如果一个应用程序出了问题,最多只影响到当前的工作进程,但不会影响到其他工作进程及其运行的应用程序,也不会影响到处理请求的内核。
在进程和线程管理方面,Apache的许多操作都是自动的,但内存和应用程序的隔离问题仍旧存在,尚未提出有效的解决办法。Apache通过自动回收组件机制解决了一部分问题,即使某个组件出现了严重问题时内核仍会继续运行。不过,有时仍不免出现必须重新启动整个Apache服务器的情况。其中一个例子就是对Apache服务器本身进行配置之时,一般都需要重新启动。但是,对于IIS服务器上运行的Web网站,绝大多数对服务器本身的更新和改进不会影响用户访问,因为配置修改可以在服务器运行的同时进行。
特性
IIS
Apache
进程/线程管理
是
是
隔离应用程序
是
有限
运行时修改配置
是
否
八、结束语
虽然这两种服务器之间有着许多不同之处,但真正的选择往往要根据企业的需要而定,有时甚至由个人的爱好和需要决定。例如,许多开发者偏爱使用Unix和Apache环境下的Perl,尽管Perl和Apache同样可以在Windows上运行,IIS也支持Perl,但这些因素仍旧不能影响这类开发者的选择。
如果服务器管理问题是首要的考虑因素,IIS丰富的管理工具应当是最佳选择,同时IIS在安全机制、活动目录集成及其带来的安全管理方面的优势也很重要。
当然,部署费用也是一个不可忽视的重要因素。Apache是完全免费的,而且可以安装到Linux之类的免费操作系统上。IIS 6.0现在只能在Windows Server 2003上运行。虽然Windows Server 2003的Web版要比标准版便宜许多,但与Apache相比就显得很昂贵了——至少从表面上看是这样的。