LdapConnection Vs DirectoryEntry

Может кто-нибудь объяснить разницу между использованием LdapConnection/SearchRequest и DirectoryEntry/DirectorySearcher для поиска пользователей в ActiveDirectory.

Какой из них лучше всего подходит для взаимодействия с AD?

Ответ 1

В большинстве случаев вы должны использовать DirectoryEntry/DirectorySearcher (System.DirectoryServices или S.DS) для взаимодействия с AD. Это позволяет вам делать все проще с меньшим количеством кода. Но для LdapConnection/SearchRequest (System.DirectoryServices.Protocols или S.DS.P) он обеспечивает больший контроль, поскольку он обеспечивает доступ LDAP более низкого уровня. Для LDAP-совместимых каталогов, отличных от AD, хорошо использовать S.DS.P.

С S.DS.P, в общем, вам нужно будет написать еще один код для достижения того же самого результата по сравнению с S.DS.

Например, для поискового запроса в S.DS.P вам необходимо обработать запрос и ответ для КАЖДОЙ СТРАНИЦЫ результатов. Но в S.DS вам нужно только установить DirectorySearcher.PageSize, а затем получить все результаты на всех страницах из DirectorySearcher.FindAll().

Есть вещи, которые вы должны использовать S.DS.P, например, корневой поиск phantom или вы хотите обрабатывать "больше данных доступно" вручную. Но эта ситуация не распространена, по крайней мере, не нужна в мои годы кодирования S.DS.