Geordnete Verarbeitung von Nachrichten im Single-Parallelitätsmodus

WCF macht keine Zusagen bezüglich der Reihenfolge, in der Nachrichten verarbeitet werden, es sei denn, der zugrunde liegenden Kanal ist sitzungsbasiert. Beispielsweise kann ein WCF-Dienst, der MsmqInputChannel (einen nicht sitzungsbasierten Kanal) verwendet, Nachrichten nicht in der Reihenfolge verarbeiten. Es gibt mehrere Situationen, in denen ein Entwickler die Verarbeitung in der Reihenfolge und keine sitzungsbasierte Verarbeitung wünscht.In diesem Thema wird beschrieben, wie Sie dieses Verhalten konfigurieren, wenn ein Dienst im Single-Parallelitätsmodus ausgeführt wird.

Verarbeiten von Nachrichten innerhalb der der normalen Reihenfolge

Ein neues Attribut mit dem Namen EnsureOrderedDispatch wurde ServiceBehaviorAttribute hinzugefügt.Wenn EnsureOrderedDispatch auf TRUE und ConcurrencyMode auf ConcurrencyMode festgelegt ist, werden an den Dienst gesendete Nachrichten in der normalen Reihenfolge verarbeitet.Der folgende Codeausschnitt veranschaulicht, wie diese Attribute festgelegt werden.

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

Wenn ConcurrencyMode auf einen anderen Wert festgelegt ist, wird InvalidOperationException ausgelöst.

Siehe auch

Sitzungen, Instanziierung und Parallelität
Parallelität