Frage

Ich habe einen WCF-Dienst, die synchron verwendet wird, aber seine ConcurrencyMode auf ConcurrencyMode.Multiple Wert eingestellt, da der Dienst tatsächlich staatenlos ist. Wie viel Aufwand erlegt dieser Modus? Macht es Sinn, den Modus zu ConcurrencyMode.Single ändern?

War es hilfreich?

Lösung

Es ist nicht wirklich jeden Kopf zu verhängen - außer der Tatsache, dass die einzelne Dienstinstanz der gleichzeitigen Zugriff handhaben muss, hat es 200% Faden sicher sein -. Und das ist ziemlich heikel Programmierung

Die Umstellung auf ConcurrencyMode.Single macht die Programmierung es einfacher - keine Sorgen mehr über die Parallelität in der Serviceklasse. Aber es serialisiert alle Anforderungen -. Nur einer nach dem anderen jemals behandelt werden und somit schnell einen Leistungsengpass werden

Sie nennen Ihr Service ist staatenlos - warum also nicht die in der Regel auf Best Practice vereinbart nutzen - nicht ein Singleton, sondern eine reguläre „pro-Anruf“ Serviceklasse. In diesem Modus erhält jede Anforderung eine frische neue Instanz der Dienstklasse, gibt es kein Getue über Multithread-Programmierung benötigt (alle Multithreading durch die WCF-Laufzeit behandelt wird), können Sie die gleichzeitige Bearbeitung mehrerer Anfragen bekommen - zu mir, die nur Vorteilen sind und keine Schattenseiten!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top