Ich versuche WCF zu verwenden, um eine Kometen-Stil-Server-Push zu einer Ajax-Webanwendung zu implementieren.WCF-Komet und Threads
In meinem WCF-Dienst habe ich eine WaitForEvents-Methode implementiert, die Monitor.Wait aufruft, um den Thread anzuhalten, bis neue Daten eintreffen. An diesem Punkt wird der Monitor gepulst, und die Methode gibt die neuen Daten zurück, die die Komet-Stil-Anfrage schließen.
Die Anfrage wird erneut gemacht, wenn dies geschieht.
Derzeit funktioniert das gut, aber ich habe festgestellt, dass WCF einen neuen Thread für jeden verbundenen Benutzer erstellen muss. Dies liegt wahrscheinlich daran, dass der Thread erst dann in den Threadpool zurückgegeben werden kann, wenn Daten eintreffen, sodass jeder verbundene Benutzer einen neuen Thread benötigt.
Ich möchte diese Implementierung effizienter machen, indem ein Thread mehrere Verbindungen bedient. Wenn ich einen Socket verwenden würde, könnte dies getan werden, indem der Socket offen bleibt und der Thread zuerst an den Thread-Pool zurückgegeben wird. Wenn neue Daten ankommen, werden sie von einem anderen Thread geliefert und wir können die neuen Daten direkt in den Socket schreiben und schließen.
Weiß jemand, wie dies über WCF getan werden kann? Ich habe mir "Push-Style Streaming" http://msdn.microsoft.com/en-us/library/bb472551.aspx angesehen und sie erwähnen, dass "WCF ein" Pull "-Modell implementiert, in dem der Anwendungscode (der Dienst) eine Instanz von Stream zurückgibt und auf der untergeordneten Infrastruktur beruht um Daten aus diesem Stream zu ziehen und in das Netzwerk zu schreiben. " aber ich kann keine Beispiele dafür auf der Website finden.
Vielen Dank im Voraus!