1、完全模块化的IIS
如果你非常熟悉流行的Apache Web Server软件,那么你会知道它最大的优势就在于它的定制化,你可以把它配置为只能显示静态的HTML,也可以动态的加载不同的模块以允许不同类型的服务内容。而现在使用的IIS却无法很好的实现这一特性,这样就造成了两方面的问题:其一,由于过多用户并未使用的特性对于代码的影响,性能方面有时不能让用户满意;第二,由于默认的接口过多所造成的安全隐患。
新的IIS7则完全解决了这个问题,IIS7从核心层讲被分割成了40多个不同功能的模块。像验证、缓存、静态页面处理和目录列表等功能全部被模块化。这意味着你的Web服务器可以按照你的运行需要来安装相应的功能模块。可能存在安全隐患和不需要的模块将不会再加载到内存中去,程序的受攻击面减小了,同时性能方面也得到了增强。
2、通过文本文件配置的IIS7
IIS7另一大特性就是管理工具使用了新的分布式web.config配置系统。IIS7不再拥有单一的metabase 配置储存,而将使用和ASP.NET支持的同样的web.config文件模型,这样就允许用户把配置和web应用的内容一起存储和部署,无论有多少站点,用户都可以通过web.config文件直接配置,这样当公司需要挂接大量的网站时,可能只需要很短的时间,因为管理员只需要拷贝之前做好的任意一个站点的web.config文件,然后把设置和web应用一起传送到远程服务器上就完成了,没必要再写管理脚本来定制配置了。
同时管理工具支持“委派管理(delegated administration)”,用户可以将一些可以确定的web.config文件通过委派的方式,委派给企业中其他的员工,当然在这种情形下,管理工具里显示的只是客户自己网站的设置,而不是整个机器的设置,这样IIS管理员就不用为站点的每一个微小变化而费心,版本控制同样简单,用户只需要在组织中保留不同版本的文本文件,然后在必要的时候恢复它们就可以了。
IIS 7中,用户现在可以用管理工具在Windows客户机器上创建和管理任意数目的网站。而不再局限于单个网站,同时相比IIS之前的版本,IIS7的管理界面也更加的友好和强大,此外IIS7的管理工具是用.NET和Windows Forms写成的,是可以被扩展的。这意味着用户可以添加自己的UI模块到管理工具里,为自己的HTTP 运行时模块和配置设置提供管理支持。
MMC 图形模式管理工具
3、IIS 7安全方面的增强
安全问题永远是微软被攻击的重中之重,IIS的安全问题则主要集中在有关.NET程序的有效管理以及权限管理方面的问题。而IIS 7正是针对IIS 服务器遇到了安全问题做了相应的增强。
在新版本中IIS 和ASP.NET 管理设置集成到了单个管理工具里。这样,用户就可以在一个地方查看和设置认证和授权规则,而不是像以前那样要通过多个不同的对话框来做。这给管理人员提供了一个更加一致和清晰的用户界面,以及web平台上统一的管理体验。
在IIS7中,.NET应用程序直接通过IIS代码运行而不再发送到Internet Server API扩展上,这样就减少了可能存在的风险,并且提升了性能,同时管理工具内置对ASP.NET 2.0的成员和角色管理系统提供管理界面的支持。这意味着用户可以在管理工具里,创建和管理角色和用户,以及给用户指定角色,下面是IIS 7 完整的组件分报图。
IIS 7 完整的组件分报图
4、IIS 7的Windows PowerShell 管理环境
Windows PowerShell是一个特为系统管理员设计的Windows 命令行shell 。在这个 shell 中包括一个交互提示和一个可以独立,或者联合使用的脚本环境。而对于IIS服务器,Windows PowerShell同样可以提供全面的管理功能。
不过虽然PowerShell也可以管理运行在Windows Server 2003上的IIS6,但是IIS7才是特为通过PowerShell的命令行来进行管理的。它包括了新的APPCMD功能,APPCMD通过标准的命令行界面来创建和配置站点,这样的命令行工具的应用场景也非常常见,当用户的环境中用到例如脚本管理的时候,APPCMD就将发挥非常其极大的优势。
IS 7.0是包括在Windows Vista客户机上的,该操作系统的家庭版本也带有IIS 7.0(而不象IIS 5.1,只有在XP Professional上才有)。服务器的IIS 7.0版本在Windows Server2008服务器发布,将添加一堆额外的部署特性,包括更加丰富的主机支持,安全的FTP支持,以及内置的web farm部署支持等。
Web farm支持将是特别地酷,它将允许你在一个包含了运行一个服务器所需的所有编码,配置,内容和密钥的文件共享上部署你的web应用。然后你可以添加任意数目的无状态,无配置的web服务器到一个web farm上,只需将它们指向那个文件共享,来动态装载它们的配置设置(包括绑定,虚拟目录,应用池设置等等)和应用内容即可。这使得在多个机器上扩缩一个应用简直是小菜一碟,可避免使用复制方法来做配置和应用部署(只要把文件拷贝到文件共享上,web farm里的所有机器就会马上装载变动过的文件)。
5、ASP.NET和IIS 7.0之集成
在早期的IIS版本中,开发人员需要编写ISAPI扩展/过滤器来扩展服务器的功能。除了写起来非常痛苦外,ISAPI在如何接入服务器以及允许开发人员定制方面也是非常有限。例如,你无法在ISAPI扩展中实现URL重写代码(注:ASP.NET是以ISAPI扩展的方式实现的)。假如你把运行时间长的代码编写成ISAPI过滤器的话,结果是你将占用web服务器的I/O线程(这就是我们不让托管代码在请求的过滤器执行阶段运行的原因)。
我们在IIS7中对核心IIS处理引擎做的一个重大的架构级变动是通过一个新的模块化的请求管道架构来促成极其丰富的扩展性。你现在可以通过与web服务器注册一个HTTP扩展性模块(HTTP Extensibility Module),在任意一个HTTP请求的生命周期的任何地方编写代码。这些扩展性模块可以使用native的C++代码或.NET托管代码来编写(你可以使用现有的ASP.NET System.Web.IHttpModule接口来实现)。
所有“内置”的IIS7功能(认证,授权,静态文件供应,目录清单支持,经典的ASP,记录日志等),现在都是使用这个公开的模块化的管道API来实现的。这意味着你可以除去这些IIS7“内置”功能的任意一个,而以你自己的实现来替换/扩展这些功能。
IIS 7.0上的ASP.NET本身也从以ISAPI的实现形式变成直接接入IIS7管道的模块:
自由、创新、研究、探索……