WCF.Накладные расходы на ConcurrencyMode.Multiple - PullRequest
0 голосов
/ 30 июня 2010

У меня есть служба WCF, которая используется синхронно, но для ее параметра ConcurrencyMode установлено значение ConcurrencyMode.Multiple, поскольку служба фактически не имеет состояния.Сколько накладных расходов накладывает этот режим?Имеет ли смысл менять режим на ConcurrencyMode.Single?

1 Ответ

3 голосов
/ 30 июня 2010

Это на самом деле не накладывает никаких накладных расходов - кроме того факта, что один экземпляр службы должен обрабатывать параллельный доступ, он должен быть на 200% потокобезопасным - и это довольно сложное программирование.

Переключение на ConcurrencyMode. Single упрощает программирование - больше не нужно беспокоиться о параллелизме в классе обслуживания. Но он сериализует все запросы - только один может быть обработан за один раз и, таким образом, быстро станет узким местом производительности.

Вы упоминаете, что ваша служба не имеет состояния - так почему бы не использовать ее в соответствии с обычно согласованной передовой практикой - не единичным, а обычным классом обслуживания "на вызов". В этом режиме каждый запрос получает новый экземпляр вашего класса обслуживания, нет необходимости суетиться по поводу многопоточного программирования (вся многопоточность обрабатывается средой выполнения WCF), вы получаете одновременную обработку нескольких запросов - для меня это только преимущества и нет минусов!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...