Симон Робинсон - C# для профессионалов. Том II
Теперь может произойти редкий случай, когда другой администратор изменяет атрибут "телефонный номер", и здесь был выбран другой контроллер домена, так как этот администратор получил более быстрый ответ от сервера DC2. USN этого атрибута на сервере DC2 также изменяется на 48.
Через заданный интервал происходит уведомление, так как USN атрибута изменился, и последний раз репликация происходила со значением USN, равным 47. С помощью механизма репликации теперь обнаруживается, что серверы DC1 и DC2 оба имеют USN, равный 48, для атрибута "номер телефона". Какой сервер будет победителем в действительности не имеет значения, но один сервер должен выиграть. Чтобы разрешить этот конфликт, используется отметка времени изменения. Так как изменение произошло позднее на DC2, то будет реплицировано значение, которое хранится в контроллере домена DC2.
При считывании объектов мы должны знать, что данные не обязательно будут актуальны. Актуальность данных зависит от задержек репликации.
При обновлении объектов другой пользователь может по-прежнему прочитать некоторые старые значения после обновления. Также возможно, что различные обновления будут происходить в одно время.
Характеристики данных активного каталога
Активный каталог не заменяет реляционную базу данных или реестр. Какие же данные могут там хранится?
□ В активном каталоге имеются иерархические данные. Мы можем иметь контейнеры, в которых опять же хранятся контейнеры, а также объекты. Сами контейнеры тоже являются объектами.
□ Данные должны использоваться в основном для чтения. Так как мы имеем репликацию, которая происходит с некоторым задаваемым интервалом времени, мы не можем быть уверены, что прочитаем своевременные данные. В приложениях необходимо учитывать, что прочитанная информация, возможно, не является реальной современной информацией.
□ Данные представляют глобальный интерес для предприятия. Добавление нового типа данных в схему реплицирует его на серверы предприятия. Если типы данных представляют интерес только для небольшого числа пользователей, то администратор домена предприятия не будет устанавливать новые типы схемы.
□ Данные должны иметь разумный размер в связи с репликацией. Если размер данных равен 100Кбайт, то имеет смысл хранить их в каталоге, если данные изменяются только раз в неделю. Данные такого размера слишком велики, если они изменяются каждый час. Всегда помните о репликации — куда будут пересылаться данные и с какими интервалами времени. Если имеется большой объем данных, то можно поместить в активный каталог ссылку, а сами данные хранить в другом месте.
Суммируя, можно сказать, что хранимые в активном каталоге данные должны быть иерархически организованны, иметь разумный размер и быть важными для предприятия.
Схема
Объекты активного каталога являются строго типизированными. Схема определяет типы объектов, обязательные и необязательные атрибуты, а также синтаксис и ограничения атрибутов. Сама схема хранится как объекты в хранилище данных активного каталога. В схеме можно различить объекты схемы классов и схемы атрибутов. Класс является совокупностью атрибутов. С помощью классов поддерживается одиночное наследование. Как можно видеть на следующей диаграмме классов, класс user является производным от класса organizationalPerson, organizationalPerson является подклассом person, а базовым классом для всех является top. Класс classSchema, который определяет класс, описывает атрибуты с помощью атрибута systemMayContain.
На диаграмме перечислены лишь немногие из всех значений systemMayContainтолько для того, чтобы передать идею конструкции. Можно легко найти все значения с помощью ADSIEdit. По корневому классу top видно, что каждый объект может иметь атрибуты общее имя (cn), displayName, objectGUID, whenChanged и whenCreated. Класс Person является производным от top. Объект Person имеет также пароль userPassword и telephoneNumber. organizationalPerson является производным от Person. В дополнение к Person он имеет manager, department, company, a user имеет атрибуты, необходимые для регистрации в системе:
Управление активным каталогом
На самом деле мы не будем говорить об управлении активным каталогом. За управление отвечают системные администраторы Windows 2000, а мы хотим поговорить о программировании активного каталога. Однако рассмотрение некоторых инструментов управления может помочь понять, что такое активный каталог, какие данных в нем находятся, и что можно сделать программным путем.
Системный администратор имеет множество инструментов для ввода новых данных, обновления данных и для конфигурирования активного каталога. С помощью инструмента Active Directory Users and Computers (Пользователи и компьютеры активного каталога) можно обновить данные о пользователях и ввести новых пользователей. Инструмент Active Directory Sites and Services используется для конфигурирования сайтов в домене и репликации между этими сайтами. ActiveDirectory Domains and Trusts может применяться для создания доверительных отношений между доменами в дереве. Редактором реестра для активного каталога, где можно просмотреть и отредактировать каждый объект, является ADSI Edit. В дополнение к инструментам системного администратора имеется инструмент в SDK платформы Microsoft: ADSI Viewer.
Active Directory Users and Computers
Утилита Active Directory Users and Computers является инструментом, который в основном служит системным администраторам для управления своими пользователями. Start|Programs|Administrative Tools|Active Directory Users and Computers:
С помощью этой утилиты можно добавлять новых пользователей, группы, контакты, организационные единицы, принтеры, общие папки, компьютеры, и модифицировать существующие. На изображении ниже можно видеть атрибуты, которые вводятся для объекта пользователь (user): офис, номера телефонов, адреса e-mail, web-страницы, информация об организации, адреса, группы и т.д., т.е. значительно больше информации, чем было возможно в домене NT 4:
Утилита Active Directory Users and Computers может также использоваться на больших предприятиях с миллионами объектов. Не обязательно просматривать список с тысячами объектов, можно выбрать специальный фильтр, чтобы выводились только некоторые объекты. Можно также сделать запрос LDAP для поиска объектов на предприятии.
ADSI Edit
ADSI Edit является редактором реестра активного каталога. Эта утилита не устанавливается автоматически. На компакт-диске Windows 2000 Server можно найти каталог с именем Supporting Tools. Когда утилиты поддержки будут установлены, ADSI Edit можно будет найти в меню: Start|Programs|Windows 2000 Support Tools|Tools|ADSI Edit.
Простая в использовании утилита Active Directory Users and Computers имеет фиксированный интерфейс пользователя для изменения атрибутов объектов пользователя. Мы не увидим атрибутов, которые добавляются к схеме в интерфейсе пользователя этой утилиты, управляемом мышью. Все можно сконфигурировать с помощью ADSI Edit, мы можем также просмотреть схему и конфигурацию. Эта утилита, однако, не так проста в использовании, и очень легко ввести неправильные данные:
Открывая окно Properties (Свойства) объекта, можно изменить любой атрибут объекта в активном каталоге. Мы видим обязательные, дополнительные атрибуты, типы и значения атрибутов:
ADSI Viewer
Установим также браузер активного каталога как часть SDK платформы Microsoft. SDK платформы Microsoft не является частью дистрибутива Visual Studio.NET. Вы получаете компакт-диск с подпиской на MSDN или загружаете его с web-сайта MSDN. После установки SDK платформы можно запустить утилиту с помощью пункта меню Start|Programs|Microsoft Platform SDK|Tools|ADSI Viewer.
ADSI Viewer имеет два режима. С помощью File|New можно запустить запрос или использовать Object Viewer для вывода и изменения атрибутов объектов. После запуска Object Viewer можно определить путь доступа LDAP, а также имя пользователя и пароль, чтобы открыть объект. Вскоре, когда мы начнем делать это программным путем, вы увидите, какую форму может иметь путь доступа LDAP. Здесь определяется LDAP://OU=Wrox Press, DC=eichkogelstrasse, DC=local, чтобы получить доступ к объекту организационной единицы:
Если определяемый объект с путем доступа и именем пользователя и паролем является допустимым, мы получаем экран Object Viewer где можно видеть и изменять свойства объекта и объектов-потомков:
Интерфейсы службы активного каталога (ADSI)
Интерфейсы службы активного каталога (ADSI) являются программным интерфейсом к службам каталога. ADSI определяет некоторые интерфейсы COM, которые реализуются провайдерами ADSI. Это означает, что клиент может использовать различные службы каталога с одними и теми же программными интерфейсами. Классы среды .NET в пространстве имен System.DirectoryServices используют интерфейсы ADSI.