2009-08-13 5 views
2

Ich schreibe eine Navigationsstruktur der Kategorien. Jede Kategorie hat eine ID, die sich in einem Suchwerkzeug von Drittanbietern befindet. Bei jedem App-Start oder in verschiedenen Intervallen muss ich die Caetegories und ihre IDs abrufen und sie in einem Wörterbuch (oder auf andere Weise) speichern, damit ich auf sie zum Umschreiben der Links von ID zu Name zugreifen kann.Die beste Möglichkeit, ein Wörterbuch in cache zwischenspeichern #

+0

Was ist der Anwendungskontext? Kundencode? Ausgewogenen Webserver laden? Caching hat in verschiedenen Fällen unterschiedliche beste Lösungen. – Precipitous

+0

Es ist eine Webanwendung auf einem einzelnen Server. Ich denke, die beste Option in Bezug auf wann ist beim Start der Anwendung. – mickyjtwin

Antwort

1

Bewahren Sie das Wörterbuch in einer XML-Datei ein Format verwenden, das so etwas wie dieses und lesen Sie es aussieht, wenn Sie tun müssen, um Ihre Umschreiben

<nodes> 
<node id="1">Some Nav Data</node> 
</nodes> 

Sie einen separaten Prozess dann 2 Möglichkeiten haben, schreiben, das wird Aktualisieren Sie die Datei in bestimmten Intervallen, oder Ihr aktueller Prozess kann die Datei nach einem festgelegten Intervall aktualisieren.

Wenn Sie glauben, dass das Laden und Parsen von XML übertrieben ist, denken Sie darüber nach, eine Klasse auf eine Festplatte zu serialisieren, die eine einfache Hashtabelle oder ein einfaches Wörterbuch enthält.

0

Wie viele Einstellungen sprechen Sie? Warum benötigen Sie einen Cache, anstatt nur ein In-Memory-Wörterbuch mit einem Hintergrund-Thread zu verwenden, um es regelmäßig neu zu laden?

Wenn Sie einen Cache benötigen, können Sie sich die caching application block in EntLib ansehen. Sie können ein Ablaufintervall festlegen und dann handle an even on expiry, um den Cache erneut zu füllen. Aber offen gesagt klingt das für Ihre Anforderungen übertrieben.

+0

Es gäbe ca. 70 Kategorien mit ihren zugehörigen IDs – mickyjtwin

+0

Im Wesentlichen wird bei einer Suche innerhalb der Ergebnisse eine Sammlung von IDs relativ zu den Suchkriterien kommen. Diese IDs sind ein Kategoriename. Ich muss die ID dem Namen zuordnen, damit ich eine freundliche URL schreiben kann. Umgekehrt muss eine eingehende Anfrage den Namen zurückgeben. Dies muss für das Leben der App verfügbar sein und wird sich nicht sehr oft ändern, d. H. Tage, sogar Wochen. – mickyjtwin

+1

Es klingt nicht nach vielen Daten - gibt es einen Grund, warum Sie es nicht einfach im Speicher behalten können? Oder suchen Sie nach anderen Einrichtungen? – serialhobbyist

0

Caching ist ein super großes Thema! Sie können einen lokalen Cache verwenden, wenn Sie sich in einem Webprojekt befinden. Sie können HttpContext.Current.Cache verwenden, wenn Sie sich in einer Windows-Umgebung befinden (obwohl Sie den Cache in einer Windows-App nicht wirklich benötigen). Wenn Sie mehrere Web-Server überspannen, sollten Sie auf die Leistungsfähigkeit von MemCached oder MemCached Win32 achten. Wenn es Ihnen nichts ausmacht, neue Sachen zu verwenden, können Sie sich Velocity ansehen (MS's Antwort auf die Überlegenheit von MemCache in den letzten Jahren in der Caching-Arena).

Hier sind einige SO-Posts, die Sie interessieren könnten:

System.Web.Caching vs. Enterprise Library Caching Block

Running a Asp.net website with MS SQL server - When should i worry about scalability?

Verwandte Themen