halte ich würde einen Windows-Dienst, der die Web-Anwendung (en) über WCF kommunizieren durch.
Dies ermöglicht Ihnen ein hohes Maß an Flexibilität; Sie können damit eine zusätzliche Verarbeitung von Daten außerhalb des Prozesses durchführen (z. B. Aggregieren von Anwesenheitsstatistiken wie "50 Personen in Ihrem erweiterten Netzwerk sind online"). Ein Windows-Dienst befreit Sie außerdem vollständig von allen Einschränkungen, die in Prozessstatusmechanismen auftreten. Es ermöglicht Ihnen, Lasten frei zu laden und mehrere Anwendungen ihre Daten verbrauchen zu lassen.
Wenn die Daten entbehrlich sind, machen Sie den Dienst zustandslos. Behalten Sie andernfalls einige/alle/periodischen Daten in einer Datenbank bei, so dass Sie auch dann wiederherstellen können, wenn der Dienst und/oder die Websites ausfallen.
Schließlich, wenn Sie eine Anwendung erstellen, die von einem Dienst abhängt, ist ein potenzieller einzelner Fehlerpunkt. Die besten Installationen verwenden entweder eine Datenbank oder einen Synchronisationsmechanismus, um die Redundanz von Out-of-Process-Diensten zu gewährleisten.
Bearbeiten: Um mehr Details zu Ihrer ursprünglichen Frage zu geben, sind statische Mitglieder für alle HTTP-Anfragen an die App-Domäne verfügbar, auf der Ihre ASP.Net-Site läuft. Für was es wert ist, können statische Variablen auch (durch Attribute) mit verschiedenen Zugriffsebenen, zB ThreadStaticAttribute
.
In der Praxis sind statische Variablen eine billige/schwache Lösung. Sie müssen den Zugriff manuell synchronisieren, und Sie haben wenig Kontrolle über den Ablauf. Sie können eine Cache-basierte Lösung ohne zusätzlichen Aufwand implementieren oder zur Unterstützung der Unternehmensanforderungen auf die oben erwähnte Out-of-Process-Methode umstellen.
Sie müssen diese Daten irgendwo für beide Sitzungen zugänglich speichern, ich schlage vor, Sie speichern sie in Cache, Anwendung oder einem DB. – Zachary