Processamento de mensagem com problema
Os serviços de fluxo de trabalho podem depender de mensagens enviadas em uma ordem específica. Um serviço de fluxo de trabalho contém uma ou mais atividades Receive e cada atividade Receive 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 uma ordem 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 se tornaria 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 é suportado apenas em canais que suportam ReceiveContext, como as ligações WCF MSMQ.
Ativando o processamento de mensagens fora de ordem
O processamento de mensagens fora de ordem é ativado definindo a propriedade AllowBufferedReceive como true
no WorkflowService. O exemplo a seguir mostra como definir a propriedade AllowBufferedReceive 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 atributo AllowBufferedReceive
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>