Question

J'ai un service WCF qui est utilisé de manière synchrone, mais son ConcurrencyMode est réglé à la valeur ConcurrencyMode.Multiple, parce que le service est en fait sans état. Combien les frais généraux ne ce mode impose? Est-il judicieux de changer le mode ConcurrencyMode.Single?

Était-ce utile?

La solution

Il n'impose pas vraiment frais généraux - autre que le fait que l'instance de service unique doit gérer l'accès simultané, il doit être 200% thread-safe -. Et c'est une programmation assez délicate

Le passage à ConcurrencyMode.Single rend la programmation plus simple - pas plus de soucis au sujet de la classe concurrency de service. Mais il sérialise toutes les demandes -. Une seule à la fois peut jamais être manipulé et deviendra ainsi un goulot d'étranglement rapide

Vous mentionnez votre service est apatride - alors pourquoi ne pas faire utiliser le plus souvent d'accord sur les meilleures pratiques - pas un singleton, mais régulière « par appel » classe de service. Dans ce mode, chaque demande obtient une nouvelle instance de votre classe de service, il n'y a pas fussing sur la programmation multithread nécessaire (toutes les multithreading est assurée par le moteur d'exécution WCF), vous obtenez le traitement simultané de plusieurs demandes - pour moi, ce n'est que les avantages et les pas sur les côtés!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top