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

    vb.net - Consigli per visualizzazione lista record altamente performante

    ho il seguente ambiente:
    - server dedicato win2003 + iis6
    - mysql 5.x installato a bordo.
    - Asp.net versione 2.05ecc
    - mi connetto al DB tramite oggetto odbcConnetion
    - sviluppo in Visualstudio 2005

    Devo sviluppare un pagina che visualizzi (solo lettura dati) una lista di 500 record e, vista l'alta densità di accessi, sto cercando la soluzione più performante.

    Vorrei evitare l'utilizzo del GridView perchè mi piace avere il controllo totale del HTML generato perciò pensavo di incamerare i dati in un oggetto DataTable, in modo da poterli utilizzare in uno o più punti della mia pagina.

    Il quesito è:
    nel mio caso per riempire il DataTable è meglio utilizzare il metodo Fill del'oggetto DataAdapter oppure è meglio utilizzare il metodo Load dell'oggetto DataReader ?

    Ripeto: devo solo leggere sul DB e non scrivere.

    Grazie mielle a tutti

  2. #2
    Cosa intendi per altamente performante? La tua domanda è su che tecnologia inpiegare?
    Nello specifico tecnico, cosa stai esaminando per fare un qualche cosa di perfortmante?

    Te lo dico perchè se vuoi essere performante ti posso sicuramente aiutare, oltre ad avere esperienza nella realizzazione di software di scacchi, sono esperto nella materia avendo creato (per esempio) una piattaforma web per create un forum (e li i record sono nell'ordine delle migliaia e non poche centinaia), che sicuramente è la più veloce tra tutte quelle esistenti, regge tranquillamente anche migliaia di sessioni di navigazione aperte simultaneamente.

    500 record dovresti schioccarli al browser a colpo di fulmine con pochissimi accorgimenti. Però devi essere te (se vuoi essere aiutato) ad essere meno generico.

    Visto che siamo sotto .NET per incominciare puoi copiarti il mio codice di cache (che uso su tutto e ti permette ottimi risultati), lo puoi perlevare da questo open source x guarda nel modulo, extension (file in app_code) e copiati la classe cache che è molto diversa dagli altri tipi di cache, perchè non è una copia (che quindi va sincronizzata), ma tiene in vita gli oggetti che usi più frequentemente (la puoi usare per metterci i record).


    Ti consiglio anche di fare massiccio uso di tecniche multi-therad laddove possibile. Però per il momento stiamo parlando in astratto perchè non vedo il tuo codice e ne dove vuoi arrivare.

    Buona fortuna, se hai misogno scrivi qui in reply ti darò una mano più che volentieri. La tua applicazione la facciamo diventare un missile!

  3. #3
    La tua domanda è su che tecnologia inpiegare?
    No! la tecnologia che ho a disposizione è quella che ho elencato all'inzio della mio post e non può essere altrimenti


    Nello specifico tecnico, cosa stai esaminando per fare un qualche cosa di perfortmante?
    Sto valutanto se popolare il DataTable tramite un DataAdapter o, visto che non devo scrivere sul DB, un DataReader.

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Il datareader è piu' leggero.
    Inoltre se non ti serve, disabilita il ViewState.

    Cmq:
    http://msdn.microsoft.com/it-it/maga...8en-us%29.aspx

  5. #5
    Ciao,
    riguardo il consiglio di cmsaspnet sulla cache sono pienamente d'accordo.
    Una volta che leggi i dati li puoi tenere in cache per un po (non troppo) in modo da limitare le chiamate al DB (nel caso di letture con stessi parametri e stessi risultati ad esempio)
    Visto che hai il suo codice già pronto, usa quello; comunque un riferimento é questo:
    Caching Application Data
    ASP.NET Caching: Techniques and Best Practices

    Riguardo la lettura dei dati invece, io non sono mai troppo propenso per il reader, poiché è un oggetto "legato", quindi per essere letto deve mantenere la connessione al DB aperta; quindi ad esempio se devi ciclare sui dati è molto costoso. Invece un DataTable è un oggetto dati residente in memoria; ovvero carica i dati in memoria e si stacca immediatamente dal DB.
    Discorso diverso se metti tu i dati in memoria utilizzando ad esempio oggetti di business: allora si, usa un reader che tira su i dati velocemente, tu li metti nei tuoi oggetti in memoria e poi ti stacchi. Il lavoro lo fai sui tuoi oggetti a DB staccato.
    Quindi una buona progettazione di un DataLayer è fondamentale:
    Tutorial 1: Creating a Data Access Layer
    Data Access Application Block - Reduce ADO.NET Code in Your Applications

    Sia per la cache, che per il Data Layer, microsoft mette a disposizione una bella libreria "chiavi in mano": Microsoft Enterprise Library 4.0.
    Di questa grossa libreria puoi appunto usare Caching Application Block e Data Access Application Block.


    ma ora arriviamo alle richieste sul DB, che poi è il grosso del tempo sprecato.
    va bene la cache, ma più importante è anche la paginazione lato server dei dati.
    Ovvero, se tu fai una query su una tabella di 10.000 record, e hai una gridView/tabella/ecc... che visualizza 20 0 30 dati, inutile tirarne su dal DB tutti.
    La paginazione serve per tirare su i dati strettamente necessari alla visualizzazione, ne più ne meno.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.