Entrambi i componenti DB-aware e non DB-aware presentano vantaggi e svantaggi, a seconda del tipo di applicazione che si sta sviluppando.
Per applicazioni di piccole e medie dimensioni, è consigliabile utilizzare componenti compatibili con DB, a meno che non vi siano requisiti o condizioni specifici in base al quale tali applicazioni sono operative. Ad esempio, una semplice applicazione di inserimento dati sarebbe più facile da sviluppare e mantenere con i componenti compatibili con DB. Anche le applicazioni di scala medio-grande, se correttamente progettate e implementate, avranno buone prestazioni con componenti compatibili con DB.
Tuttavia, quando si sviluppano applicazioni modulari, in particolare sistemi a più livelli, i componenti compatibili con DB possono avere un impatto negativo sulle prestazioni dell'applicazione e sulla manutenibilità. Ciò è particolarmente evidente con le applicazioni che accedono ai dati su Internet.Il motivo principale di ciò è dovuto al fatto che i componenti compatibili con DB richiedono una connessione costante al database, che può aumentare significativamente il traffico di rete.
L'utilizzo di componenti non sensibili al DB può essere più complesso in quanto richiede una migliore comprensione dei meccanismi sottostanti, ma in ambienti multi-utente e distribuiti su più livelli è scalabile molto meglio di qualsiasi altra cosa. Inoltre, puoi (e dovresti) separare il livello di accesso ai dati dal livello di presentazione (UI), che in seguito ti consentirà di apportare modifiche a un sottosistema (modulo, livello) senza dover modificare altro.
Oggi i dati possono essere ovunque e la maggior parte delle volte non vengono memorizzati su computer o reti locali. L'utilizzo di componenti compatibili con DB per accedere a tali dati può avere un impatto negativo significativo sulle prestazioni dell'applicazione e del database. Ci sono alcuni livelli di accesso ai dati che migliorano questo (UniDAC, AnyDac, ...), quindi l'utilizzo di componenti compatibili con DB può migliorare le prestazioni. Tuttavia, i componenti non compatibili con DB possono superare qualsiasi risultato.
Spetta allo sviluppatore decidere quale meccanismo utilizzare, perché, come ho detto, tutto dipende dal tipo di applicazione che si sta facendo e in quale ambiente funzionerà.
+1 perché mi piace la domanda, ma sono nel campo di controllo mai usato in Db-aware, quindi non ho intenzione di rispondere. –
Dipende da quale controllo, dbedit etc va bene, ma a volte cose come dbgrid lasciano molto a desiderare – Simon
+1 Per un'applicazione DB piccola (che mi serve soluzione veloce) vorrei andare con DB Aware Controls, specialmente se il DB è locale (Come MS-Access). Per le applicazioni DB su larga scala e completate, preferisco utilizzare i miei controlli non a conoscenza. per esempio per DBGrid utilizzo Albero virtuale in cui il DataSet non è associato. È molto più lavoro, ma almeno non sono limitato. – kobik