【问题标题】:Active Directory Query Performance in C#C# 中的 Active Directory 查询性能
【发布时间】:2012-10-05 15:57:19
【问题描述】:

我正在编写一些代码来使用 Active Directory。此代码包括根据帐户名称拉回用户,然后获取直接报告和获取组成员资格的功能(这些可以递归或非递归运行,具体取决于是否需要完整的层次结构)。 我已经看到了一些关于如何做到这一点的答案。然而,所有答案似乎都依赖于专有名称。

专有名称是用于关联活动目录中这些对象的外键(在数据库术语中)吗?我的直觉表明 objectGuid 将是用于将项目相互关联的关键,因为它永远不会改变。因此,我假设如果我重写查询以在 DN 上使用 objectGuid,性能会更好。

  • 是否可以通过 objectGuid 查询包含用户/组的组?
  • 是否可以查询给定经理的直接下属的 objectGuid (objectGuid)。
  • objectGuid 查询是否优于其他属性,还是 DN、sAMAccountName 或其他关键属性之一从性能角度来看是最适合使用的关键?
  • 以上答案是否适用于大多数(全部?)LDAP 实现,或者它们是否特定于 MS AD?

提前致谢,

JB

ps。与我的大多数问题一样,性能差异可能可以忽略不计;这更多是为了学术兴趣/满足我的好奇心。

【问题讨论】:

    标签: c# performance active-directory


    【解决方案1】:

    如果应用程序存储或缓存标识符或对存储在 Active Directory 域服务中的对象的引用,则 对象 GUID 是最适合使用的标识符,原因如下:

    • on 对象的 objectGUID 属性永远不会改变,即使该对象 被重命名或移动。
    • 使用对象 GUID 很容易绑定到对象。
    • 如果对象被重命名或移动,objectGUID 属性提供一个 单一标识符,可用于快速查找和识别 对象,而不必编写具有条件的查询 可以识别该对象的所有属性。

    另一方面,如果对象被重命名或移动,对象的专有名称会发生变化,因此专有名称不是可靠的对象标识符。
    所以这与性能无关,它与可靠性有关,您应该使用 objectGUID 搜索目录。

    来回答你的下一个问题:

    是否可以通过以下方式查询包含用户/组的组 对象向导?

    当然是的。检查此link
    希望有帮助!!

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多