2009-07-20 5 views
2

Ich habe eine Desktop-Anwendung Senden/Empfangen von Nachrichten (keine Dateien) zu/von einem WCF-Dienst.WCF: abfangen Nachricht senden/empfangen Fortschritt in Client

Wie kann ich die Gesamtgröße der zu übertragenden Nachricht abfangen und eine Rückmeldung (Anzahl übertragener Bytes) während der Übertragung empfangen, sodass dem Benutzer der Desktop-App möglicherweise ein Fortschrittsbalken angezeigt wird?

Wie viele Ansätze gibt es? Was ist das beste für mein Anwendungsszenario?

Kommentare oder Vorschläge werden sehr geschätzt,

Cullen

Antwort

4

Sie benötigen die Erweiterungspunkte von WCF, um zu prüfen, in den Prozess der Nachricht an Haken hin und her geschickt werden.

Sie könnten z.B. Implementieren Sie eine IClientMessageInspector, um die Nachricht zu überprüfen, kurz bevor sie an den Server gesendet wird, und möglicherweise auch die Antwort, wenn sie zurückkommt. Einen Ausgangspunkt finden Sie unter MSDN docs.

Dies könnte auch ein guter Ausgangspunkt sein - ein weißes Papier über die basics of WCF Extensibility.

Diese Herren hier zeigt, wie zu Write a WCF message inspector - genau das, was Sie sehen würden.

Ich bezweifle, dass Sie in der Lage sein werden, in eine "so viele Bytes wurden bisher übertragen" Art von Feedback-Schleife, obwohl - plus, wenn Ihre Nachrichten von angemessener Größe sind, senden sie auf die Leitung wird ein Frage von Mikrosekunden und Ihre Fortschrittsbalken zu aktualisieren würde länger dauern, als sie :-)

Marc

+0

@mark_s Senden: danke, ich werde die verschiedenen Ressourcen überprüfen Sie in Ihrem Beitrag enthalten haben. –