是否可以使用WCF实现长时间运行的多写事务?

时间:2014-03-28 01:17:17

标签: c# sql-server oracle wcf distributed-transactions

使用WCF和Microsoft分布式事务协调器,是否可以针对单个数据库实现长时间运行的事务?我已经提出了相关场景的简化版本。

交易必须在时间限制内吗?

假设数据库是SQL Server或Oracle,是否会在事务期间发生锁定?它会在行级还是表级?

enter image description here

1 个答案:

答案 0 :(得分:3)

数据库事务应该是短暂的。例如,请参阅Are long-living transactions acceptable?

因此,虽然WCF和DTC允许您跨机器分发事务并通过SOAP调用,但这对于您描述的方案来说并不是一个好主意。

使用补偿交易逻辑,例如,在创建Emp3失败时删除插入的Emp1和Emp2。或者手动将插入的Emp1和Emp2行标记为仍处于事务中,直到它们都已成功写入。或者收集WCF服务中的操作,然后(事务上)在所有信息可用时将它们提交到数据库。

哪种解决方案最好取决于您的用例的详细信息。