Poco fa, leggendo un post su NHibernateDataSource, ho lasciato un commento sull’uso dei vari DataSource e dell’ObjectDataSource.
Visto che lo ritengo un argomento interessante, riporto brevemente il mio pensiero anche qui.
Storicamente sono sempre stato contrario a tutti quegli oggetti stile drag&drop che permettono di accedere direttamente ai dati, e i nuovi oggetti offerti da ASP.NET non fanno certo eccezione.
Eppure trovo che un’eccezione ci sia e sia importante farla. Mi riferisco al controllo ObjectDataSource di ASP.NET.
Spiego il perchè.
Partiamo da un aspetto chiave, senza il quale non si potrebbe neppure iniziare a fare questo ragionamento. L’ObjectDataSource, al contrario degli altri (SqlDataSource e affini) non distrugge completamente la strutturazione a livelli, in quanto va a chiamare metodi di una classe di business definita da noi. Niente accesso diretto a database o affini, che fanno degli altri controlli il “male” da cui tenersi bene alla larga.
Appurato questo, il nostro controllo ha notevoli potenzialità. Quella che reputo più importante è legata alla paginazione dei dati.
Scenario tipico: abbiamo parecchi dati da mostrare e paginiamo ogni 15 elementi. Spesso vedo gente che semplicemente abilita il paging sul GridView e gestisce l’evento. Questo però significa che ogni volta tiriamo su tutti i dati e poi spetta ad ASP.NET nascondere quelli che non servono.
Se invece abilitiamo il paging sul ObjectDataSource, nella classe di business ci basta fornire i metodi richiesti (uno che restituisca il count degli elementi e l’altro che restituisca solo gli elementi da visualizzare) e su sql possiamo scrivere una stored procedure che supporti in paging (se siamo in sql 2005 è estremamente semplice - si veda Paging su SQL Server 2005).
Se volessimo emulare il comportamento del ObjectDataSource per il paging lato sql dovremmo impazzire.
Riassumendo: ObjectDataSource da vantaggi importanti senza compromettere la nostra architettura classica a livelli, ergo ne sono un sostenitore. Per tutti gli altri oggetti DataSource invece ne sconsiglio vivamente l’utilizzo.
ASP.NET, ASP.NET 2.0, ObjectDataSource, DataSource, architettura, paging