このトピックの内容は、Windows Workflow Foundation 4 に該当します。
このサンプルでは、パラレルなコンボイ メッセージング アクティビティ パターンを TransactedReceiveScope と組み合わせて作成し、多数の操作をすべて同じトランザクションで任意の順序で行うことができるプロトコルをモデル化する方法を示します。また、トランザクションがサーバーにフローされないためにクライアントで使用できるトランザクションがない場合に、TransactedReceiveScope で自動的に新しいトランザクションを作成する方法も示します。
このサンプルは、クライアントとサーバーを表す 2 つのワークフロー プロジェクトで構成されます。クライアント プロジェクトでは、最初にメッセージを送信してサーバー ワークフローをブートストラップするワークフローを実行します。このワークフローで、相関関係が初期化され、残りのメッセージング アクティビティのトランザクション スコープが開始されます。クライアントの Sequence アクティビティには、Send と ReceiveReply の最初のペアと、3 つの分岐がある Parallel アクティビティが含まれます。各分岐で、一方向のメッセージがサーバーに送信されます。Parallel アクティビティの CompletionCondition プロパティは、3 つすべての分岐を完了するように false に設定されています。
サーバー ワークフローはクライアント ワークフローに似ていますが、メッセージング アクティビティが通信のサーバー側のものになり、すべての作業が同じトランザクションで実行されるように TransactedReceiveScope アクティビティ内に格納されています。サーバーで最初のメッセージを受信すると、トランザクションが作成されます。トランザクションはこのスコープのアンビエント トランザクションになり、TransactedReceiveScope 本体のスコープ内のあらゆるアクティビティがこのトランザクションにアクセスできます。その後、すべての受信が並行して実行されます。並行アクティビティの完了条件の定義に従って、すべての受信が 1 回だけ実行される必要があります。暗黙的な永続化ポイントが TransactedReceiveScope 本体の末尾にあり、永続化操作も同じトランザクションで実行されます。
このサンプルを使用するには
Visual Studio 2010 を使用して、ParallelConvoySample.sln ソリューション ファイルを開きます。
ソリューションをビルドするには、F6 キーを押します。
どちらのプロジェクトも開始されるように設定されていることを確認します。
ソリューション エクスプローラーで、ソリューションを右クリックし、[スタートアップ プロジェクトの設定] をクリックします。
[マルチ スタートアップ プロジェクト] を選択し、両方のプロジェクトのアクションが [開始] に設定されていることを確認します。
ソリューションを実行するには、Ctrl キーを押しながら F5 キーを押します。
サーバーで "
Server is running
" と出力され、サーバーの準備ができたことが示されます。クライアント コンソール ウィンドウで任意のキーを押してサンプルを開始します。
![]() |
---|
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。
<InstallDrive>:\WF_WCF_Samples
このディレクトリが存在しない場合は、「.NET Framework 4 向けの Windows Communication Foundation (WCF) および Windows Workflow Foundation (WF) のサンプル」にアクセスして、Windows Communication Foundation (WCF) および WF のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactedConvoyScope
|