工作流服务可能取决于按特定顺序发送的消息。 工作流服务包含一个或多个 Receive 活动,每个 Receive 活动需要特定消息。 如果没有特定的传输传递保证,客户端发送的消息可能会延迟,因此,工作流服务可能无法按预期的顺序传递。 实现不需要按特定顺序发送消息的工作流服务通常使用并行活动完成。 对于更复杂的应用程序协议,工作流将很快变得非常复杂。 Windows Communication Foundation(WCF)中的无序消息处理功能允许创建此类工作流,而无需所有嵌套并行活动的复杂性。 只有支持 ReceiveContext 的通道(如 WCF MSMQ 绑定)才支持无序消息处理。
启用无序消息处理
通过在 WorkflowService 上将 AllowBufferedReceive 属性设置为 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>