Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [DELPHI - SOAP] Lentezza rispetto a C#

    Salve a tutti,
    ho implementato il client di un applicativo che dialoga tramite SOAP, quello che ho notato che l'implementazione in delphi 7.1 è terribilmente lenta rispetto a quella in Visual studio .net, in termini numerici, per un elaborazione su 800 righi (lasciamo perdere di cosa si tratta, tanto è poco influente), il client in delphi impiega 11 minuti mentre il client in VS impiega 5 minuti, chiaramente l'implementazione è la stessa (tranne ovvie differenze di sintassi), la linea telefonica è la stessa (ISDN 128Kb) e il pc è lo stesso.

    da quello che ho notato, la lentezza è nella fase di serializzazione e deserializzazione dei dati, ma è una mia idea frutto del fatto che se monitorizzo il traffico di rete generato dall'applicazione, il tempo di trasferimento è simile tra i due client, solo che nel caso di delphi il trasferiento parte qualche istante dopo e termina molto prima che ho nuovamente il controllo.

    come componenti ho usato quelli di delphi, pensavo che forse con indy potrebbe cambiare qualcosa o pensavo di fare un test con una versione di delphi più nuova.


    qualcuno a notizie o consigli anche banali, in quanto sono nuovo di SOAP e anche una banalità risaputa al momento mi è ignota.

    grazie a tutti in anticipo.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Quando introduci un riferimento ad un Web Service nell'applicazione Delphi, vi sono molte opzioni da specificare che dovresti controllare, aiutandoti con la Guida in linea, per verificare che non contribuiscano a creare un "collo di bottiglia" o a svolgere inutili controlli di validità sul messaggio SOAP ricevuto.

    In secondo luogo, si deve anche controllare come e quando avviene la connessione al servizio: accertati che non venga creata un'istanza della classe del Web Service, con conseguente dialogo di apertura, ad ogni richiesta di dati al servizio stesso, rispetto all'implementazione C# che potrebbe effettuare questa operazione "una tantum" (e quindi risultare più rapido proprio per questo).

    Attualmente non ho l'ambiente sottomano quindi non posso fare ulteriori prove e riferimenti specifici, come avrai notato, a classi e membri.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ciao Marco, ti aspettavo...

    Originariamente inviato da alka
    Quando introduci un riferimento ad un Web Service nell'applicazione Delphi, vi sono molte opzioni da specificare che dovresti controllare, aiutandoti con la Guida in linea, per verificare che non contribuiscano a creare un "collo di bottiglia" o a svolgere inutili controlli di validità sul messaggio SOAP ricevuto.
    Ho sia la guida in linea sia i manuali stampati (che sono la stessa cosa) ma non danno grande aiuto, cmq controllo meglio,

    In secondo luogo, si deve anche controllare come e quando avviene la connessione al servizio: accertati che non venga creata un'istanza della classe del Web Service, con conseguente dialogo di apertura, ad ogni richiesta di dati al servizio stesso, rispetto all'implementazione C# che potrebbe effettuare questa operazione "una tantum" (e quindi risultare più rapido proprio per questo).
    puoi darmi un indicazione più precisa?
    io ho importato il certificato WSDL con il wizard di delphi quindi mi ha creato le classi e ho un solo metodo, io valorizzo le classi e chiamo il metodo, in che direzione dovrei guardare?
    ho anche usato un componente HTTPRio "esterno", cioè non quello che istanzia il metodo, giusto per vedere se cambiava qualcosa ma senza esito...

    cmq grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.