对于ASP.Net中的IIS管理哪个更好:WMI或ADSI或托管API?有什么区别?

时间:2010-02-09 04:40:15

标签: .net asp.net iis-6 wmi adsi

我正在使用基于ASP.Net的Web应用程序配置和操作和控制IIS 6.0及更高版本。我正在考虑WMI,ADSI,托管API作为我的选择。

我有一个目标Windows系统WIN2k3或更高版本。语言的选择是C#,应用程序必须使用ASP.Net构建。

本文介绍了每种方法,但我对各种方法有点不确定; http://learn.iis.net/page.aspx/283/provisioning-options-in-iis7/rev/1

关于这些选项,我有以下问题。

  1. 对于既定目标哪个更好或更强大? ADSI(System.DirectoryServices)或WMI(Microsoft.Web.Management)或托管API(Microsoft.Web.Administratoion)?如果我在这里做错了,请纠正我。

  2. IIS的更高版本可能支持哪种选项或技术?

  3. 哪个选项具有最大的灵活性和可扩展性?
  4. 从哪里可以找到任何建议/选择技术的资源?
  5. 我不太可能在II5.1或更低版本上工作。因此兼容性区域从IIS 6.0及更高版本开始。应用程序必须使用ASP.Net构建,如果不可避免,可以使用未托管代码。

    由于

    此致

    史蒂夫

2 个答案:

答案 0 :(得分:4)

对于IIS 7及更高版本,您可能需要IIS Management API。我假设你已经阅读了MSDN comparison of administration technologies。仅考虑一个项目,我会使用您最熟悉的工具。涉及直接操作IIS元数据库的所有内容都需要专门的学习努力。

鉴于学习曲线,我选择使用WMI。它被广泛用于IIS之外,掌握它感觉就像是一项很好的投资。 C#很好地支持它。如果你知道一点PowerShell,你可以使用“gwmi”对象轻松探索它。如果从.NET开始使用WMI,请使用managed code generator

答案 1 :(得分:4)

对于IIS6,我使用System.DirectoryServices命名空间,它是ADSI的托管包装器。与使用IIS WMI提供程序相比,我发现这个使用起来更简单。

对于IIS7和Precipitous suggested,我将使用新的IIS 7托管代码管理API(Microsoft.Web.Administration等)。您可以在IIS7上使用IIS6兼容组件,这些组件为消费者维护旧式ADSI API(但是它们是新IIS7组件的包装器)并且它们主要起作用。

但是,您确实遇到了ADSI包装器的问题。例如,他们不知道Handler Mapping(类似于IIS6脚本映射)属性,例如preConditions,例如,允许多个版本的ASP.NET处理程序映射定义共存于同一站点或应用程序中。 ADSI兼容层将创建称为AboMapperCustom对象的对象,这些对象在其配置中是次优的,并且不了解这些新功能。

有两个代码库(一个用于IIS6,一个用于IIS7)可能看起来很多工作,但说实话,它并不是太糟糕。我为一个托管人工作,一直走在这条路上,我们咬紧牙关,决定我们维护旧的IIS6代码,但重新开始使用IIS7。