順番を無視したメッセージの処理
ワークフロー サービスは、特定の順序で送信されるメッセージに依存する場合があります。 ワークフロー サービスには 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>