Frage

Vor kurzem hat mich auf einem WCF-App gearbeitet und brauche einige Funktionalitäten, die Seife Nachrichtenkörper zu komprimieren, so dass die Größe der Antwort vom Dienst reduziert werden soll.

Nach einigen Recherchen fand ich eine Implementierung online von http://weblogs.asp.net/cibrax/archive/2006/03/29/WS_2D00_Compression-for-WCF.aspx'> http://weblogs.asp.net/cibrax/archive/2006/03 /29/WS_2D00_Compression-for-WCF.aspx schufen die Autoren es ein neues Bindeelement ‚CompressionBindingElement‘, mit seinen Kanälen bezogenen Klassen zugeordnet sind.

Diese Kompression Lösung funktioniert perfekt in meiner WCF-Anwendung, und die Größe der Reaktion wurde fast 90% reduziert, toll! Getestet habe ich es zunächst über http-Bindung (bedeutet individuelle Bindung mit http Transport) und alles scheint gut.

Wenn ich es über net.tcp versucht Bindung (benutzerdefinierte Bindung TCP-Transport verwenden), die App noch funktionierte gut. Allerdings, wenn ich es von einigen Tracing-Tool überprüft, fand ich etwas seltsam.

Ich habe ein Unit-Test von 10-mal auf den Aufruf einer Methode, die der Kunde von Channel erstellt und ausdrücklich alle Bindeelemente hinzugefügt, einschließlich der Kompressionsbindungselement. Als ich zuerst die Reaktion in TcpTrace geprüft, war ich überrascht zu sehen, dass diese alle 10 Nachrichten in einer einzigen Anforderung kombiniert werden.

Also habe ich versucht SvcTraceViewer die Anfrage zu überprüfen, festgestellt, dass die Socket-Verbindung offen hält, bis der Dienst heruntergefahren wurde. Ich schaute in den Bearbeitungsfortschritt und glaubte, alle Nachrichten, die Kanäle für jede Anforderung sind geschlossen, aber die Verbindung gerade nicht geschlossen.

Das Problem trat nur in Netto-tcp mit einem Kompressionsbindungselement zu binden, wenn das Element nicht auf der Bindung oder in http wurde hinzugefügt Bindung scheint alles in Ordnung.

Hat jemand diese Lösung versucht und das gleiche Problem schon einmal gesehen? Gibt es etwas, was ich tun kann, um die Verbindung zu zwingen, zu schließen? Könnte ich verpasst etwas habe?

Vielen Dank, Tony

War es hilfreich?

Lösung

Es sieht aus wie Microsoft jetzt einen offiziellen Artikel über Kompressionscodierers hat: http://msdn.microsoft.com/en- us / library / ms751458 (v = VS.90) aspx

Ich habe es getestet über und sieht aus wie das Problem ist weg. Es ist nicht so einfach zu meiner Einheit Testlauf nach, dass viele Tage zu machen:)

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