2013-08-27 8 views
0

Quel est le meilleur meilleur comment créer un WCF service qui fonctionnera pour un certain nombre de clients, mais fournira des informations équivalentes stockées sur le Service?Créer un service WCF asynchrone - singletone

J'ai essayé la manière suivante:

[ServiceBehavior (ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)] 

Mais parce que le service, il fonctionne très Singletone il lent (probablement synchrone) quand il y a plus de trois clients.

Mais j'ai besoin que le service sera Singletone, parce que j'ai un objet qui suppose à donné les mêmes informations à tous les clients (ou il y a une autre façon de le faire?)

J'aimerais avoir d'autres offres.

Répondre

1

Vous pouvez verrouiller l'utilisation de l'objet lui-même, ou la section critique du code. Il n'est pas nécessaire de rendre le service singleton complet. Cependant, sans voir le code, il est difficile de savoir si cela va aider. (Parce que si les longs calculs sont à l'intérieur de la section critique, le verrouillage ne sera pas utile).

EDIT:

Juste pour clarifier ma réponse, votre problème n'a rien à voir avec WCF. Vous demandez vraiment si vous devez payer les coûts en complexité du code afin d'obtenir de meilleures performances, ou s'en tenir à une seule manipulation de fil de cette section du code. Vous seriez confronté exactement au même problème si l'appel au service a été effectué à partir du même processus (par des threads différents) et non à partir du client WCF. Je vous suggère donc d'en savoir plus sur les collections multithread et conecurrent avant de vous décider.

+0

Mon objet est une liste gérée en service uniquement. Il change par les différents appels, mais seulement en service. (C'est un objet privé) –

+0

Essayez de remplacer la liste par une collection simultanée: http://stackoverflow.com/questions/15106938/what-net-4-0-system-collections-concurrent-collection-added-in-functionality- à . Si ce n'est pas une option, vous devrez vous assurer que toutes les options de la liste sont sûres pour les threads et face à la possibilité de conditions de course, ou rester avec tous les accès à la liste/en utilisant un service singleton –

Questions connexes