Вопрос

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top