2009-08-07 4 views
4

Ich habe zwei ASP.NET 2.0-Anwendungen in IIS; ein öffentliches Buchungssystem und ein Verwaltungssystem zur Preisverwaltung. Es gibt ein freigegebenes DLL-Projekt, das auf die Datenbank zugreift, die von beiden Anwendungen verwendet wird.Gemeinsame Nutzung eines HttpRuntime.Cache über zwei IIS-Anwendungen

Um die Leistung zu verbessern, werden die Preise im DLL-Code zwischengespeichert, um die Datenbank bei jeder Anfrage zu schützen. Wenn der Administrator jedoch die Preise ändert, wird der Cache in der Admin-Anwendung aktualisiert (und offensichtlich nicht in der öffentlichen Anwendung aktualisiert)

Also, auf die Frage. Ist es möglich, IIS so zu konfigurieren, dass diese beiden Anwendungen den HttpRuntime.Cache teilen? Wenn ja, wie sollte es eingerichtet werden?

Antwort

2

Das würde den Punkt von zwei Anwendungen schlagen - sie sollten nicht den gleichen DLL-Speicher-Heap teilen, der benötigt würde. Was Sie brauchen, ist ein Kommunikationskanal zwischen den beiden und die Admin-Web-Seiten benachrichtigen über Änderungen im Cache - was zu einer Aktualisierung führen würde.

Vielleicht etwas Einfaches, aber vielleicht bringt eine einfache Seite, auf die Sie schreiben, dazu, dass der Cache nach Updates sucht? Oder: Lassen Sie die Anwendung anhand eines Zeitstempels immer wieder nach Updates suchen.

(Eine andere Möglichkeit ist es, einen Dienst zu erstellen, wo der Cache befindet, aber ich denke, dass außerhalb des Rahmens einer einfachen Lösung ist)

+0

Danke Thies. Das habe ich vermutet. Ich habe bereits einen generischen Handler zur öffentlichen Site hinzugefügt, die von der Admin-Site aufgerufen wird, aber ich habe mich gefragt, ob es einen besseren Weg gab. – harriyott

0

Nein; Aus Erfahrung wird dies nicht funktionieren (.NET 4.6, IIS 8.5, 2 Anwendungen eine gemeinsame DLL, die denselben Anwendungspool verwendet). Dokumentation ist sehr schwer zu bekommen (über "cache items are stored in memory") - in der Tat der einzige beschreibende Teil war what @Thies stated above - aber wie er sagte, ich glaube, das ist, weil der Cache in der DLL zugeordneten Speicher gespeichert ist, daher (seit wir immer noch one process but two app domains) die gemeinsame Die DLL wird separat in zwei Anwendungsdomänen geladen, und der Speicher der DLL wird nicht gemeinsam genutzt.

Verwandte Themen