Geordnete Verarbeitung von Nachrichten im Single-ParallelitätsmodusOrdered Processing of Messages in Single Concurrency Mode

WCF gibt keine Garantie bezüglich der Reihenfolge, in der Nachrichten verarbeitet werden, es sei denn, der zugrunde liegenden Kanal sitzungsbasierten ist.WCF makes no guarantees about the order in which messages are processed, unless the underlying channel is sessionful. Beispielsweise kann ein WCF-Dienst, der MsmqInputChannel, verwendet wird, das einen sitzungsbasierten Kanal nicht ist, Nachrichten nacheinander verarbeitet.For instance, a WCF service that uses MsmqInputChannel, which is not a sessionful channel, will fail to process messages in order. Es gibt einige Situationen, in denen ein Entwickler kann die in der auftragsverarbeitung Verhalten nicht möchten, jedoch Sitzungen verwenden.There are some circumstances where a developer may want the in order processing behavior but not want to use sessions. In diesem Thema wird beschrieben, wie Sie dieses Verhalten konfigurieren, wenn ein Dienst im Single-Parallelitätsmodus ausgeführt wird.This topic describes how to configure this behavior when a service is running in Single Concurrency Mode.

Verarbeiten von Nachrichten in der normalen ReihenfolgeIn-order Message Processing

EnsureOrderedDispatch wurde ein neues Attribut mit dem Namen ServiceBehaviorAttribute hinzugefügt.A new attribute called EnsureOrderedDispatch has been added to the ServiceBehaviorAttribute. Wenn EnsureOrderedDispatch auf trueConcurrencyMode und Single auf festgelegt ist, werden an den Dienst gesendete Nachrichten in der normalen Reihenfolge verarbeitet.When EnsureOrderedDispatch is set to true and ConcurrencyMode is set to Single messages sent to the service will be processed in order. Der folgende Codeausschnitt veranschaulicht, wie diese Attribute festgelegt werden.The following code snippet illustrates how to set these attributes.

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

Wenn ConcurrencyMode auf einen anderen Wert festgelegt ist, wird InvalidOperationException ausgelöst.If ConcurrencyMode is set to any other value, an InvalidOperationException is thrown.

Siehe auchSee Also

Sitzungen, Instanzerstellung und ParallelitätSessions, Instancing, and Concurrency
ParallelitätConcurrency