Compartir a través de


Procesamiento ordenado de mensajes en modo de concurrencia única

WCF no garantiza el orden en que se procesan los mensajes, a menos que el canal subyacente tenga sesión. Por ejemplo, un servicio WCF que usa MsmqInputChannel, que no es un canal con sesión, no procesará los mensajes en orden. En algunas circunstancias un desarrollador puede querer el comportamiento de procesamiento en orden, pero no quiere usar sesiones. En este tema se describe cómo configurar este comportamiento cuando un servicio se ejecuta en modo de simultaneidad única.

Procesamiento de mensajes en orden

Se ha agregado un nuevo atributo denominado EnsureOrderedDispatch a .ServiceBehaviorAttribute Cuando EnsureOrderedDispatch se establece en true y ConcurrencyMode se establece en Single, los mensajes enviados al servicio se procesarán en orden. En el fragmento de código siguiente se muestra cómo establecer estos atributos.

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, EnsureOrderedDispatch = true )]  
    class Service : IService  
    {  
         // ...  
    }  

Si ConcurrencyMode se establece en cualquier otro valor, se lanza un InvalidOperationException.

Consulte también