Вы могли бы определить службу WCF как одиночную - я бы порекомендовал этого не делать. Вы столкнетесь с множеством неприятностей - проблемами с производительностью и масштабированием, и для их решения вам придется иметь дело с многопоточным, поточно-ориентированным программированием - и все это довольно грязно.
Что вам нужно сделать, это использовать настройку для каждого вызова и ограничить ваш сервер тем, что вы считаете разумным. Существует поведение службы, называемое «serviceThrottling», которое позволяет вам определять, например, сколько одновременных экземпляров класса обслуживания вы хотите разрешить, сколько одновременных вызовов вы хотите обрабатывать и т. Д.
По умолчанию эти значения установлены на довольно низкое значение. Если у вас хорошо оборудованный сервер, вы можете легко их поднять. Вы определяете это в файле web.config вашего сервера следующим образом:
<behaviors>
<serviceBehaviors>
<behavior name="throttled">
<serviceThrottling
maxConcurrentCalls="16"
maxConcurrentInstances="26"
maxConcurrentSessions="10" />
</behavior>
</serviceBehaviors>
</behaviors>
(Значения выше являются значениями по умолчанию)
Читайте о регулировании обслуживания и всех его деталях с этими превосходными сообщениями в блоге: