Toon posts:

[Delphi/C#] Web service snelheids probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Situatie:
Een Delphi 5 COM dll met C# web service wrapper omgezet naar een D6 web service. Eerst als ISAPI dll onder IIS, daarna als stand-alone exe met Indy's IdHTTPServer component, en in beide gevallen is 't veel trager dan de oude oplossing.

Vanuit een ASP.NET C# client kostte 100 aanroepen van 2 simpele methods (1x genereren van een nieuwe GUID, en 1x 2 records uit een MSSQL tabel halen) zo'n 2 seconden, maar met diezelfde client kost dat op de Delphi6 versie ruim 40 seconden.

OK, testclient geschreven in Delphi6 die hetzelfde doet, en wanneer die de web service aanroept met WSDL, duurt die lus ook zo'n 40 seconden. Zonder WSDL loopt dat terug naar ruim 4 seconden. Geen snelheidsverbetering t.o.v. de oude situatie dus, maar heel erg acceptabel.

Alleen krijg ik dit bij de C# client niet voor elkaar. :(
Het probleem zit 'm in het feit dat bij de C# client tussen de connectie met IdHTTPServer en het starten van de dispatcher altijd gemiddeld zo'n 0.15 seconden zit (x 200 aanroepen = 30 sec), terwijl dit bij de Delphi client niet of nauwelijks meetbaar is met een standaard TDateTime.

Toen maar en HTTP sniffer op de client gezet, en het verschil lijkt 'm te zitten in de SOAPRequest packets. De Delphi client stuurt nette volledige XML requests, terwijl de C# client HTTP POST pakketten verstuurt.
In web.config van die C# client al geprobeerd om de protocollen HttpPost en HttpGet uit te zetten, maar hij bleef gewoon HTTP POST requests sturen...

2 Vraagjes:
• Kan het verschil in request formaten zo'n groot performance verschil uitmaken, of zit ik helemaal verkeerd?
• Hoe krijg ik C# zo gek dat 'ie ook nette SOAP XML requests stuurt?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik snap m niet helemaal?
'Delphi 5 COM + C# Webservice - C# Client' is veel sneller dan 'Delphi 6 Webservice - C# Client'?

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Sorry voor de late reactie (gewerkt vandaag), maar idd, daar komt 't ruwweg wel op neer.

Nou ligt voor de hand om te zeggen "dan hou je 't toch bij die oude web service?", maar die D6-versie (1 executable en 1 admin tooltje) is veel gemakkelijker te deployen dan de D5/C#-versie (D5 dll, C# assemby, IIS en .NET framework), en da's ook wat waard. :)
En de D6 versie is zonder veel moeite om te zetten naar Linux, iets wat een stuk lastiger is wanneer C# en vooral COM om de hoek komen kijken (ik weet dat Mono er is, maar COM wordt ietsje pittiger).

Bovendien wil ik graag weten waarom er zulke grote performance verschillen zijn, en daar ben ik helaas nog steeds niet achter...