2010-06-30 3 views
0

J'ai un service WCF qui est utilisé de manière synchrone, mais son mode ConcurrencyMode est défini sur la valeur ConcurrencyMode.Multiple, car le service est réellement sans état. Combien de frais généraux ce mode impose-t-il? Est-il sensé de changer le mode à ConcurrencyMode.Single?WCF. Overhead de ConcurrencyMode.Multiple

Répondre

3

Cela n'impose pas vraiment de surcharge - autre que le fait que l'instance de service unique doit gérer l'accès simultané, il doit être de 200% thread-safe - et c'est une programmation assez délicate. Passer à ConcurrencyMode.Single rend la programmation plus simple - plus de soucis concernant la concurrence dans la classe de service. Mais il sérialise toutes les demandes - une seule à la fois peut être traitée et deviendra rapidement un goulot d'étranglement. Vous mentionnez que votre service est sans état - alors pourquoi ne pas le faire en utilisant la meilleure pratique généralement acceptée - pas un singleton, mais une classe de service "par appel" régulière. Dans ce mode, chaque requête reçoit une nouvelle instance de votre classe de service, il n'y a pas de problème de programmation multithread nécessaire (tout le multithread est géré par l'exécution de WCF), vous obtenez une gestion simultanée de plusieurs requêtes - pour moi, pas de bas!

+0

Merci pour la réponse. En ce qui concerne le mode "par appel", je prévois d'ajouter ultérieurement des dépendances sécurisées au thread. Donc je ne pense pas que ce soit la meilleure option pour utiliser le mode "par appel". –

+0

@bsnote: pourquoi pas ?? Si le service est effectivement apatride, pourquoi n'utilisez-vous pas le modèle le plus simple possible pour cela? Pourquoi le rendez-vous inutilement dur et difficile sur vous-même? –

+1

Le problème est que les dépendances seront injectées dans le service chaque fois qu'il est créé. Probablement le temps de création est insignifiant mais quels sont les avantages du mode "par appel" dans ce cas s'il n'y a pas besoin de traiter les problèmes de concurrence? –

Questions connexes