Domanda

Qualcuno può darmi qualche suggerimento sulle risorse che descrivono in dettaglio le strutture e gli algoritmi usati "sotto il cofano"? della .NET DataSet classe?

Attualmente sto lavorando in un linguaggio che non ha un'implementazione di una struttura di dati in memoria generica come la classe DataSet. Potrei finire per costruirne uno da solo (ma non così esteso!), Ma vorrei avere un'idea migliore di come i sistemi esistenti vengono messi insieme prima di iniziare a hackerare. (Grazie Douglas Hofstadter )

Sto leggendo il Implementazione mono , ma qualsiasi altro link, articolo o idea sarebbe apprezzato.

È stato utile?

Soluzione

Accendi il riflettore e vai direttamente alla fonte ...

Altri suggerimenti

Puoi legalmente scaricare il codice sorgente originale per DataSet da Microsoft , che ti darà accesso a tutto, compresi i commenti originali. Tuttavia, se stai implementando un sistema / prodotto simile, dovresti studiare attentamente la licenza per assicurarti che non è probabile che tu lo violi guardando il codice sorgente.

Reflector è disponibile all'indirizzo http://www.red-gate.com /products/reflector/index.htm e ti permetterà di vedere esattamente come è implementato DataSet.

Dovrai anche guardare DataAdapter, in particolare DbDataAdapter.Fill, DataTable, in particolare DataTable.Load, DataRow e DbDataReader. Potresti quindi voler esaminare alcune delle implementazioni specifiche come SqlDataAdapter, SqlCommand, ecc.

Nota che DataSet è la prova del vecchio adagio su tutto ciò che sembra un chiodo. Era troppo utilizzato in .NET. In particolare, non utilizzarlo per trasferire dati tra un servizio Web e i suoi client - non interagisce bene.

La struttura di dati chiave del DataSet ADO.Net è il Albero rosso-nero

  

È complesso, ma ha un buon caso nel peggiore dei casi   tempo di esecuzione per le sue operazioni ed è   in pratica efficiente: può cercare,   inserire ed eliminare in O (log n) tempo,   dove n è il numero totale di elementi in   l'albero. In parole povere, un rosso-nero   albero è un albero di ricerca binario che   inserisce e rimuove in modo intelligente, a   assicurarsi che l'albero sia ragionevolmente   equilibrata.

Il libro intitolato Programmazione del riferimento di base ADO.Net 2.0 contiene un'eccellente descrizione dei set di dati, inclusi molti problemi e strutture di dati interni discussi.

L'implementazione principale del set di dati si basa su alberi di bilanciamento automatico rosso / nero.

L'altra grande avvertenza citata nel libro è che la ricerca del codice dati tramite stringhe non è stata implementata in modo efficiente, poiché utilizza il confronto delle stringhe per cercare una tabella di ricerca per la colonna appropriata. Potresti ottenere aumenti abbastanza buoni nelle prestazioni di ricerca su entrambe le tabelle e sulle colonne codificando il numero delle tue righe. Naturalmente questo è un incubo di manutenzione a meno che tu non scriva uno strumento per farlo per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top