2008-08-22 20 views
5

나는트랜잭션 디자인 패턴

은 내가해야 할 것은 할 수있을 것입니다 (셰어 정확한 수) COM + 또는 .NET 트랜잭션을 지원하지 않는 외부 API를 사용하여 "트랜잭션"프로세스를 생성 할 필요가있는 시퀀스에서 여러 프로세스를 수행하지만 해당 시퀀스의 모든 실패는 이전 단계를 수동으로 실행 취소해야한다는 것을 의미합니다. 제 경우에는 두 단계의 단계 만 있습니다. 두 단계 모두 실행 취소/롤백이 매우 쉽습니다.

anyony는이 패턴에 유용한 디자인 패턴이나 구조에 대한 제안 사항이 있습니까?

답변

3

, 당신은 당신이 호출 할 때까지 변경이 커밋되지 않는다는 사실을 사용할 수 있습니다 수정 된 개체의 Update() 메서드 (예 : SPList.Update() 또는 SPWeb.Update())입니다.

그렇지 않으면 명령 디자인 패턴을 사용합니다. Head First Design Patterns의 6 장에는 실행 취소 기능을 구현하는 예제도 있습니다.

3

GoF 명령 패턴은 실행 취소 가능한 작업을 지원합니다.

동일한 패턴을 순차 작업 (순차적 명령)에 사용할 수 있다고 생각합니다.

0

스코프가 끝날 때 결정 성있는 소멸자 실행이있는 C++ (또는 다른 언어)를 사용하는 경우 Scope Guards을 살펴볼 수 있습니다. 이 기술은 ScopeGuard에서 IDisposable을 구현하고 필요에 따라 "using"문을 뿌리면 .NET에 적용될 수 있습니다.

1

GOF Command Pattern 옆에 패턴 (P of EAA)을보고 싶을 수도 있습니다.

순서대로 실행되는 복합 명령 (또는 트랜잭션 스크립트)을 작성해야합니다.

2

롤백/실행 취소를위한 또 다른 좋은 방법은 Memento Pattern입니다. 그것은 보통 주어진 시간에 물체의 스냅 샷을 찍고 그 물체가 기념품으로 되돌아 가도록하는 데 사용됩니다.