J'ai un service WCF avec les paramètres suivants:WCF ConcurrencyMode.Multiple meilleures pratiques de connexion et Caching
- NetNamedPipeBinding
- ConcurrencyMode.Multiple
- InstanceContextMode.Single
maintenant J'ai un client qui accède à ce service WCF d'une manière multi-thread. Dans la mesure où je comprends, je dois ouvrir une nouvelle connexion au service pour chaque thread afin d'éviter que les threads se bloquent les uns les autres.
- Dans ce cas Quel est le prix
Open()
appel (service est dans le même ordinateur)? - Dois-je mettre en cache/mettre en pool la classe de mon client? (dérivé de
ClientBase
) ou est-ce que WCF fournit un pool transparent pour les connexions similaires à SQLConnection Pooling?
Pour un tel scénario, communication sur machine NetNamedPipe, je ne vois pas la complexité ajoutée de ConcurrencyMode.Multiple en tant que bénéfice. Cela rend juste votre code de service beaucoup plus complexe et sujet aux erreurs .... Je ne sais pas si cela en vaut la peine et les problèmes de maintenance possibles, comparé à quelques nanosecondes enregistrées dans la création de proxy client ..... –
Sans multiple cela ne fonctionnerait pas comme multithread, cela signifie que le multihtreading dans le client serait inutile puisqu'il attendra les uns les autres. Et ce n'est pas un appel de la milliseconde cela prend quelques secondes. Ou est-ce que je manque quelque chose? –