Ответ на ваш вопрос зависит от используемой вами привязки.Есть два параметра, управляющих этим поведением: InstanceContextMode и ConcurrencyMode.Оба эти параметра установлены в ServiceBehaviorAttribute.
InstanceContextMode контролирует, как создается экземпляр службы.Он имеет следующие значения:
PerCall - каждый раз, когда вы вызываете сервис, создается новый экземпляр сервиса.Это поведение по умолчанию для служб, предоставляемых для привязок, которые не используют транспортный сеанс, надежный сеанс или сеанс безопасности => BasicHttpBinding, WebHttpBinding.
PerSession - каждый раз, когда вы вызываете службу из новогоэкземпляр прокси создан новый экземпляр службы.Любой последующий вызов с того же прокси-сервера обрабатывается тем же экземпляром службы (экземпляр живет на сервере).По умолчанию последующий вызов должен быть выполнен в течение 10 минут (receiveTimeout), или экземпляр службы освобождается.Это стандартное поведение по умолчанию для служб, связанных с привязкой, которые используют транспортный сеанс, надежный сеанс или сеанс безопасности => WSHttpBinding (настройка по умолчанию использует сеанс безопасности), NetTcpBinding, NetNamedPipeBinding.
Single - onlyсуществует один экземпляр службы, который обрабатывает все вызовы.Этот экземпляр службы можно создать при запуске хоста или при первом вызове службы.
Теперь вы знаете, как создаются экземпляры.Второй параметр ConcurrencyMode контролирует, сколько одновременных потоков может получить доступ к одному экземпляру.Каждый запрос всегда обрабатывается в отдельном потоке.
Одиночный - только один поток может получить доступ к экземпляру службы.Это поведение по умолчанию.
Reentrant - один поток может получить доступ к сервису, но он может снять блокировку и позволить другому потоку использовать экземпляр, пока первый поток будет заблокирован.Это используется в сценарии обратного вызова.
Несколько - несколько потоков могут получить доступ к экземпляру службы.
Теперь вы знаете, как можно одновременно использовать экземпляр.Давайте рассмотрим некоторые комбинации:
Создание экземпляров PerCall + Единый параллелизм - типичный сценарий без сохранения состояния.Допускается несколько одновременных вызовов.
Создание экземпляров PerCall + Многократный параллелизм - не имеет смысла.Он по-прежнему ведет себя как одиночный параллелизм.
Создание экземпляров PerSession + одиночный параллелизм - допускается несколько одновременных вызовов, но одновременно может обрабатываться только один вызов от каждого прокси.Другие вызовы помещаются в очередь.
Создание экземпляров PerSession + множественный параллелизм - допускается несколько одновременных звонков.Несколько вызовов от каждого прокси могут одновременно обращаться к одному и тому же экземпляру.Необходимо выполнить ручную синхронизацию доступа к общим полям в экземпляре службы.
Одиночное копирование + Одиночный параллелизм - одновременно может обрабатываться только один запрос.Другие запросы ставятся в очередь (время ожидания по умолчанию 30 с).
Один экземпляр + Множественный параллелизм - допускается несколько одновременных вызовов.Все вызовы обращаются к одному и тому же экземпляру одновременно.Необходимо выполнить ручную синхронизацию доступа к общим полям в экземпляре службы.