据我所知,System.DirectoryServices是一个“上层”System.DirectoryServices.Protocols,并提取了一些复杂性。
使用System.DirectoryServices.DirectorySearcher与System.DirectoryServices.Protocols.SearchRequest进行来自.NET的LDAP查询是否有任何其他优点,性能或其他方面。
什么标准会导致您使用一种方法而不是另一种?
答案 0 :(得分:9)
在过去的几个月里我们经常处理这两个库,我可以告诉你,如果你正在处理大型数据集,那么存在一些很大的差异,尤其是。 This blog post概述了一些问题,并且处理了包含超过500,000个条目的LDAP实例,我可以保证其准确性。
System.DirectoryServices
命名空间在表面下使用了大量ADSI和COM,这会增加很多开销,尤其是在处理对象时。 System.DirectoryServices.Protocols
直接与低级LDAP API交互,为您提供更多控制,并与非Microsoft目录实现更好的互操作性。
如果你想要实现的只是为了相对简单的操作而快速轻松地连接到AD / ADAM / ADLDS实例,那么可能值得坚持使用该命名空间 - 否则,我强烈建议你花时间去学习Protocols命名空间。当我最初学习时,我发现this MSDN article是一个巨大的帮助 - 它涵盖了你需要知道的几乎所有内容。