2010-02-23 5 views
6

J'ai un objet dont le coût d'initialisation est relativement élevé et qui fournit une méthode de calcul thread-safe nécessaire pour traiter les demandes de service Web.Instance d'objet partagé entre les invocations de service Web

Je cherche le meilleur moyen de garder une instance initialisée disponible entre les requêtes.

Une méthode consiste à le déclarer en tant que variable statique. Il restera alors disponible jusqu'à ce que l'AppDomain soit recyclé.

Il s'agit d'un service Web plus ancien qui n'utilise pas WCF, mais la conversion est une option si cela peut fournir une meilleure solution.

Y a-t-il une meilleure approche?

Répondre

2

Qu'en est-il de la mise en cache de l'objet dans HttpRuntime.Cache? Ici, je le laisse dans le cache pendant une heure maximum, mais vous pouvez le modifier au besoin.

+0

Le cycle de vie du cache est-il indépendant du cycle de vie de chaque AppDomain (AppDomain traitant les requêtes HTTP)? –

+0

@Eric J. Il est indépendant d'une requête HTTP individuelle. En d'autres termes, votre service pourrait gérer des milliers de requêtes et l'objet resterait dans le cache. Si l'App Domain recycle (tous les jours ou ce que vous avez configuré dans IIS), l'objet mis en cache est supprimé. De même, l'objet n'est pas garanti de rester dans le cache pour son expiration, cela dépend de la mémoire disponible, etc. – Keltex

+0

Donc, cela fournit essentiellement le même cycle de vie qu'une référence d'objet statique, mais avec la flexibilité supplémentaire que je peux contrôler l'expiration comme IIS peut-il avoir besoin de récupérer de la mémoire? –

Questions connexes