Aktuelle WCF-Anrufe über den gemeinsam genutzten Kanal

Ich habe eine Webebene, die Anrufe an eine Anwendungsebene weiterleitet. Die Webschicht verwendet dazu einen gemeinsam genutzten, zwischengespeicherten Kanal. Die fraglichen Dienste auf Anwendungsebene sind zustandslos und haben eine aktivierte Parallelität.

Aber sie werden nicht gleichzeitig aufgerufen.

Wenn ich die Webebene ändere, um bei jedem Anruf einen neuen Kanal zu erstellen, dannmache Ruft gleichzeitig die Anwendungsebene auf. Aber ich möchte diese Kosten vermeiden, da sie für mein Szenario funktional nicht erforderlich sind. Ich habe keinen Sitzungsstatus und muss den Anrufer auch nicht jedes Mal neu authentifizieren. Ich verstehe, dass die Erstellung der Kanalfabrik weitaus teurer ist als die Erstellung der Kanäle, aber es sind immer noch Kosten, die ich nach Möglichkeit vermeiden möchte.

Ich fandDieser Beitra auf MSDN, das besagt:

Während Kanäle und Clients, die von den Kanälen erstellt wurden, threadsicher sind, können möglicherweise nicht mehrere Nachrichten gleichzeitig auf die Leitung geschrieben werden. Wenn Sie große Nachrichten senden, insbesondere beim Streaming, blockiert der Sendevorgang möglicherweise das Warten auf einen weiteren Sendevorgang.

Zunächst sende ich keine großen Nachrichten (nur viele kleine, seit ich Lasttests durchführe), sehe aber immer noch das Blockierungsverhalten. Zweitens ist dies eine ziemlich offene und wenig hilfreiche Dokumentation. Es heißt, dass sie das Schreiben von mehr als einer Nachricht "möglicherweise nicht" unterstützen, erklärt aber nicht die Szenarien, unter denen sie gleichzeitige Nachrichten unterstützen würden.

Kann jemand Licht ins Dunkel bringen?

Addendum: Ich denke auch darüber nach, einen Pool von Kanälen zu erstellen, die der Webserver verwendet, um Anforderungen zu erfüllen. Aber auch hier sehe ich keinen Grund, warum mein bestehender Ansatz blockieren sollte, und ich möchte die Komplexität nach Möglichkeit vermeiden.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage