我们究竟什么时候使用 WCF 事务?
When exactly do we use WCF transactions?
我试图获取有关 WCF 事务的一些信息,但我确实设法获取了有关如何使用它们的信息。我没有得到太多信息是 Why/When 使用它们。
数据库事务和 WCF 事务有什么区别?是否有任何特定情况下这些方法中的任何一种优于另一种?
通过 WCF 事务,您真正要问的是 Microsoft 对 WS-AtomicTransaction 网络服务扩展标准的实施。
Why/When to use them
类似于使用数据库事务来保证数据库内的一致性,WS-AtomicTransaction 用于基于 SOAP 1.2 服务上的通信来保证更大的分布式系统内的一致性。这个分布式系统可能包括也可能不包括数据库写入,但它通常会这样做。
从客户端传播到服务的事务将导致服务的内部代码在客户端事务的上下文中执行。
因此,以同样的方式,数据库事务可以将多个数据库写入包装到一个工作单元中,WCF 事务可以将多个服务调用包装到一个工作单元中,这样一个失败就会回滚其他人
正如您想象的那样,从资源的角度来看,这会非常昂贵,因此除非绝对必要,否则应该很少(如果有的话)使用这些类型的跨网络事务。
我试图获取有关 WCF 事务的一些信息,但我确实设法获取了有关如何使用它们的信息。我没有得到太多信息是 Why/When 使用它们。 数据库事务和 WCF 事务有什么区别?是否有任何特定情况下这些方法中的任何一种优于另一种?
通过 WCF 事务,您真正要问的是 Microsoft 对 WS-AtomicTransaction 网络服务扩展标准的实施。
Why/When to use them
类似于使用数据库事务来保证数据库内的一致性,WS-AtomicTransaction 用于基于 SOAP 1.2 服务上的通信来保证更大的分布式系统内的一致性。这个分布式系统可能包括也可能不包括数据库写入,但它通常会这样做。
从客户端传播到服务的事务将导致服务的内部代码在客户端事务的上下文中执行。
因此,以同样的方式,数据库事务可以将多个数据库写入包装到一个工作单元中,WCF 事务可以将多个服务调用包装到一个工作单元中,这样一个失败就会回滚其他人
正如您想象的那样,从资源的角度来看,这会非常昂贵,因此除非绝对必要,否则应该很少(如果有的话)使用这些类型的跨网络事务。