Streamen einer unbestimmten Anzahl von Objekten über WCF

8

Ich habe einen WCF-Dienst, der große (10 bis 20 Millionen) Objekte aus der Datenbank lesen muss.

Was ich tun möchte, ist, dass der Client einen Stream öffnet und der Server beim Lesen Daten aus der Datenbank pusht.

So könnte der Client einfach in einer Schleife sitzen, die Nachrichten deserialisiert, bis er die EOF-Nachricht vom Server erhält, im Stil der Twitter Streaming API, aber mit einer endlichen Menge. Das Problem, das ich habe, ist, wie man den Stream zurückgibt und dann weiter schreibt. Ist das mit WCF möglich?

    
Jason Ruckman 29.08.2010, 12:16
quelle

3 Antworten

2

Wie wäre es, statt einen Streaming / Blocking-Dienst einzurichten, verwenden Sie so etwas wie WS Dual Http . Damit haben Sie einen asynchronen bidirektionalen Callback-Kanal, mit dem Sie Informationen zwischen dem Server und dem Client anfordern / beantworten können. Probleme, die Sie möglicherweise sehen, wenn Sie den gesamten Satz streamen möchten, ist eine normale Art, dass einige der Ressourcen andere Anforderungen (oder Timeouts) blockieren, während andere Benutzer versuchen, auf den Dienst zuzugreifen.

    
Matthew Whited 29.08.2010 12:41
quelle
0

Das Problem besteht darin, dass WCF keinen Antwortstream für den Vorgang bereitstellt. Der aus der Operation zurückgegebene Stream ist nur ein "Inhalt" einer Nachricht. Ich versuchte, WCF mit einigen Threading-Szenarien zu tricksen, wo ich MemoryStream zurückgab und versuchte, es aus anderem Thread zu füllen, aber wie erwartet, hat es nicht funktioniert.

Erwähnte HttpHandler ist der einzige Weg zu gehen.

    
Ladislav Mrnka 30.08.2010 22:07
quelle
0

Vielleicht möchten Sie sich die ansehen PollingDuplexHttpBinding (Hinweis-ID konnte könnte :)).

Manche mögen diese Bindung nicht sehr, aber ich hatte nach der anfänglichen Hürde, die Konfiguration richtig zu machen, nicht allzu viele Probleme damit.

Es könnte sicherlich die Arbeit machen, die ich denke, da es wenig mehr ist als der "lange Wahltrick", der in Web-Sockets verwendet wird, wie ich es verstehe.

HTH.

    
Stimul8d 02.12.2011 12:39
quelle

Tags und Links