Wie statische Variablen in einer Bibliothek zu behandeln, die sowohl für Desktop- und Web verwendet wird?

StackOverflow https://stackoverflow.com/questions/1912890

  •  19-09-2019
  •  | 
  •  

Frage

Ich habe einige C # Bibliothek Klassen, die Verwendung von statischen Variablen zu machen. Ich benutze diese Bibliothek Klassen sowohl für Desktop- und Web-Anwendungen. Das Problem ist, wie ich gerade entdeckt, statische Variablen auf einem Web-Server so gut nicht untergehen; die Werte werden über alle Sitzungen mit der Web-Site zur Verfügung!

Wie kann ich die Eigenschaften einer statischen Variablen für die Verwendung in meinen Desktop-Anwendungen erhalten, gleichzeitig aber dafür sorgen, dass jede Sitzung auf meinem Web-Server einen eigenen, unabhängige Werte für diese Variablen hat - aber in der Sitzung selbst, verhält es sich nach wie vor wirklich wie ein statisches?

War es hilfreich?

Lösung

Statische Variablenwerte werden über alle Threads in einer Anwendungsdomäne geteilt. In einer ASP.NET-Anwendung zum Speichern von Daten der empfohlene Weg, die nur für den aktuellen Benutzer in engen Zusammenhang steht die Session .

Wenn Sie den Code dieser gemeinsamen Bibliothek ändern kann ich Ihnen raten würde eine Schnittstelle aus diesen statischen Variablen zu extrahieren, die einen Mechanismus zum Speichern von Werten liefern. Dies ermöglicht jede Anwendung ihre eigene Implementierung zur Verfügung zu stellen. Für eine Windows-Anwendung können Sie eine Implementierung verwenden, die intern eine statische Variable verwendet. Für eine ASP.NET-Anwendung können Sie die Session verwenden. Aber in allen Fällen setzen Sie nur eine Schnittstelle. Dies hat auch den positiven Nebeneffekt Ihren Code leichter zu Unit-Test zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top