Procesar un mensaje sin orden
Los servicios del flujo de trabajo pueden depender de mensajes enviados en un orden concreto. Un servicio del flujo de trabajo contiene una o más actividades Receive y cada actividad Receive espera un mensaje concreto. Sin garantías de entrega de transporte específicas, se pueden retrasar los mensajes enviados por los clientes y, por lo tanto, se pueden entregar en un orden que el servicio del flujo de trabajo no se espera. La implementación de un servicio del flujo de trabajo que no requiera que los mensajes se envíen en un orden concreto se suele llevar a cabo mediante una actividad paralela. Si el protocolo de aplicación es más complicado, el flujo de trabajo se volvería muy complejo con mucha rapidez. La característica de procesamiento de mensajes desordenado en Windows Communication Foundation (WCF) le permite crear este tipo de flujo de trabajo sin toda la complejidad de las actividades paralelas anidadas. El procesamiento de mensajes desordenado solo se admite en canales que admitan ReceiveContext, como los enlaces de MSMQ de WCF.
Habilitar el procesamiento de mensajes desordenado
El procesamiento de mensajes desordenado se habilita estableciendo la propiedad AllowBufferedReceive en true
en WorkflowService. En el siguiente ejemplo, se muestra cómo establecer la propiedad AllowBufferedReceive en código.
// Code: Opt-in to Buffered Receive processing...
WorkflowService service = new WorkflowService
{
Name="MyService",
Body = workflow,
AllowBufferedReceive = true
};
También puede aplicar el atributo AllowBufferedReceive
a un servicio del flujo de trabajo en XAML, tal y como se muestra en el siguiente ejemplo.
// Xaml: Opt-in to Buffered Receive processing...
<WorkflowService AllowBufferedReceive="True">
<!--the actual children activities -->
</Sequence>