트랜잭션 디자인 패턴
-
09-06-2019 - |
문제
COM+ 또는 .NET 트랜잭션(정확히 말하면 Sharepoint)을 지원하지 않는 외부 API를 사용하여 "트랜잭션" 프로세스를 생성해야 합니다.
내가 해야 할 일은 여러 프로세스를 순서대로 수행할 수 있어야 한다는 것입니다. 그러나 해당 순서에서 실패하면 이전 단계를 모두 수동으로 실행 취소해야 합니다.내 경우에는 두 가지 유형의 단계만 있는데, 둘 다 실행 취소/롤백이 매우 쉽습니다.
이에 유용할 수 있는 디자인 패턴이나 구조에 대한 제안이 있는 사람이 있습니까?
해결책
SharePoint 개체 모델이 변경된 경우 다음을 호출할 때까지 변경 사항이 커밋되지 않는다는 사실을 활용할 수 있습니다. Update()
수정된 개체의 메서드(예: SPList.Update()
또는 SPWeb.Update()
.
그렇지 않으면 명령 디자인 패턴.6장 헤드 퍼스트 디자인 패턴 실행 취소 기능을 구현하는 예제도 있습니다.
다른 팁
GoF 명령 패턴은 실행 취소 가능한 작업을 지원합니다.
순차적 작업(순차 명령)에도 동일한 패턴을 사용할 수 있다고 생각합니다.
롤백/실행 취소를 위한 또 다른 좋은 방법은 다음과 같습니다. 기념품 패턴.일반적으로 주어진 시간에 객체의 스냅샷을 찍고 객체 상태를 기념품으로 되돌리는 데 사용됩니다.
Compensating Resource Manager를 살펴보는 것이 좋습니다.
http://msdn.microsoft.com/en-us/library/8xkdw05k(VS.80).aspx
C++(또는 범위가 끝날 때 결정적 소멸자 실행이 포함된 다른 언어)를 사용하는 경우 다음을 살펴볼 수 있습니다. 스코프 가드.이 기술은 ScopeGuard가 IDisposable을 구현하도록 하고 필요에 따라 "using" 문을 추가하여 .NET에 적용할 수도 있습니다.