Laden...

WCF, Server macht Pause?!

Erstellt von chilic vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.311 Views
C
chilic Themenstarter:in
2.121 Beiträge seit 2010
vor 11 Jahren
WCF, Server macht Pause?!

Hallo Forum

Bin gerade etwas ratlos.
Ich übertrage per WCF Daten (wenige hundert kB) von einem PC mit Compact Framework zum Server auf einem PC mit normalem Framework. Das dauert ungewöhnlich lange.
Die übertragenen Daten sind schnell am PC, das habe ich mit Wireshark nachgeprüft. Außerdem wird der Konstruktor meiner WCF-Klasse sehr zügig aufgerufen.
Danach passiert ca. 10 Sekunden lang nichts was ich debuggen oder sonst wie ermitteln könnte.
Nach dieser Zeit wird in meine WCF-Methode gesprungen und anschließend ist auch der Aufruf auf dem Client schnell beendet.
In Wireshark sehe ich danach nur noch die in SOAP formatierte Antwort des PCs. Die Daten sind also wirklich bereits alle nach ca. 1 Sekunde übertragen, ich dachte erst vielleicht ist das Netz da irgendwie verstopft.
Auch mit nur wenigen Bytes als Daten ist die Wartezeit da.

Was könnte da während der Wartezeit passieren? Das Demarshalling der Daten kann ja nicht wirklich so lange dauern.
Ich habe außerdem den Client auf einem normalen .NET Framework ausprobiert, da gehts gewohnt fix.
Das ganze habe ich inzwischen bestimmt zig mal getestet, ich schließe also aus dass da irgendwelche zufälligen Hintergrundprozesse den PC verlangsamen.

Was könnte das sonst sein? Der einzige Unterschied ist dass der Client auf CompactFramework läuft. Aber nachdem der Aufruf ja bereits durch ist, sollte ja eigentlich kein Unterschied mehr sein?

2.298 Beiträge seit 2010
vor 11 Jahren

Hast du den Client, den du unter normalem Framework laufen lassen hast mal auf einen zweit-PC getestet, oder war der Test lediglich auf dem gleichen System?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

C
chilic Themenstarter:in
2.121 Beiträge seit 2010
vor 11 Jahren

Auch auf einem anderen. Da war der Aufruf so schnell wie erwartet, deutlich unter 1 s.

G
497 Beiträge seit 2006
vor 11 Jahren

ich würd mal das Tracing in der web.config des WCF-Dienstes aktivieren und schauen, wo genau das Ding pausiert.

C
chilic Themenstarter:in
2.121 Beiträge seit 2010
vor 11 Jahren

Hab ich mit TraceLevel = All gemacht, ist nur etwas verwirrend. Ich schreib mal die aus meiner Sicht relevanten Teile, vielleicht erkennt da jemand was. Ich nehm die Einträge die um die Wartezeit herum stehen.

Start der Übertragung war um etwa xx:xx:07 Uhr (also 7 Sekunden).

Activity: Abhören von...

  • 7 Sekunden (ziemlich am Startzeitpunkt): To: Bytes auf Verbindung .... empfangen.
  • 18 Sekunden: From: ServiceHost "Server.TestServer" schließen.

Activity: Bytes auf Verbindung .... empfangen

  • 7 Sekunden: To: Nachricht "1" wird verarbeitet.
  • 7 Sekunden: Aktivitätsgrenze
  • 8 Sekunden: To: Nachricht "1" wird verarbeitet.
  • 8 Sekunden: Aktivitätsgrenze
  • 8 Sekunden: Es wurde eine Nachricht über einen Kanal empfangen.
  • 15 Sekunden: Aktivitätsgrenze

Activity: Aktion "http:/tempuri..." verarbeiten

  • 8 Sekunden: Es wurde eine Nachricht über einen Kanal empfangen.
  • 8 Sekunden: einige Einträge der Art "System.irgendwas wurde geöffnet"
  • 8 Sekunden: Eine Nachricht wurde gelesen
  • 14 Sekunden: To: "Server.ITestServer.DataUpload" ausführen.
  • 14 Sekunden: Aktivitätsgrenze
    ...
  • 15 Sekunden: Eine Nachricht wurde geschrieben (scheint die Antwort gewesen zu sein)

zwischen den 8 und 14 Sekunden steht da nirgends was. Code von mir wird keiner ausgeführt, die aufgerufene Methode ist leer, die macht also gar nichts. Sie wird erst nach der Wartezeit angesprungen.
Erkennt da jemand noch was? Ich blick nicht mehr durch 😦

C
chilic Themenstarter:in
2.121 Beiträge seit 2010
vor 11 Jahren

Stand der Dinge, für alle die es interessiert.

Ich habe die Daten bisher als byte-Array verschickt. Wenn ich sie stattdessen Base64 codiere und als String verschicke, werden aus 10 Sekunden knapp 2 Sekunden.
Für Erklärungen bin ich nach wie vor offen 😃

2.298 Beiträge seit 2010
vor 11 Jahren

Das einzige was ich mir vorstellen könnte ist, das die Byte-Arrays von normalen Framework gesendet sich von denen des CF unterscheiden und das Demarshalling deshalb wirklich länger dauert. Ist aber nur eine Vermutung.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |