无序消息处理

工作流服务可能依赖于按特定顺序发送的消息。 工作流服务包含一个或多个 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>  

另请参阅