n° 185
Maggio/Giugno 2013
Maggio 24, 2013, 04:17:01 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Delphi Datasnap Xe2 tempo di esecuzione elevati  (Letto 564 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
KTR84G
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 1


Mostra profilo
« inserita:: Agosto 30, 2012, 10:33:57 am »

Utilizzando Delphi XE2 e Interbase XE ho creato un'applicazione datasnap composta da un datasnap client e un datasnap server.

Nel datasnap client, l'utente finale deve inserire query SQL (es. select * from anagrafica where Sesso = 'Maschio') in un oggetto TMemo e cliccare sul pulsante "Esegui".

All'evento OnClick del bottone viene richiamato un metodo che ho scritto all'interno del datasnap server, che accetta come parametro la stringa SQL immessa dall'utente nel datasnap client, e restituisce un oggetto del tipo TDataSet contenete i risultati della query.

I risultati sono visualizzati all'interno del DBGrid del datasnap client;il programma funziona quasi correttamente.

Ho riscontrato però due problemini che non so risolvere:

1) Se in fase di progettazione del datasnap client non imposto la proprietà ClientDataset1.Active:= true; la query viene eseguita ma per vedere i risultati devo cliccare un'altra volta sul pulsante 'Esegui'.

2) I tempi di esecuzione della query sono molto elevati (es: select * from anagrafica where sesso = 'Femmina') visualizza i circa 10000 record risultanti in 40 secondi.

Il mio superiore per velocizzare il tutto mi ha consigliato di visualizzare nella DBGrid 20 record alla volta e inserire un pulsante nel form per visualizzarne altri 20 e così via...

Gentilmente qualcuno mi sa spiegare passo passo come fare? Oppure ha un'idea migliore?
Ringrazio fin da ora tutti quelli che mi forniranno una risposta.
Registrato
Fuser
Jr. Member
**

Karma: +0/-12
Scollegato Scollegato

Messaggi: 74


Mostra profilo
« Risposta #1 inserita:: Agosto 31, 2012, 02:46:20 pm »

Ciao,
piuttosto che farti ritornare dal server il Dataset, potresti implementare un server REST e farti ritornare una struttura JSON.
Oppure, se proprio vuoi utilizzare il Dataset, se non ricordo male, puoi utilizzare le procedure per la serializzazione dello stesso.
Registrato
ecosoft.it
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 1


Mostra profilo E-mail
« Risposta #2 inserita:: Ottobre 01, 2012, 11:04:58 am »

Ciao,
non utilizzo datasnap ma ho molta esperienza su REST custom Server-Client (Delphi e PHP) tramite XML e JSON.
I tempi di elaborazione della query posso dipendere molto anche dalle dimensioni della tabella che vai a richiamare (righe x colonne).
Per Datasnap mi pare puoi scegliere il tipo di trasporto HTTP/TCP/HTTPS, se sarai sempre in LAN (non internet) verifica cambiando protocollo se le performance aumentano.
Se stai lavorano in LAN fai un test diretto (Client-Server) sul DB e con DATASNAP per verificare i tempi di risposta quanto variano.
Se passi tramite HTTP (e specialmente via Internet) devi permettere la compressione dei pacchetti altrimenti 10.000 record sono un mattone da trasporate (saranno almeno 6MB).
Per il problema del TClientDataSet verificate nel QC di Embarcadero che non ci sia qualche post in merito ed ovviamente devi avere XE2 Update4 + Hotfix.

Saluti
Alessandro Savoiardo
info@ecosoft.it
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page