AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Http Get (aber bitte schnell)
Thema durchsuchen
Ansicht
Themen-Optionen

Http Get (aber bitte schnell)

Ein Thema von cherry · begonnen am 19. Mai 2014 · letzter Beitrag vom 28. Mai 2014
Antwort Antwort
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Http Get (aber bitte schnell)

  Alt 19. Mai 2014, 15:52
Hallo zusammen

Ich bin hier allmälich am verzweifeln. Ich muss mit Delphi7 auf einen C# WCF Webservice zugreifen. Im Vordergrund steht hier vor allem die Geschwindigkeit. Deshalb bin ich überall am sparen wos nur geht. Ich hab verschiedene Tests gemacht sowohl mit SOAP wie auch mit REST. Kurz und Knapp : Der Webservice hat eine Funktion Find(..) als Rückgabe werden verschiedene IDs erwartet.

Ich bevorzuge hier eigentlich REST um den Overhead möglichst gering zu halten. Mittels TIdHttp Komponente setze ich folgendes GET ab: "http://localhost:8080/Web/Find?text=blablabla". Ich hab den Prototyp so eingestellt, dass mir jeweils die ersten 1000 gefundenen IDs zurückgegeben werden. Die IDs werden als Komma separierten ASCII String zurückgegeben. Das ganze funktioniert eigentlich soweit ganz gut. Nur habe ich so meine Bedenken was die Geschwindigkeit angeht. Bei dieser Variante schwanken die Antwortzeiten ganz schön...

Die Suche ist immer dieselbe der Server hat jeweils ca. 644ms Sekunde um die Suche abzuarbeiten, der Rest ist eigentlich der Kommunikationsaufwand, welchen ich möglichst gering halten möchte...

(Antwortzeiten in ms)
1279, 1264, 671, 1263, 671, 1279, 671, 671, 670, 671

Dasselbe habe ich nun noch mit SOAP gemacht (RPC Encoded) und gibt mir folgende Zeiten
(Antwortzeiten in ms)
811, 811, 780, 780, 749, 749, 733, 749, 734, 733

Eigentlich habe ich erwartet, dass die REST Variante schneller ist. Wenn ich den Client auch mit C# schreibe, dann sind beide Varianten ungefähr gleich schnell. REST ein kleines bisschen schneller. Das müsste sich ja bei DELPHI genau so verhalten? Wenn ich die REST URL im Browser eingebe dauert es nie länger 656ms.

Warum schwankt TIdHttp.Get() so stark ? -> Irgendwie habe ich das Dumpfe Gefühl, dass es an der Komponente liegt. Hab deshalb auf Indy 9.0.18 geupdatet, was leider auch nichts gebracht hat. Des weiteren habe ich die synopsis Komponenten mit der Funktion HttpGetText getestet. Die war leider auch nicht schneller und wies ähnliche Schwankungen auf. (Was eigentlich gegen meine Vermutung spricht).

Da ist was faul... aber was? - Es kann ja nicht sein, dass SOAP hier schneller ist. Es müsste mindestens gleich schnell sein. Bauchweh machen mir vorallem die starken Schwankungen. Machmal dauert es einfach doppelt solange wie sonst...

Hat jemand eine Idee was ich noch versuchen kann, oder wo das Problem liegen könnte ?

Liebe Grüsse
& Danke im Voraus
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Http Get (aber bitte schnell)

  Alt 19. Mai 2014, 16:12
Nur mal so am Rande:

Warum ein Update auf Indy 9.x und nicht auf 10.x?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.008 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Http Get (aber bitte schnell)

  Alt 19. Mai 2014, 16:19
Eventuell läßt sich das anhand eines minimalen WCF Projekts reproduzieren, das hier gepostet werden kann? Dann könnte man verschiedene HTTP Clients testen (Indy 10.6, Apache Bench, JMeter).

Wenn ich die REST URL im Browser eingebe dauert es nie länger 656ms.
Wie wird die Zeit gemessen, ist das nur die Zeit für das Auslesen der HTTP Response? Oder für Request und Response?
Michael Justin

