次の方法で共有


オーケストレーションでの永続化

オーケストレーション エンジンは、さまざまな永続化ポイントでのオーケストレーション インスタンスの全体の状態を保存して、オーケストレーション インスタンスを復元できるようにします。 この状態には、メッセージや変数だけでなく、オーケストレーションで使用できるすべての .NET ベースのコンポーネントが含まれます。 エンジンは、次の永続化ポイントでの状態を保存します。

  • トランザクション スコープの最後 (アトミックまたは長時間トランザクション)

  • デバッグのブレークポイント

  • オーケストレーションの開始図形を使用した他のオーケストレーションの実行時

  • 送信図形 (アトミック トランザクションの場合を除く)

  • オーケストレーション インスタンスが中断された場合

  • システムが適切な方法でシャットダウンした場合

  • 退避が必要であるとエンジンが判断した場合

  • オーケストレーション インスタンスが完了した場合

    エンジンは、特にサイズの大きいメッセージを処理するときなど、負荷がかかる場合に永続化ポイントの数を最適化します。 以下に 2 つのオーケストレーション インスタンスを示します。アトミックのスコープ内に送信図形のあるオーケストレーションでは、エンジンは、トランザクション スコープの最後とオーケストレーションの最後の間で 1 つの永続化ポイントを決定します。 別のオーケストレーションでは、2 つの永続化ポイントがあります。1 つは最初の送信図形のためのもので、もう 1 つはオーケストレーションの最後がある送信図形のためのものです。

    オーケストレーションの永続化

    オーケストレーションの永続化

    オーケストレーションで直接的または間接的に使用するすべての .NET ベースのオブジェクトは、アトミックのスコープで呼び出されない場合に、あるいはオブジェクトがステートレスであり、静的メソッドによってのみ呼び出される場合に、シリアル化可能としてマークする必要があります。 System.Xml。XmlDocument は特殊なケースであり、スコープのトランザクション プロパティに関係なく、シリアル化可能としてマークする必要はありません。

    System.Xml の特別な処理はどのように行う のか。XmlDocument の 動作:

    ユーザーが T 型の変数 X を定義すると、TSystem.Xml。XmlDocument またはSystem.Xml から派生したクラス。その後、XmlDocument コンパイラは X をシリアル化可能なオブジェクトとして扱います。

    X をシリアル化すると、ランタイムは次の情報を保持します。(a) オブジェクト X の実際の型 Tr は、(b) ドキュメントの OuterXml 文字列を参照しています。

    X を逆シリアル化すると、ランタイムは Tr のインスタンスを作成し (これはパラメーターを受け取らないコンストラクターを前提としています)、LoadXml を呼び出して、保存された OuterXml をインスタンスに提供します。次に、新しく作成された Tr インスタンスを指す X が設定されます。

参照

トランザクション