C#中的Active Directory查询性能

Joh*_*van 2 c# performance active-directory

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

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

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

提前致谢,

JB

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

Sau*_*R S 6

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

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

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

来你的下一个问题:

是否可以通过objectGuid查询包含用户/组的组?

当然是的.检查此链接.
希望能帮助到你 !!