Wdrażam ogólne, trwałe kolekcje .NET oparte na silniku bazy danych ESENT (przy użyciu warstwy interopowej ManagedEsent). Do tej pory koncentrowałem się na klasach, które dokładnie naśladują ich odpowiedniki System.Collections.Generic, z tym wyjątkiem, że pobierają ścieżkę do konstruktora, wskazując miejsce, w którym powinna się znajdować baza danych. Kod jak to działa:Czego ludzie oczekują od trwałego słownika .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();
}
}
moje pytania są następujące:
- Inne niż kompatybilności ze stosu, kolejki i hasła, jakie funkcje ma ludzi chce/potrzeby w kolekcjach trwało?
- Czy muszę wymagać wersji 2.0 lub wersji 3.5 platformy .NET?
- Typy kluczy i wartości są ograniczone do podstawowych typów .NET (bool, byte, [wszystkie liczby całkowite], float, double, Guid, DateTime i string). Mogę dodać obsługę wartości, które są serializowalne struktur. Czy ograniczenie tego typu jest zbyt bolesne?
- Jakiego rodzaju testy wydajności chcą ludzie?
- Do jakich aplikacji ludzie chcą używać PersistedDictionary?
Pierwsza wersja będzie gotowa w przyszłym tygodniu, ale chcę się upewnić, że robię to, co trzeba.
Nawiasem mówiąc, 'System.Decimal' to również podstawowy typ w pewnym sensie (nie tak daleko, jak CLR jest zaniepokojony, ale na pewno w miarę dowolny C# lub VB deweloper jest zainteresowany). –
Czy nie powinno to być wiki społeczności? –
['PersistentDictionary'] (http://izlooite.blogspot.com/2011/04/persistent-dictionary.html) –