C# для профессионалов. Том II
Шрифт:
Репликация
Как программисты мы не будем конфигурировать репликацию, но так как она является важным аспектом данных, которые хранятся в активном каталоге, необходимо знать, как она работает. Активный каталог использует архитектуру серверов с несколькими мастерами. Обновления могут и будут происходить на каждом контроллере домена в домене. Задержка репликации определяет, сколько времени потребуется для выполнения обновлений.
□ Конфигурируемое уведомление об изменении происходит внутри сайта по умолчанию каждые 5 минут, если изменяются некоторые атрибуты. Сервер, где происходит изменение, информирует все серверы по очереди с 30-секундным интервалом. В дальнейшем сервер может получать уведомление об изменении через 7 минут. По умолчанию
□ Если никаких изменений не происходит, плановая репликация выполняется каждые 60 минут внутри сайта. Это служит гарантией того, что уведомление об изменении не будет пропущено.
□ Для информации, чувствительной к безопасности, такой как блокирование учетной записи, может происходить немедленное уведомление.
Изменения при репликации копируются в контроллеры доменов. Для каждого изменения атрибута записываются номер версии (USN — номер последовательности обновления) и отметка времени. Они используются для разрешения конфликтов, если обновления происходят в одном и том же атрибуте на различных серверах.
Рассмотрим пример. Атрибут "мобильный телефон" пользователя Джона Доу имеет номер USN 47. Это значение уже реплицировано во все контроллеры доменов. Один системный администратор изменяет телефонный номер. Изменение происходит на сервере DC1, новый USN этого атрибута на сервере DC1 теперь будет 48, а остальные контроллеры доменов по прежнему имеют USN, равным 47. Если кто-то все еще читает атрибут, то он может считать старое значение, так как репликация еще не произошла на всех контроллерах доменов.
Теперь может произойти редкий случай, когда другой администратор изменяет атрибут "телефонный номер", и здесь был выбран другой контроллер домена, так как этот администратор получил более быстрый ответ от сервера DC2. USN этого атрибута на сервере DC2 также изменяется на 48.
Через заданный интервал происходит уведомление, так как USN атрибута изменился, и последний раз репликация происходила со значением USN, равным 47. С помощью механизма репликации теперь обнаруживается, что серверы DC1 и DC2 оба имеют USN, равный 48, для атрибута "номер телефона". Какой сервер будет победителем в действительности не имеет значения, но один сервер должен выиграть. Чтобы разрешить этот конфликт, используется отметка времени изменения. Так как изменение произошло позднее на DC2, то будет реплицировано значение, которое хранится в контроллере домена DC2.
При считывании объектов мы должны знать, что данные не обязательно будут актуальны. Актуальность данных зависит от задержек репликации.
При обновлении объектов другой пользователь может по-прежнему прочитать некоторые старые значения после обновления. Также возможно, что различные обновления будут происходить в одно время.
Характеристики данных активного каталога
Активный каталог не заменяет реляционную базу данных или реестр. Какие же данные могут там хранится?
□ В активном каталоге имеются иерархические данные. Мы можем иметь контейнеры, в которых опять же хранятся контейнеры, а также объекты. Сами контейнеры тоже являются объектами.
□ Данные должны использоваться в основном для чтения. Так как мы имеем репликацию, которая происходит с некоторым задаваемым интервалом времени, мы не можем быть уверены, что прочитаем своевременные данные. В приложениях необходимо учитывать, что прочитанная информация, возможно, не является реальной современной информацией.
□ Данные представляют глобальный интерес для предприятия. Добавление нового типа данных в схему реплицирует его на серверы предприятия. Если типы данных представляют интерес только для небольшого числа пользователей, то администратор домена предприятия не будет устанавливать новые типы схемы.
□ Данные должны иметь разумный размер в связи с репликацией. Если размер данных равен 100Кбайт,
Суммируя, можно сказать, что хранимые в активном каталоге данные должны быть иерархически организованны, иметь разумный размер и быть важными для предприятия.
Схема
Объекты активного каталога являются строго типизированными. Схема определяет типы объектов, обязательные и необязательные атрибуты, а также синтаксис и ограничения атрибутов. Сама схема хранится как объекты в хранилище данных активного каталога. В схеме можно различить объекты схемы классов и схемы атрибутов. Класс является совокупностью атрибутов. С помощью классов поддерживается одиночное наследование. Как можно видеть на следующей диаграмме классов, класс
На диаграмме перечислены лишь немногие из всех значений
Управление активным каталогом
На самом деле мы не будем говорить об управлении активным каталогом. За управление отвечают системные администраторы Windows 2000, а мы хотим поговорить о программировании активного каталога. Однако рассмотрение некоторых инструментов управления может помочь понять, что такое активный каталог, какие данных в нем находятся, и что можно сделать программным путем.
Системный администратор имеет множество инструментов для ввода новых данных, обновления данных и для конфигурирования активного каталога. С помощью инструмента Active Directory Users and Computers (Пользователи и компьютеры активного каталога) можно обновить данные о пользователях и ввести новых пользователей. Инструмент Active Directory Sites and Services используется для конфигурирования сайтов в домене и репликации между этими сайтами. ActiveDirectory Domains and Trusts может применяться для создания доверительных отношений между доменами в дереве. Редактором реестра для активного каталога, где можно просмотреть и отредактировать каждый объект, является ADSI Edit. В дополнение к инструментам системного администратора имеется инструмент в SDK платформы Microsoft: ADSI Viewer.