【发布时间】:2011-10-07 09:46:50
【问题描述】:
在我目前正在开发的服务中,我需要提供双重操作:
- 正在发出的请求应该在数据库中注册(使用
Register()方法);和 - 应将请求发送到外部webservice 以进行进一步处理(使用
Dispatch()方法)。
考虑到我无法切换操作的顺序,如果第二个出现问题,我希望能够“回滚”第一个,以便不会将当时无效的记录插入到BD。这里的问题是,当然,我在Register 方法中提交事务。如果出现任何问题,有什么方法可以从 Dispatch 方法内部回滚?
编辑:所有事务都在 .NET 端进行管理。
【问题讨论】:
-
您需要two-phase commit。这基本上是MSDTC 所做的,这是您最好的选择:使用分布式事务协调器。但我认为最好重新考虑你的完整交易策略。尝试以不需要分布式原子性的方式设计系统。
标签: c# .net sql-server-2005 transactions