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

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

関連項目