Il più grande vantaggio di DataSourceControls è che allontanano diverse preoccupazioni circa il ciclo di vita .NET fornendo supporto per CRUD completo e le espressioni di associazione bidirezionale, vale a dire.<% # Bind ("FirstName")%> (tuttavia l'associazione dati bidirezionale fa schifo, quindi probabilmente non ti stai perdendo nulla). Come modello di progettazione, è una buona idea con un'implementazione mediocre (molto simile a WebForms stesso).
Se disabiliti viewstate e ti trovi a cercare di capire il motivo per cui i tuoi postback non vengono gestiti, o finisci per dover chiamare DataBind() in diversi punti, le origini dati possono portare via parte del mal di testa, perché il DataBoundControls è abbastanza intelligente da sapere quando hanno bisogno di dati e lo richiedono semplicemente dall'origine dati. Nessuna chiamata DataBind() necessaria.
DataSources fornisce anche un modo piacevole per gestire l'ordinamento, il filtraggio e l'impaginazione. La maggior parte degli sviluppatori, quando usano code-behind, di solito non eseguono l'impaginazione e alla fine restituiscono enormi set di risultati dal database.
Lo svantaggio delle origini dati è che non ci sono state molte buone implementazioni. Di solito si finisce per legare l'interfaccia utente Web all'implementazione di persistenza (ad esempio SqlDataSource, LinqDataSource, ecc.) O si finisce con l'uso di ObjectDataSource, che fa schifo perché è così limitato, richiede di scrivere i nomi delle classi e dei metodi nell'ASPX e usa la riflessione in qualche modo in modo inefficiente. Per questo motivo, non è utile per le persone che utilizzano l'iniezione di dipendenza o le classi DAO statiche. È una classe piuttosto mal concepita e sembra quasi un ripensamento della SM.
Personalmente preferirei utilizzare DataSource AND code-behind. Utilizzare un DataSource per rimuovere il mal di testa lifecycle/viewstate e quindi fornire un evento/delegato "Select" nel code-behind. Sfortunatamente, ObjectDataSource può utilizzare solo la reflection, tuttavia è possibile scrivere facilmente la propria implementazione. Ne ho uno mio ma non è pubblico. Tuttavia prima ho scritto che ho usato questo, che costituisce per alcune delle inadeguatezze di ObjectDataSource:
http://mikeoff.blogspot.com/2006/06/objectdatasource-working-alternative.html
fonte
2009-11-17 23:12:10
È il tipo di applicazione per cui è stato creato il framework Dynamic Data. Sfortunatamente, stiamo usando solo 2.0. È frustrante, scrivere il repository e codificare i DO, sapendo che la salvezza è solo un clic in un menu a discesa (a 3.5) di distanza! –