代码之家  ›  专栏  ›  技术社区  ›  Matt

事务性设计模式

  •  5
  • Matt  · 技术社区  · 16 年前

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

    我需要做的是能够按顺序执行多个进程,但该顺序中的任何失败都意味着我必须手动撤消前面的所有步骤。在我的例子中,只有两种类型的步骤,这两种都很容易撤消/回滚。

    有人对设计模式或结构有什么建议吗?

    6 回复  |  直到 11 年前
        1
  •  3
  •   vitule    16 年前

    如果对SharePoint对象模型进行了更改,则可以使用这样一个事实,即只有在调用 Update() 修改对象的方法,例如 SPList.Update() SPWeb.Update() .

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

        2
  •  3
  •   Thomas Owens    16 年前

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

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

        3
  •  2
  •   Cem Catikkas    16 年前

    回滚/撤消的另一种好方法是 Memento Pattern 。它通常用于在给定时间拍摄对象的快照,并将对象状态还原为纪念品。

        4
  •  1
  •   Huppie    16 年前

    GOF旁边 Command Pattern 您可能还想看看 Transaction Script 图案从 P of EAA .

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

        5
  •  0
  •   erlando    16 年前
        6
  •  0
  •   On Freund    16 年前

    如果你使用的是C++(或任何其他在作用域结束时执行确定性析构函数的语言),你可以看看 Scope Guards 这种技术也可能适用。NET,使ScopeGuard实现IDisposable,并根据需要添加“using”语句。