Geändert von mjustin (19. Mai 2014 um 16:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#4

AW: Http Get (aber bitte schnell)

  Alt 19. Mai 2014, 16:48
Hallo zusammen

@Rufo: Wenn ich ehrlich bin, hab ichs kurz versucht zu installieren. Da es nicht auf Anhieb geklappt hat und die Version mit "Work in progress" (bzw. nicht Stable) gekennzeichnet ist hab ichs dann auch nicht weiter versucht.

@mjustin: Eine minimale Anwendung kann ich gerne machen und posten... Bezüglich der Zeitangabe: Ich habe dazu die Chrome App "Advanced Rest Client" verwendet. Die Zeitangabe beinhaltet Request und Response
(und vermutlich sogar die Darstellung der IDs)
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.008 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Http Get (aber bitte schnell)

  Alt 19. Mai 2014, 17:02
@Rufo: Wenn ich ehrlich bin, hab ichs kurz versucht zu installieren. Da es nicht auf Anhieb geklappt hat und die Version mit "Work in progress" (bzw. nicht Stable) gekennzeichnet ist hab ichs dann auch nicht weiter versucht.
"Stable" Indy Versionen gab es schon lange nicht mehr. Indy 10.6 enthält aber sehr viele Verbesserungen und Bugfixes, so dass es sich durchaus lohnen kann sie zum Vergleich zu testen. Solange man keine fortgeschrittenen HTTP Features testen muss (Cookies, SSL, Form-Parameter) ist das in Minuten machbar.

Man muss Indy 10.6 nicht in der IDE als Package installieren, sondern lediglich für das konkrete Projekt die Suchpfade auf die Lib/Core, Protocols und System Verzeichnisse setzen. (Solange man nicht absichtlich das DCU Verzeichnis umbiegt, wird die Indy 9 Version wird dadurch nicht angefasst.)
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Http Get (aber bitte schnell)

  Alt 19. Mai 2014, 17:04
@Rufo: Wenn ich ehrlich bin, hab ichs kurz versucht zu installieren. Da es nicht auf Anhieb geklappt hat und die Version mit "Work in progress" (bzw. nicht Stable) gekennzeichnet ist hab ichs dann auch nicht weiter versucht.
Wo hast du denn geschaut?

Am besten nimmst du die SVN-Version http://www.indyproject.org/Sockets/Download/svn.DE.aspx
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#7

AW: Http Get (aber bitte schnell)

  Alt 19. Mai 2014, 18:06
Hab nun mal ein Beispielprojekt erstellt. Könnt ihr euch das mal anschauen? Ist echt witzig aus dem Delphi Programm ist das Aufrufen des Rest Webservice erheblich langsamer, als die SOAP Variante. Bei mir zeichnet es sich so aus, dass die REST Aufrufe jedes zweite Mal ca. gleich schnell sind.

REST

1080
811
1092
811
...

SOAP

Ist nicht nur konstanter, sondern erheblich schneller...

733
530
530
531
...

Der Aufruf mittels "Addvanced Rest Client Chrome App" ist jedoch am schnellsten...

550
507
507
507
...

Es fällt irgendwie auch auf, dass der erste Aufruf immer etwas länger geht...

Zum Anhang:

WebServerTest ist ein VS2010 Projekt mit einem REST und einem Soap Webservice

WSTestClient der passende Delphi7 Client.

PS:

Rest Service läuft auf Port 8080
http://localhost:8080/Web/Find?text=blabla

SOAP Service auf Port 8000
Angehängte Dateien
Dateityp: zip WSTestClient.zip (1,87 MB, 16x aufgerufen)
Dateityp: zip WebServerTest.zip (53,2 KB, 20x aufgerufen)
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?

Geändert von cherry (19. Mai 2014 um 18:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#8

AW: Http Get (aber bitte schnell)

  Alt 20. Mai 2014, 08:52
Hallo zusammen

Ich habs nun auch noch mit den aktuellsten Indy Komponenten (Trunc) versucht. Leider ist das Ergebnis dasselbe. Entweder mache ich etwas komplett falsch, oder die Komponente hat ein Problem. Wie verhält sich das Demoprogramm bei euch? - Macht ihr da dieselben Beobachtungen?

LG
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz