Processamento de mensagens fora de ordem
Os serviços de fluxo de trabalho podem depender do envio de mensagens em uma ordem específica. Um serviço de fluxo de trabalho contém uma ou mais Receive atividades e cada Receive atividade está esperando uma mensagem específica. Sem garantias específicas de entrega de transporte, as mensagens enviadas pelos clientes podem ser atrasadas e, portanto, entregues em um pedido que o serviço de fluxo de trabalho pode não esperar. A implementação de um serviço de fluxo de trabalho que não exige que as mensagens sejam enviadas em uma ordem específica normalmente é feita usando uma atividade paralela. Para um protocolo de aplicação mais complicado, o fluxo de trabalho tornar-se-ia muito complexo muito rapidamente. O recurso de processamento de mensagens fora de ordem no Windows Communication Foundation (WCF) permite que você crie esse fluxo de trabalho sem toda a complexidade das atividades paralelas aninhadas. O processamento de mensagens fora de ordem só é suportado em canais que suportam ReceiveContext ligações WCF MSMQ.
Habilitando o processamento de mensagens fora de ordem
O processamento de mensagens fora de ordem é habilitado definindo a AllowBufferedReceive propriedade como true
no WorkflowService. O exemplo a seguir mostra como definir a AllowBufferedReceive propriedade no código.
// Code: Opt-in to Buffered Receive processing...
WorkflowService service = new WorkflowService
{
Name="MyService",
Body = workflow,
AllowBufferedReceive = true
};
Você também pode aplicar o AllowBufferedReceive
atributo a um serviço de fluxo de trabalho em XAML, conforme mostrado no exemplo a seguir.
// Xaml: Opt-in to Buffered Receive processing...
<WorkflowService AllowBufferedReceive="True">
<!--the actual children activities -->
</Sequence>