【发布时间】:2010-12-18 13:17:09
【问题描述】:
我想将 WCF 服务操作配置为在我的客户端发送一个事务时接受事务,但如果没有发送,则不创建一个事务。我认为这类似于 COM+ 中的 Supported transaction 属性。
有谁知道这是否可以通过 WCF 事务来完成?
我试图通过使用 WCF 事务编程模型(例如,服务操作上的 TransactionFlowAttribute 和 TransactionScopeRequired)而不是使用 System.Transactions 显式事务编程模型来完成这一切。
以下是我认为我希望能够做到这一点的一个例子:
ServiceA 实现调用两个数据服务的高级业务操作。服务 B 中的操作执行一次数据库更新,服务 C 中的操作执行两次数据库更新。
ServiceA ----> ServiceB ---->
|
V 服务 C ---->
ServiceC 的 2 次数据库更新需要在其根位于 ServiceC 的事务中执行。服务 B 的单个数据库更新不需要在事务中进行。但是,ServiceA 定义了一个事务,需要 ServiceB 和 ServiceC 的数据库更新两个作为原子工作单元发生。
我的问题是如何配置 ServiceB 以便在 ServiceA 调用它时加入该事务。但是,当直接调用 ServiceB 而不是通过 Service A 调用时,它不需要在事务中运行,因为它只进行一次数据库更新。
谢谢,
大卫·马德里安
【问题讨论】:
-
我在 MSDN 上发布了同样的问题,并在那里收到了一些有趣的额外答案。这是链接:social.msdn.microsoft.com/Forums/en-US/wcf/thread/… 我很想知道有人对 MSDN 上的回复有何看法。
标签: wcf transactions distributed-transactions