Verarbeiten von Nachrichten außerhalb der normalen Reihenfolge

Workflowdienste können davon abhängig sein, dass Nachrichten in einer bestimmten Reihenfolge gesendet werden. Ein Workflowdienst enthält eine oder mehrere Receive-Aktivitäten, und jede Receive-Aktivität erwartet eine bestimmte Nachricht. Ohne bestimmte Transportübermittlungsgarantien kann es vorkommen, dass von Clients gesendete Nachrichten verzögert und in einer Reihenfolge gesendet werden, die der Workflowdienst ggf. nicht erwartet. Das Implementieren eines Workflowdiensts, der das Senden von Nachrichten in einer bestimmten Reihenfolge nicht erfordert, wird normalerweise mithilfe einer Parallel-Aktivität durchgeführt. Bei einem komplizierteren Anwendungsprotokoll würde der Workflow schnell sehr komplex werden. Mit dem Feature zur Verarbeitung von Nachrichten außerhalb der normalen Reihenfolge in Windows Communication Foundation (WCF) können Sie einen Workflow dieser Art ganz ohne die Komplexität geschachtelter Parallel-Aktivitäten erstellen. Die Verarbeitung von Nachrichten außerhalb der normalen Reihenfolge wird nur auf Kanälen unterstützt, die ReceiveContext unterstützen, z. B. die WCF-MSMQ-Bindungen.

Aktivieren der Verarbeitung von Nachrichten außerhalb der normalen Reihenfolge

Sie aktivieren die Verarbeitung von Nachrichten außerhalb der normalen Reihenfolge, indem Sie die AllowBufferedReceive-Eigenschaft für WorkflowService auf true festlegen. Im folgenden Codebeispiel wird veranschaulicht, wie Sie die AllowBufferedReceive-Eigenschaft im Code festlegen.

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

Sie können das AllowBufferedReceive-Attribut auch auf einen Workflowdienst in XAML anwenden, wie im folgenden Beispiel gezeigt.

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

Siehe auch