我在事务范围界定方面没有做太多工作,我想确保在我跳得太深之前正确地接近这个想法。
设置/目标
- 我有一个项目列表,这些项目是要复制到远程系统的文件。
- 对于该列表中的每个文件,我需要创建一个事务以:
- 将文件复制到远程系统
- 调用 Web 服务以将对该新文件的引用添加到数据库中。
- 如果 Web 服务调用或文件复制失败,我需要回滚这两个操作。
- 回滚文件副本将意味着删除远程系统上的文件。
- 回滚 Web 服务操作将意味着调用不同的 Web 服务方法来删除我刚刚创建的条目。
- 如果项目列表中的任何项目失败,我想返回某种消息,但不阻止其他项目被提交。
我正在考虑做什么
在我对该主题的(相当有限的)阅读中,我认为这可能是正确的方法:
- 为文件副本创建资源管理器,使其能够参与持久事务
- 按照相同的思路为 Web 服务调用创建资源管理器
- 为列表中的每个项目创建一个 foreach 循环
- 对于每个项目,创建一个使用两个资源管理器的事务范围,并在出现问题时回滚/报告。
问题
- 有什么我在这里没有看到的或者我应该实施的新方法,或者这实际上是要走的路吗?
到目前为止的资源
当我检查问题并尝试解决问题时,这些是我正在阅读的一些页面:
- 实现资源管理器[MSDN]
- 将资源登记为事务的参与者[MSDN]
- 使用 TransactionScope [MSDN]实现隐式事务
提前感谢您提供的任何帮助!