Attualità e Information Technology

November 5, 2007

ObjectDataSource

Filed under: IT, .NET

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.

Technorati tags , , , , ,

AddThis Social Bookmark Button
   

Get free blog up and running in minutes with Blogsome | Theme designs available here