2009-06-08 7 views
0

Est-ce la bonne façon d'initialiser un objet de cache statique dans un service Web?Caches statiques dans les services Web

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

Plus d'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. 

Répondre

0

Cela me semble bon - surtout si vous allez envelopper le Current.Context et exposer les propriétés des valeurs de cache comme ceci:

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

    // etc... 
} 

Vous n Pas vraiment besoin de créer une référence privée au cache actuel, sauf si vous ne faites que pour économiser en tapant. Notez également que j'ai également fait la classe static.

0

Pourquoi ne pas y accéder directement en utilisant HTTPContext.Current.Cache?

+0

On dirait que je reçois plus d'un objet cache du webservice. crée une nouvelle requête qui ne dure que pendant la durée de cet appel. Si je passe à un autre ordinateur, il crée un nouvel objet de demande (et je pense qu'un service Web) qui renvoie un nouveau cache. En le forçant à être statique, j'espérais en avoir un seul. Cependant pas de résultat. – ra170

+0

Ensuite, il y a un problème avec votre machine. Spécifiez-vous des valeurs de délai d'attente pour les éléments dans le cache? Votre machine ne dispose-t-elle que d'une petite quantité de RAM? – RichardOD

Questions connexes