Hallo zusammen,
wir haben im Betrieb einen Service laufen der Bilder(Maps) generiert(ca. 100-300kb) und uns diese zurück schickt. Dieser Service wurde nicht von uns entwickelt und wird bisher über ein Delphi Client angesteuert, was auch sehr gut funktioniert. Dieser Client soll in .NET neu entwickelt werden. Dazu habe ich habe eine "Service Reference" über WSDL hinzugefügt und VS hat mir alle benötigten Klassen zum ansprechen des Services generiert. Hat alles wunderbar funktioniert und ich bekomme auch eine Antwort vom Service, allerdings dauert eine Anfrage ca. 20x länger als beim Delphi Client. Ich glaueb nicht das es am Netzwerk-Verkehr liegt, denn wenn ich diesen überwache kommt eine Antwort relativ schnell zurück. Ich vermute das Problem bei der Deserialiserung des Antwort-Objektes, weches das Bild als Byte Array sowie einige Zusatzdaten enthält. Hat jemand Erfahrung mit diesem Problem und weiß, ob es möglich ist, die Performance zu erhöhen oder die Deserialisierung irgendwie zu umgehen, so dass ich nur den reinen XML-String bekomme?
Wer zuletzt lacht, denkt zu langsam
Wenn der Delphi Client die Anfrage um einiges Schneller durchführen kann, als der .NET Client, liegt es weniger am Webservice. Ich schätze eher, dass es irgendwo im .NET Client hakt.
Machst du nach der Webserviceantwort noch irgend welche anderen Dinge die eventuell ausbremsen?
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
wie gesagt, ich glaube auch nicht dass es am Service liegt, da die Antworten relativ schnell kommen. Es sieht so aus als liege es an der xml Deserialisierung, allerdings habe ich noch keinen Weg gefunden diese zu beschleunigen bzw. zu umgehen.
Wer zuletzt lacht, denkt zu langsam
Weg gefunden diese zu beschleunigen bzw. zu umgehen
Kannst es ja mal mit dem HttpWebRequest versuchen. Ich denke die Binärdaten kommen Base64 Codiert und wenn die Hauptaufgabe des WS das Ausliefern der Bilder ist sollte mit dem WebRequest nicht allzuviel code nötig sein.
Siehe z.B.: WebClient mit HTTP-POST- und Cookie-Unterstützung
Habe es nun mit dem WebRequest gebaut, ist zwar einiges mehr an Aufwand, läuft nun aber sehr viel schneller.
Danke für den Tip jaensen. 👍
Wer zuletzt lacht, denkt zu langsam