5

COM +または.NETトランザクションをサポートしない外部APIを使用して「トランザクション」プロセスを作成する必要があります(正確にはSharepoint)

私がする必要があるのは、シーケンスでいくつかのプロセスを実行できるようにすることですが、そのシーケンスで障害が発生すると、前のすべてのステップを手動で元に戻す必要があります。私の場合、ステップは2種類しかなく、どちらも元に戻す/ロールバックするのはかなり簡単です。

これに役立つ可能性のあるデザインパターンや構造についての提案はありますか?

4

6 に答える 6

3

GoFコマンドパターンは、元に戻すことができる操作をサポートします。

シーケンシャル操作(シーケンシャルコマンド)でも同じパターンが使えると思います。

于 2008-08-22T12:11:49.753 に答える
3

SharePoint オブジェクト モデルに変更が加えられた場合、またはUpdate()などの変更されたオブジェクトのメソッドを呼び出すまで、変更はコミットされないという事実を利用できます。SPList.Update()SPWeb.Update()

それ以外の場合は、コマンドデザイン パターンを使用します。Head First Design Patternsの第 6 章には、元に戻す機能を実装する例もあります。

于 2008-08-22T12:40:18.250 に答える
2

ロールバック/元に戻すためのもう 1 つの良い方法は、Memento パターンです。通常、特定の時点でオブジェクトのスナップショットを取得し、オブジェクトの状態を思い出に戻すために使用されます。

于 2008-08-28T15:57:47.647 に答える
1

GOFコマンド パターンの次に、 EAA の P のトランザクション スクリプトパターンも参照してください。

おそらく、順番に実行される複合コマンド (またはトランザクション スクリプト) を作成する必要があります。

于 2008-08-22T13:09:17.430 に答える
0

CompensatingResourceManagerを確認することをお勧めします。

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

于 2008-08-22T12:27:38.763 に答える
0

C++ (またはスコープの終了時に決定論的なデストラクタの実行を伴う他の言語) を使用している場合は、Scope Guardsを参照してください。この手法は、ScopeGuard に IDisposable を実装させ、必要に応じて "using" ステートメントを散りばめることで、おそらく .NET にも適用できます。

于 2008-08-22T12:56:42.423 に答える