Простой ответ заключается в том, что режим Instancing по умолчанию равен PerSession
При условии:
Вот предоставленный Microsoft пример с настройками по умолчанию, обязательно настроенными в коде.
Пример поведения по умолчанию
[ServiceBehavior(
AutomaticSessionShutdown=true,
ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerSession,
IncludeExceptionDetailInFaults=false,
UseSynchronizationContext=true,
ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator { ... }
Я обнаружил, что чтение о сеансе в этой статье Microsoft ( Использование сеансов ) особенно полезно для понимания того, как сеансы открываются и закрываются и как это связано с экземплярами и параллелизмом.
По умолчанию клиент WCF создаст новый сеанс, который создаст экземпляр сервера, все вызовы на время сеанса называются диалогом и обслуживаются одним экземпляром (Instancing) сервера с одним потоком. (Параллелизм), посвященный этому сеансу / клиенту / разговору.
Если вы используете поведение экземпляра по умолчанию в WCF, все вызовы между клиентским объектом WCF обрабатываются одним и тем же экземпляром службы. Поэтому на уровне приложения вы можете думать о сеансе как о включении поведения приложения, аналогичного поведению локального вызова. Например, при создании локального объекта:
Конструктор называется.
Все последующие вызовы, сделанные для ссылки на объект клиента WCF, обрабатываются одним и тем же экземпляром объекта.
Деструктор вызывается, когда ссылка на объект уничтожается.
Сеансы обеспечивают аналогичное поведение между клиентами и службами, если используется поведение экземпляра службы по умолчанию.
Надеюсь, это кому-нибудь поможет, так как мне понадобилось время, чтобы найти ответ.