无序消息处理
本主题适用于 Windows Workflow Foundation 4。
工作流服务可能依赖于按特定顺序发送的消息。工作流服务包含一个或多个 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>