C#中的Active Directory查询性能

时间:2012-10-05 15:57:20

标签: c# performance active-directory

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

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

  • 是否可以通过objectGuid查询包含用户/组的组?
  • 是否可以查询给定经理(objectGuid)的直接报告的objectGuids。
  • 对objectGuid查询的表现是否优于其他属性,或者是DN,sAMAccountName,还是其中一个其他关键属性,是表现最佳的关键?
  • 以上是大多数(所有?)LDAP实现的答案,或者它们是否特定于MS AD?

提前致谢,

JB

PS。和我的大多数问题一样,性能差异可能微不足道;这更符合学术兴趣/满足我的好奇心。

1 个答案:

答案 0 :(得分:6)

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

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

另一方面,如果重命名或移动对象,则对象的可分辨名称会更改,因此可分辨名称不是可靠的对象标识符。
所以它不是关于性能,它是关于可以使用 objectGUID 搜索目录的可靠性。

来到你的下一个问题:

  

是否可以查询包含用户/组的组   的objectGUID?

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