-
09-06-2019 - |
题
我有一个需要创建一个"交易性"过程中使用外部API不支持COM+或.净交易(Sharepoint能确切)
我需要做的是能够执行一些程序,但任何失败这一顺序意味着,我必须手动将撤消以前所有的步骤。在我的情况下,只有2种类型的步骤,既af这是相当容易的撤销/卷回来。
不anyony有任何建议,为设计的模式或结构,可能是有用的这个?
解决方案
如果你改变做到SharePoint对象模型,可以使用的事实的改变都不做,直到你叫的 Update()
方法的修改的目的,例如 SPList.Update()
或 SPWeb.Update()
.
否则,我会用的 命令 设计图案。第6章中 头,首先设计的模式 甚至有一个例子实现的撤消的功能。
其他提示
GoF命令的模式支持可撤销的行动。
我认为,同样的模式可用于操作的顺序(连续的命令)。
另一个良好的方式回退/撤消是的 纪念图案.它通常用于需要的快照对象,在给定的时间,让对象国可以恢复到的纪念品。
你可能想看一看补偿资源管理:
http://msdn.microsoft.com/en-us/library/8xkdw05k(VS。80).aspx
如果你使用C++(或任何其他语言有确定性析构执行当范围终)你可以看看 范围的警卫.这种技术可能也是适合的。净通过使ScopeGuard实现IDisposable和洒"使用"的发言。
不隶属于 StackOverflow