Это зависит от конфигурации вашей службы через атрибут ServiceBehavior класса, реализующего ваш контракт на обслуживание:
[ServiceBehavior(
InstanceContextMode = InstanceContextMode.PerSession,
ConcurrencyMode = ConcurrencyMode.Multiple)]
С параметром InstanceContextMode
вы указываете WCF, как вы хотите разместить свой сервис:
- Single : Будет создан один экземпляр вашего класса обслуживания, который будет принимать все вызовы обслуживания
- PerSession : для каждого подключающегося клиента будет создан новый экземпляр
- PerCall (по умолчанию): для каждого вызова каждого клиента будет создаваться новый экземпляр
Следующая вещь - это синхронизация, когда один объект хоста получает параллельные вызовы операций. Вы можете управлять поведением с помощью параметра ConcurrencyMode
:
- Одиночный (по умолчанию): WCF сериализует все операции, поэтому ваш экземпляр службы выполняет ровно один или ни одного вызова операции за один раз.
- Reentrant : WCF делегирует все вызовы операций непосредственно вашему экземпляру службы, но синхронизирует вызовы с другим сервисом WCF внутри операции службы (я думаю, редко используется).
- Несколько : WCF делегирует все вызовы операций экземплярам службы напрямую без синхронизации. Вы должны беспокоиться о синхронизации самостоятельно.