Вопрос по .net, active-directory, transactions, msdtc – Поддерживает ли транзакция Active Directory?

15

Простой вопрос, но я могуНайти ответ где угодно: поддерживает ли транзакция Active Directory?

Другими словами, будет ли отменено следующее изменение (так как я нет звонокscope.Complete()):

using (var scope = new TransactionScope())
{
    DirectoryEntry entry = ...;
    entry.Properties["givenName"].Value = "New Given Name";
    entry.CommitChanges();
}

Если нет, то можно ли это как-то включить? Прямо сейчас у меня есть код, который выполняет обновления базы данных и соответствующие обновления AD, и у меня есть компенсирующая логика для обновлений AD, если они как-то не работают. Это решение далеко от оптимального.

С уважением, Рональд Вильденберг

На данный момент яя работаю на машине, которая не присоединена к домену ... Это должно быть исправлено сегодня, так что япроведу несколько тестов. Это'Странно, однако, нетКажется, нет какой-либо документации по этой теме. Ronald Wildenberg
Почему можноты сам проверил? Я не могу найти никаких четких документов о том, является ли AD осведомленным о транзакциях - я думаю (и надеюсь!) Так! LDAP в целом, по-видимому, поддерживает транзакции, по крайней мере, marc_s

Ваш Ответ

2   ответа
1

однако возможносвернуть свой решение путем написания класса enlistment, который реализует интерфейс IEnlistmentNotification. IEnlistmentNotification работает как с явными, так и с неявными транзакциями в пространстве имен System.Transactions.

Вы можете найти больше документации (и пример) здесь:https://msdn.microsoft.com/en-us/library/system.transactions.ienlistmentnotification(v=vs.110).aspx

8

по сути, реализация LDAP (с некоторыми необычными расширениями, но у нее есть 'ядро это все еще LDAP). Ни протоколы LDAP, ни спецификации не имеют понятия транзакций, так что это действительно не так.т возможно.

Можно было бы эмулировать транзакции на стороне клиента, но выЯ должен был сделать это сам или использовать Spring, который, я считаю, сделает это за вас - очевидно, это не так безопасно, как транзакции на стороне сервера, которые вы 'Ожидал от БД. Записка о весне - яЯ не совсем уверен, что Spring.NET поддерживаетсделки для LDAP еще нет, но у них есть что-то подобное в Java-реализации Spring. Это может стоить посмотреть.

Из чтения документов по методу CommitChanges он просто говорит, что отправляет ваши изменения на сервер - если это не такЯ бы сказал, что они безопасны для транзакций.нет.

Несколько случайных мыслей - яУгадай было бы возможно, чтобы Microsoft могла добавить что-то подобное в ActiveDirectory (так как это больше, чемпросто LDAP) но они, вероятно, выигралит, если они непока нет.

У меня наконец-то появилось время и возможность сделать небольшой тест, и AD не является транзакционным. Тем не менее, я могуt найти любую документацию по Spring, предлагающую поддержку транзакций для ресурсов LDAP. Вы уверены, что они реализуют это? Когда базовый ресурс (например, Active Directory) не поддерживает транзакции, вы можетеОсталось только обернуть (весь) API ресурса в API с поддержкой транзакций и правильно реагировать на коммиты и откат самостоятельно. Это нена самом деле не имеет значения, является ли это Java (JNDI) или C # (System.DirectoryServices), но это единственный способ, который я знаю. Ronald Wildenberg
Посмотри на это:springsource.org/ldap I 'Я сам этим не пользовался, но об этом я и говорил. Это говорит:Spring LDAP обеспечивает поддержку транзакций но у меня сложилось впечатление, что это, как вы говорите, оболочка для всего API LDAP, которая отслеживает сбои и т. д. и пытается выполнить откат, повтор и т. д. macbutch

Похожие вопросы