Avere solo un SQLDataSource è perfettamente valido, se è solo una demo, un prototipo o un attacco rapido. È veloce, è facile, funziona e ti dà i risultati di cui hai bisogno.
Tuttavia, quando un'app è progettata e costruita a lungo termine e si prevede che le cose (requisiti, desideri dei clienti, eventualmente lo schema del database) possano cambiare, potrebbe essere molto più sensato introdurre una corretta " business "layer: modella i tuoi oggetti business come oggetti e quindi fornisci una mappatura dal database sottostante a quegli oggetti business.
Come si suol dire - è possibile risolvere praticamente qualsiasi cosa in informatica da un ulteriore livello di indirezione (o astrazione) - lo stesso vale qui.
SICURO: si può andare direttamente al database, e sicuramente, all'inizio e per la prima iterazione, questo è probabilmente (o probabilmente) il modo più rapido. Ma a lungo termine, quando un'app è costruita per durare, di solito è un modo rapido e sporco: i costi di manutenzione, i costi di manutenzione, i costi e gli sforzi necessari per la modifica in base alle esigenze dell'utente e del cliente Crescerà e abbastanza rapidamente, quella soluzione rapida e decaduta non sembra più così grande, in termini di sforzo.
Quindi, per riassumere il mio punto: sì, inizialmente, l'utilizzo di un'origine dati SQL diretta potrebbe essere più semplice e veloce - quindi usalo quando è il punto importante: fare le cose per una demo veloce, una dimostrazione di app di stile di concetto. Ma a lungo termine, quando guardi la durata di un'app, di solito è utile investire un po 'di più (progettazione e codifica) per aggiungere questo strato di astrazione in modo che le tue pagine web non dipendano direttamente dai dettagli di il database sottostante.
Marc
fonte
2009-07-30 15:33:17
mentre sono d'accordo con tutti i tuoi punti e la tua risposta è ben scritta, le tue pagine ora non dipendono dai dettagli del tuo database, ma i tuoi oggetti di business lo fanno. Che vantaggio offre? –
Il vantaggio è: se il database cambia, ma gli oggetti business rimangono gli stessi, l'interfaccia utente funziona ancora. Se usi SqlDataSource direttamente, e come molti altri, usa un 'SELECT * FROM ....' il tuo codice si bloccherà molto probabilmente il secondo altro campo verrà aggiunto a una tabella di database. Questo non sarà il caso se hai in mezzo un livello aziendale. –
Inoltre, impacchettando i dati in oggetti business, è molto più semplice lavorare con loro. Hai per es. un oggetto "Cliente", per il quale è possibile leggere e scrivere proprietà come "ID cliente", "Nome" e così via: non è necessario gestire le intromissioni delle righe e dei campi del database ed eseguire tutte le conversioni ogni volta che si accede ad alcune dati. –