简单的问题,但我在任何地方都找不到答案:Active Directory 是否支持事务?
换句话说,以下更改是否会回滚(因为我没有调用scope.Complete()
):
using (var scope = new TransactionScope())
{
DirectoryEntry entry = ...;
entry.Properties["givenName"].Value = "New Given Name";
entry.CommitChanges();
}
如果没有,是否可以以某种方式启用此功能?现在,我有执行数据库更新和相应 AD 更新的代码,并且在 AD 更新因某种原因失败时我有补偿逻辑。这个解决方案远非最佳。
亲切的问候,
罗纳德·维尔登伯格
简短的回答是——不。 ActiveDirectory 本质上是一个 LDAP 实现(带有一些奇特的扩展,但其核心仍然是 LDAP)。 LDAP 协议和规范都没有事务的概念,因此这实际上是不可能的。
可以在客户端模拟事务,但您必须自己执行此操作或使用 Spring,我相信它会为您执行此操作 - 显然这不如您期望的服务器端事务那么安全一个数据库。关于 Spring 的注释 - 我还不能完全确定 Spring.NET 支持 LDAP 的“事务”,但在 Spring 的 Java 实现中它们有类似的东西。也许值得一看。
通过阅读 CommitChanges 方法上的文档,它只是说它将您的更改发送到服务器 - 如果它没有指出它们是事务安全的,我会认为它们不是。
一些随意的想法——我guess微软有可能将类似的东西添加到 Active Directory 中(因为它不仅仅是justLDAP),但如果他们还没有的话,他们可能不会。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)