Elaborazione di messaggi ordinata in modalità di concorrenza singola

WCF non garantisce l'ordine in cui vengono elaborati i messaggi, a meno che il canale sottostante non sia con sessione. Ad esempio, un servizio WCF che usa MsmqInputChannel, che non è un canale con sessione, non riuscirà a elaborare i messaggi in ordine. In alcuni casi uno sviluppatore potrebbe voler usare il comportamento di elaborazione nell'ordine, ma non vuole usare le sessioni. In questo argomento viene descritto come configurare questo comportamento quando un servizio è in esecuzione in modalità di concorrenza singola.

Elaborazione di messaggi in ordine

A EnsureOrderedDispatch è stato aggiunto un nuovo attributo denominato ServiceBehaviorAttribute. Quando l'oggetto EnsureOrderedDispatch è impostato su true e ConcurrencyMode è impostato su Single, i messaggi inviati al servizio verranno elaborati in ordine. Nel frammento di codice seguente viene illustrato come impostare questi attributi.

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

Se l'oggetto ConcurrencyMode è impostato su qualsiasi altro valore, viene generato un oggetto InvalidOperationException.

Vedi anche