locked
WCF - eigene Thread pro Session RRS feed

  • Frage

  • Hallo,

    in unserem System verwenden wir WCF. Jeder Client hat seine eigene Session. Nun würde ich gerne für jede Session eine eigene Thread verwenden. Bisher habe ich hierzu keine Lösung gefunden.

    Kann mir da jemand einen Tip geben ?

    Gruß
    Christian

     

    Freitag, 14. Oktober 2011 09:46

Alle Antworten

  • Hallo, es ist möglich, dass eine Clientanwendung mehrere Threads anlegt und dann versucht, gleichzeitig mehrere Operationen in derselben Sitzung aufzurufen. In den Standardeinstellungen arbeitet ein Dienst mit nur einem Thread (Single-Threaded). Er verarbeitet also immer nur eine einzige Anforderung gleichzeitig. Falls eine neue Anforderung eintrifft, während der Dienst noch eine vorherige Anforderung verarbeitet, sorgt die WCF-Runtime dafür, dass die neue Anforderung warten muss, bis die erste Anforderung abgeschlossen ist.

    Dieses Verhalten kann man ändern. Das Attribut ServiceBeahvior hat eine Eigenschaft ConcurrencyMode

    Über diese Eigenschaft kann man festlegen wie gleichzeitige Anfragen in derselben Sitzung verarbeitet werden.

    standardwert ist ConcurrencyMode.Single

    Du solltest Deinem Service ConcurrencyMode.Multiple zuweisen.

    Also:

    [ServiceBehavior(..., ConcurrencyMode = ConcurrycyMode.Single)]

    public calss MyLittleService: IMyLitteServiec

    {

    ...

    }

    Freitag, 14. Oktober 2011 17:03
  • Hallo,

    danke für die Antwort, aber diese verschiedenen Konstallationen habe ich alle gelesen und ausprobiert.
    Nochmal zu verdeutlichen:

    Es geht darum, dass wenn eine Session eröffnet wird, ein neuer Thread erzeugt wird und der ist dann ausschießlich für dieses Session zuständig und sonst nichts. Wird die Session geschlossen, wird auch der Thread beendet. Das wäre genau das, was ich benötige.

    Gruß
    Christian

     

    Freitag, 21. Oktober 2011 15:29
  • Dann sollte der Instanzkontextmodus PerSession für Dich richtig sein.
    Montag, 24. Oktober 2011 09:41
  • Diesen Modus verwende ich ja schon.

    Dieser erstellt aber nur dann eine neue Thread, wenn keine bereits existierende verfügbar ist.
    Und es wird auch immer die Thread verwendet, der gerade verfügbar ist.

    Was ich suche, ist eine feste Zuordnung einer Thread zu einer Session und für jede einzelne Session eine eigene Thread.

    Montag, 24. Oktober 2011 09:49