順番を無視したメッセージの処理

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

ワークフロー サービスは、特定の順序で送信されるメッセージに依存する場合があります。ワークフロー サービスには 1 つ以上の Receive アクティビティが含まれ、それぞれの Receive アクティビティは特定のメッセージに対応しています。特定のトランスポート配信保証がないと、クライアントから送信されるメッセージに遅延が生じ、それによって、ワークフロー サービスが予期しない順序でメッセージが配信されることがあります。特定の順序でメッセージが送信されることを必要としないワークフローは、通常、Parallel アクティビティを使用して実装されます。アプリケーション プロトコルがより複雑な場合は、ワークフローがすぐに複雑になります。Windows Communication Foundation (WCF) のメッセージ処理機能では、順番が無視されるため、入れ子になった複雑な Parallel アクティビティを含まないワークフローを作成できます。順番を無視したメッセージ処理は、WCF MSMQ バインディングなど、ReceiveContext に対応するチャネルでのみサポートされます。

順番を無視したメッセージ処理の有効化

順番を無視したメッセージ処理は、ワークフロー サービスで AllowBufferedReceive プロパティを true に設定することで有効化できます。次の例は、コードで AllowBufferedReceive プロパティを設定する方法を示しています。

// Code: Opt-in to Buffered Receive processing...
WorkflowService service = new WorkflowService
{
    Name="MyService",
    Body = workflow,
    AllowBufferedReceive = true
};

また、次の例に示すように、XAML で AllowBufferedReceive 属性をワークフロー サービスに適用することもできます。

// Xaml: Opt-in to Buffered Receive processing...
<WorkflowService AllowBufferedReceive="True">
   <!—the actual children activities -->
</Sequence>

参照

リファレンス

ReceiveContext

その他のリソース

ワークフロー サービス
Queues and Reliable Sessions