【问题标题】:Which is better for IIS administration in ASP.Net : WMI or ADSI or Managed API? and what's the difference?哪一个更适合 ASP.Net 中的 IIS 管理:WMI 或 ADSI 或托管 API?有什么区别?
【发布时间】:2011-01-14 16:04:22
【问题描述】:

我正在使用基于 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.Administration)?如果我在这里做错了什么,请纠正我。

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

  3. 哪个选项具有最大的灵活性和可扩展性?
  4. 从哪里可以找到任何建议/选择技术的资源?

我不太可能在 II5.1 或更低版本上工作。所以兼容区从 IIS 6.0 及以上版本开始。必须使用 ASP.Net 构建应用程序,如果不可避免,可以使用非托管代码。

谢谢

问候

史蒂夫

【问题讨论】:

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


    【解决方案1】:

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

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

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

    拥有两个代码库(一个用于 IIS6,一个用于 IIS7)可能看起来需要做很多工作,但老实说,这还不错。我为托管商工作,一直走这条路,我们咬紧牙关,决定维护旧的 IIS6 代码,但从 IIS7 重新开始。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        最近更新 更多