2009-12-10 4 views
1

J'ai quelques services WCF qui sont actuellement auto-hébergés, dans un service NT très basique. Je veux développer mon application pour ajouter le provisionnement des services WCF, et les mises à jour, aussi bien que l'isolation (je veux que chaque service de WCF soit dans son propre domaine d'application). Ces services WCF contiennent une logique qui doit être exécutée régulièrement, en envoyant un ping à la base de données et en obtenant des informations à partir de périphériques externes, de sorte que lorsqu'une requête entre dans les données est facilement disponible.Modèle singleton dans le service d'activation Windows

Je pense à essayer le service d'activation Windows, car j'aime vraiment l'approvisionnement, et l'isolation qui vient avec une infrastructure de services gérés. Si je n'utilisais pas WAS, je devrais essentiellement écrire le même code moi-même. D'après ce que je comprends, WAS ne supporte pas vraiment le modèle d'avoir un service qui est en cours d'exécution avant que quelqu'un appelle une méthode sur le service. l'article que je lis ici

MSDN Article Link

états « Cela signifie en substance que hors de la boîte animais est pas quelque chose qui est vraiment adapté pour les services sessionful ou singleton. Il est plus approprié pour par apatride -call services. " Il dit que "out of the box", donc je me demande si quelqu'un a utilisé WAS pour héberger un service WCF qui se comporte vraiment comme un service NT (démarrage et arrêt indépendamment d'avoir une méthode appelée) . Ou d'autres idées seraient géniales. Je prévoyais d'écrire moi-même cette infrastructure, d'héberger les services WCF dans un ServiceHost personnalisé, et de mettre leur exécution dans un AppDomain séparé, ainsi que de permettre la fourniture de ces services après l'installation initiale, ainsi que des mises à jour. Cependant, je serais BEAUCOUP BEAUCOUP bien ne pas posséder ce code si je n'ai pas à le faire.

grâce

Joshua

Répondre

0

Si vous souhaitez utiliser WAS, il sera difficile de soutenir une instance appropriée Singleton de votre service.

Il semble que ce que vous devez vraiment faire est de créer une tâche planifiée. Vous pouvez exécuter votre utilitaire de mise à jour de base de données toutes les 5 minutes à partir d'une tâche planifiée et ne devrait pas avoir à transpirer le singleton.

Questions connexes