ワークフロー サービスは、特定の順序で送信されるメッセージに依存する場合があります。 ワークフロー サービスには 1 つ以上の Receive アクティビティが含まれており、各 Receive アクティビティは特定のメッセージを受け取ります。 特定のトランスポート配信の保証がないと、クライアントによって送信されたメッセージが遅延し、ワークフロー サービスが予期しない順序で配信される可能性があります。 メッセージを特定の順序で送信する必要のないワークフロー サービスの実装は、通常、Parallel アクティビティを使用して行われます。 より複雑なアプリケーション プロトコルの場合、ワークフローは非常に迅速に複雑になります。 Windows Communication Foundation (WCF) の順序が正しくないメッセージ処理機能を使用すると、入れ子になった並列アクティビティの複雑さをすべてなく、このようなワークフローを作成できます。 順序が異なったメッセージ処理は、WCF MSMQ バインドなどの ReceiveContext をサポートするチャネルでのみサポートされます。
アウトOf-Order メッセージ処理の有効化
AllowBufferedReceive プロパティを WorkflowService でtrue
に設定することで、順序が異なったメッセージ処理が有効になります。 次の例は、コードで AllowBufferedReceive プロパティを設定する方法を示しています。
// Code: Opt-in to Buffered Receive processing...
WorkflowService service = new WorkflowService
{
Name="MyService",
Body = workflow,
AllowBufferedReceive = true
};
次の例に示すように、 AllowBufferedReceive
属性を XAML のワークフロー サービスに適用することもできます。
// Xaml: Opt-in to Buffered Receive processing...
<WorkflowService AllowBufferedReceive="True">
<!--the actual children activities -->
</Sequence>