3 Stimmen

Wie speichert man eine Liste mit statischen Daten in C#?

Ich arbeite an einer Website und möchte, dass ein Dropdown-Menü die Liste der Städte anzeigt. Wo sollte ich die Liste der Städte speichern, um schneller darauf zugreifen zu können? Ich möchte diese Daten nicht in der DB speichern.

Ist es eine gute Idee, sie in einer XML-Datei zu speichern?

3voto

Chris Gessler Punkte 21932

Ich würde sie im Cache speichern, möglicherweise mit einer Sql-Abhängigkeit oder einer Datei-Abhängigkeit.

public DataTable GetCities(bool BypassCache)
{
   string cacheKey = "CitiesDataTable";
   object cacheItem = Cache[cacheKey] as DataTable;
   if((BypassCache) || (cacheItem == null))
   {
      cacheItem = GetCitiesFromDataSource();
      Cache.Insert(cacheKey, cacheItem, null,
      DateTime.Now.AddSeconds(GetCacheSecondsFromConfig(cacheKey), 
      TimeSpan.Zero);
   }
   return (DataTable)cacheItem;
}

Wenn Sie sie in XML speichern wollen, ist das auch in Ordnung, aber dann müssen Sie die Datei bei jeder Änderung auf allen Servern der Farm veröffentlichen.

1voto

cdiggins Punkte 16400

Speichern Sie sie in einer Textdatei. Dadurch wird der Overhead des XML-Parsing vermieden. Laden mit File.ReadAllLines() .

0voto

Maxam Punkte 4005

Sie können die Liste in einer XML-Datei oder einem anderen flachen Dateiformat speichern, aber ich denke, es hängt davon ab, aus welchen Gründen Sie die Liste nicht in der Datenbank speichern wollen.

Sie erwähnten einen schnelleren Zugang, aber das sollten Sie vielleicht näher erläutern. Wenn Sie meinen, dass Sie nicht bei jeder Anfrage auf die Datenbank zugreifen wollen, dann haben Sie darüber nachgedacht, sie in der Datenbank zu speichern und die Liste beim Start der Anwendung zwischenzuspeichern? Auf diese Weise erhalten Sie die Vorteile einer Datenbank, zahlen aber nur einmal den Overhead.

Für kleine Anwendungen ist eine XML-Datei jedoch völlig ausreichend.

0voto

Jason Williams Punkte 55292

Wenn sich die Liste nie ändern wird, dann deklarieren Sie sie einfach als ein konstantes Array von Strings in Ihrem Code.

Wenn sich die Daten gelegentlich ändern, sollten Sie sie in einer XML-Datei oder einer Datenbanktabelle speichern, sie aber in den Cache stellen, wenn Sie sie gelesen haben, so dass sie in jeder Sitzung nur einmal gelesen werden müssen.

0voto

Muaz Othman Punkte 427

Ich glaube, dass XML die beste Lösung ist, und es wäre besser, DOM-Parser statt SAX zu verwenden.

Sie können die Datei auch immer dann in die Sitzung laden, wenn sie nicht geladen ist, um die Anzahl der XML-Lesevorgänge zu verringern, aber dies verbraucht mehr RAM auf dem Server. Sie können sie nur für angemeldete Benutzer laden, wenn dies sinnvoll ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X