2010-07-25 9 views
1

pendant un moment Je me demande si c'est une bonne idée de stocker des données dans un singleton lors de l'écriture d'un service web (ou WCF). Le but est de réutiliser cette information dans différents appels du service. Je me demande quelle est la durée de vie de ces singletons, parce que, par exemple, lorsque le pool d'applications est recyclé, le singleton est parti. La prochaine question est la disponibilité du singleton. Est-il vraiment disponible dans tous les appels, indépendamment des processus ou des threads démarrés par IIS?Singletons dans les services Web ou WCF

Qu'en pensez-vous?

Merci, Rocko

Répondre

1

La durée de vie d'un singleton est égale ou inférieure (si elle est chargée paresseux) à la durée de vie de l'application. Lorsque le pool d'applications est recyclé, l'application s'arrête et la mémoire utilisée pour stocker les singletons est récupérée par le système d'exploitation. Le singleton sera disponible dans tous les threads de l'application, mais comme il est stocké dans l'espace mémoire du processus exécutant cette application, il ne sera pas disponible pour les autres processus. Pour répondre à votre question de savoir si c'est une bonne idée de stocker des données en utilisant le modèle singleton dans WCF cela dépend entièrement de votre scénario et de ce que vous voulez stocker et où voulez-vous qu'il soit disponible. WCF fournit de nombreux points d'extensions qui vous permettraient d'éviter les méthodes statiques.

Un inconvénient des singletons est qu'ils sont difficiles à tester unitaire alors j'essaie généralement de les éviter si possible.

Questions connexes