2009-06-08 6 views
0

Ist dies die richtige Methode zum Initialisieren eines statischen Cache-Objekts in einem Webdienst?Statische Caches in Webdiensten

public class someclass{ 
private static Cache cache; 
static someclass() 
    { 
     cache = HttpContext.Current.Cache; 
    } 
} 

Mehr Info:

Seems like I receive more then one cache object from webservice. It creates a new request that only lasts for the duration of that call. If I move to a different machine, it creates a new request (and I think a webservice) object that returns new cache. (because I can see two different caches being returned in the sniffer) By forcing it to be static I was hoping to have only one. However no avail. doesn't work. 

Antwort

0

Das sieht mir gut - vor allem, wenn Sie die Current.Context und belichten Eigenschaften für Cache-Werte so wickeln gehen:

public static class CacheManager 
{ 
    public static Boolean Foo 
    { 
     get { return (Boolean)HttpContext.Current.Cache["Foo"] } 
     set { HttpContext.Current.Cache["Foo"] = value; } 
    } 

    // etc... 
} 

Sie don Es ist nicht unbedingt erforderlich, einen privaten Verweis auf den aktuellen Cache zu erstellen, es sei denn, Sie sparen nur beim Tippen. Beachten Sie auch, dass ich auch die Klasse static gemacht habe.

0

Warum nicht einfach direkt darauf zugreifen mit HTTPContext.Current.Cache?

+0

Scheint so, als ob ich mehr als ein Cache-Objekt vom Webservice erhalte. es erstellt eine neue Anfrage, die nur für die Dauer dieses Anrufs dauert. Wenn ich auf einen anderen Computer umschalte, wird ein neuer Request (und ich denke ein Webservice) -Objekt erstellt, das einen neuen Cache zurückgibt. Indem ich es zwang, statisch zu sein, hoffte ich, nur einen zu haben. Aber kein Erfolg. – ra170

+0

Dann stimmt etwas mit Ihrer Maschine nicht. Legen Sie Zeitüberschreitungswerte für die Elemente im Cache fest? Hat Ihre Maschine nur wenig RAM? – RichardOD