我需要使用不支持COM +或.NET事务的外部API创建“事务”进程(准确地说是Sharepoint)

我需要做的是能够按序列执行多个进程,但是该序列中的任何失败意味着我将不得不手动撤消所有之前的步骤。 在我的情况下,只有两种类型的步骤,两者都很容易撤消/回滚。

anyony对设计模式或结构有什么建议可能对此有用吗?

===============>>#1 票数:3

GoF命令模式支持可撤销操作。

我认为相同的模式可以用于顺序操作(顺序命令)。

===============>>#2 票数:3 已采纳

如果对SharePoint对象模型进行了更改,则可以使用以下事实:在调用已修改对象的Update()方法(例如SPList.Update()SPWeb.Update()之前,不会提交更改。

否则,我会使用命令设计模式。 Head First Design Patterns中的第6章甚至还有一个实现撤消功能的示例。

===============>>#3 票数:2

回滚/撤消的另一个好方法是Memento模式 它通常用于在给定时间拍摄对象的快照,并让对象状态恢复到纪念品。

===============>>#4 票数:1

在GOF 命令模式旁边,您可能还想查看EAA的P中事务脚本模式。

您应该创建一个按顺序执行的复合命令(或事务脚本)。

===============>>#5 票数:0

您可能想要查看补偿资源管理器:

http://msdn.microsoft.com/en-us/library/8xkdw05k(VS.80).aspx

===============>>#6 票数:0

如果您正在使用C ++(或在范围结束时使用确定性析构函数执行的任何其他语言),您可以查看Scope Guard 这种技术也可以通过使ScopeGuard实现IDisposable并根据需要使用“使用”语句来适应.NET。

  ask by Matt translate from so

未解决问题?本站智能推荐: