使用WCF和Microsoft分布式事务处理协调器,是否可以对单个数据库实施长时间运行的事务?我已经画出了该场景的简化版本。
交易必须在一定时间内进行吗?
假设数据库是SQL Server或Oracle,那么在事务期间会发生锁定吗?是行级还是表级?
数据库事务应该是短暂的。例如,查看长寿交易是否可以接受?
因此,虽然WCF和DTC允许您通过SOAP调用在计算机之间分配事务,但对于您所描述的场景而言,这并不是一个好主意。
而是使用补偿事务逻辑,例如,在创建Emp3失败时删除插入的Emp1和Emp2。或手动将插入的Emp1和Emp2行标记为仍在事务中,直到它们都被成功写入为止。或收集WCF服务中的操作,然后在所有信息都可用时将它们(以事务方式)提交给数据库。
哪种解决方案最好,取决于您的用例的细节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句