Mise en œuvre d'une cache dans un Service WCF

J'ai un service WCF qui met en cache certaines données et les utilise pour répondre à des demandes web. Pour faire face à cette exigence, j'ai fait le service d'un Singleton (à l'aide de InstanceContextMode.Single et ConcurrencyMode.Multiple (oui, c'est thread-safe)).

J'ai essayé de définir le délai d'attente du service à son maximum à l'aide de la liaison suivants:

 <binding name="WebHttpBinding" receiveTimeout="24.20:31:23.6470000">
    <security mode="TransportCredentialOnly">
      <transport clientCredentialType="None" />
    </security>
 </binding>

Mon problème est que l'instance de service meurt à intervalles imprévisibles, la première requête web de hit sera la cause de la cache pour obtenir la reconstruction d'un processus très lent).

Idéalement, le cache de la reconstruction à un temps de jeu chaque jour sans avoir à se faire frapper par une requête web. Je pourrais définir le pool d'application de recycler à un moment donné, mais ce n'est pas de résoudre le problème du service à ne pas se instancié jusqu'à la première requête web. Je préfère ne pas avoir à faire un peu prévu script qui envoie une demande pour le service, qui est une sorte de hacky.

Est-il une meilleure stratégie pour la réalisation de la mise en cache dans un service WCF? Ce que d'autres ont fait ici? Est-il une meilleure pratique?

J'ai édité ton titre. Se reporter à la rubrique "si vous avez des questions comprennent “tags” dans leurs titres?", où le consensus est "non, ils ne devraient pas".
Comment vous organisez le service? IIS?
Êtes-vous de fournir les données de retour à l'appelant directement ou à l'aide de ces données dans le cadre du traitement?

OriginalL'auteur MgSam | 2013-09-26