順番を無視したメッセージの処理
このトピックの内容は、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>