Sto implementando raccolte .NET generiche e persistenti basate sul motore di database ESENT (utilizzando il livello di interoperabilità ManagedEsent). Finora mi sono concentrato su classi che imitano esattamente le loro controparti System.Collections.Generic, tranne che prendono un percorso nel costruttore che indica dove dovrebbe andare il database. Codice come questo sta lavorando:Cosa vogliono le persone in un persistente dizionario .NET?
using Microsoft.Isam.Esent.Collections.Generic;
static void Main(string[] args)
{
var dictionary = new PersistentDictionary<string, string>("Names");
Console.WriteLine("What is your first name?");
string firstName = Console.ReadLine();
if (dictionary.ContainsKey(firstName))
{
Console.WriteLine("Welcome back {0} {1}", firstName, dictionary[firstName]);
}
else
{
Console.WriteLine("I don't know you, {0}. What is your last name?", firstName);
dictionary[firstName] = Console.ReadLine();
}
}
Le mie domande sono:
- Altro che la compatibilità con la pila, coda e Dizionario quali caratteristiche la gente vuole/bisogno in collezioni persistenti?
- Devo richiedere la versione 2.0 o la versione 3.5 del framework .NET?
- I tipi di chiave e valore sono entrambi limitati ai tipi .NET di base (bool, byte, [tutti gli interi], float, double, Guid, DateTime e string). Potrei aggiungere il supporto per i valori che sono strutture serializzabili. Questo tipo di restrizione è troppo doloroso?
- Che tipo di benchmark delle prestazioni vogliono vedere le persone?
- Per che tipo di applicazioni si desidera utilizzare PersistedDictionary?
Avrò la prima versione pronta la prossima settimana, ma voglio assicurarmi di costruire la cosa giusta.
A proposito, 'System.Decimal' è anche un tipo di base in un certo senso (non per quanto riguarda CLR è interessato, ma sicuramente per quanto riguarda qualsiasi C# o VB sviluppatore è interessato). –
Non dovrebbe essere questo wiki della comunità? –
['PersistentDictionary'] (http://izlooite.blogspot.com/2011/04/persistent-dictionary.html) –