2011-06-21 2 views
2

J'utilise un localisateur de service pour contenir des instances concrètes de classes, utilisées dans un service WCF. Plutôt que de passer le ServiceLocator, j'ai décidé de le rendre statique afin que je puisse y accéder à partir de chaque classe. Le localisateur de service est rempli lorsque le service WCF démarre et, selon certains paramètres, il peut être rempli avec différentes implémentations concrètes.Comment utiliser un localisateur de service dans un service WCF

Mon problème est que si un appel est fait au service WCF avant qu'un autre appel ait fini, alors (je pense) le ServiceLocator sera rempli avec les implémentations incorrectes.

Est-il possible de rendre le localisateur de service disponible pour les classes et de ne pas le réutiliser par différents threads ou appels au service WCF?

Répondre

1

Vous fournissez peu de détails sur votre localisateur de service et l'implémentation non-mise à jour. D'après ce que j'ai lu, je comprends que c'est le tien.

Mon conseil personnel est que vous ne devriez pas utiliser un Service Locator dans un cas de service WCF car WCF expose une interface qui permet l'injection de dépendance.

Vous pouvez en savoir plus sur le localisateur de services anti-modèle ici: http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx

Vous ne devriez pas mettre en œuvre votre localisateur de services, car il y a beaucoup de projets OSS autour de l'injection de dépendance, vous pouvez utiliser et faire le travail de la bonne façon.

Voici l'implémentation correcte de l'injection de dépendances en utilisant StructureMap avec les services WCF: http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/.

+0

+1 ou avec autofac http://code.google.com/p/autofac/wiki/WcfIntegration – kenny

Questions connexes