Sto preparando un nuovo progetto Windows e mi chiedo che tipo di tecnologia DAL utilizzare. All'inizio cercavo qualcosa di più semplice per non passare troppo tempo a costruirlo. Ma capisco anche che a lungo andare deve essere efficiente e scalabile.Nuovo progetto .NET 3.5: quale tecnologia DAL utilizzare?
Ho intenzione di utilizzare WPF (MVVM) Client e servizio WCF su un sistema a 3 livelli.
Giusto per riassumere tutte le tecnologie esistenti sono a conoscenza:
DataSet
PRO: Potrebbe essere un po 'vecchio stile, ma molto facile da usare e lasciare che la maggior parte dei pezzi da auto generato per te. Un aspetto importante dei set di dati è la facilità di attraversare i dati correlati attraverso le relazioni. Inoltre, in un certo senso, è stato disconnesso dal database e potrebbe semplificare gli aggiornamenti prendendosi cura dei timestamp automaticamente. Include la convalida.
CONTRA: Abbastanza vecchio stile. Alcuni li considerano come veri e propri oggetti/modelli di business ma solo come specchio delle tabelle di dati SQL. Passarli tra servizio/cliente WCF potrebbe essere più difficile degli oggetti di business creati autonomamente.
Enterprise Library 4.1 - Data Access Block
PRO: Il DAL è ben messo in un modello di fabbrica. Si occupa della connessione che si apre e si chiude automaticamente. Molto facile da usare per la maggior parte. Supporta sia dataSet che normali SQL Sp per creare i propri oggetti aziendali. Come parte di un Framework in corso, può essere molto più efficiente da utilizzare in combinazione con il resto della Enterprise Library per un prodotto finale efficiente.
CONTRA: ??
LINQ to SQL
PRO: Auto crea le tabelle SQL in oggetti di business. Facile da CRUD. Teoricamente un modo molto carino per farlo.
CONTRA: Avendo giocato con esso quando è uscito, l'ho trovato traballante ea volte instabile. È già considerato una tecnologia morta dopo che Microsoft ha annunciato che Entity Framework 4.0 - come parte di .NET 4.0 - sarà consigliato da Microsoft. Sono previste solo poche correzioni di bug in .NET 4.0 ma non più piani di estensione delle funzionalità.
Entity Framework 4.0
non so nulla, ma solo che andrà a sostituire tutto il resto come in .NET 4.0. Sono anche tentato di usarlo, tuttavia dal momento che è ancora in BETA, non potrei ancora andare in quel modo.
Sono molto tentato di utilizzare Enterprise Library 4.1 - Blocco di accesso ai dati e creare i miei oggetti di business. Il grande Con è che ci vorrà più tempo per creare il DAL. A meno che qualcuno non riesca a convincermi a utilizzare DataSet tramite il blocco di accesso ai dati.
Quali sono i tuoi commenti e le tue idee? Molte grazie, Kave
Stavo riflettendo e penso che tu abbia ragione. Usare EntLib significa ancora molto lavoro creando tutto a mano. Quando hai menzionato EF, intendevi la versione 4.0 BETA o intendi la versione 1.0 effettiva? Ho provato la versione 1.0 la scorsa notte e devo dire che sembra tutto a posto e fa il lavoro. Poco prima ho provato SubSonic, che non riusciva a creare il codice per le mie tabelle di ricerca, che aveva lo stesso nome di uno dei loro campi esistenti. Questo deve aver confuso Subsonic. EF 1.0 ha svolto il lavoro perfettamente e penso che andrò da questa parte. Cosa ne pensi? – Houman
EF 1 non è da nessuna parte come funzionalità come LinqToSql e LinqToSql è piuttosto scarsa funzionalità. A EF 1 manca il supporto per concetti ORM di base come il corretto supporto per il caricamento lazy, supportato da LinqToSql. –
Ho utilizzato l'EF 1.0 per alcune app, quelle con database più piccoli e che non erano critiche per le prestazioni, e ne sono stato abbastanza contento: il requisito di base era "ottenere i dati dentro e fuori dal database". Se le funzionalità, la scalabilità e le prestazioni sono una grande preoccupazione, si potrebbe comunque provare EF, ma potrebbe voler astrarre l'accesso ai dati utilizzando un altro livello software o qualcosa come CSLA, in modo da poter cambiare o aggiornare le tecnologie di accesso ai dati in un secondo momento. Naturalmente, a quel punto, i vantaggi RAD potrebbero non essere più lì e si potrebbe voler considerare uno stack completo personalizzato. –