На самом деле нет никакой выгоды или выбора - один ServiceHost
(экземпляр этого класса) может содержать ровно одну службу, и для каждой службы вам нужен отдельный узел службы. Это отображение 1: 1 - всегда нет выбора.
Но, конечно, ваша служба Windows NT или приложение консоли могут иметь несколько активных объектов ServiceHost
одновременно. Это может быть полезно, если у вас есть набор служб, которые логически связаны друг с другом и не могут существовать друг без друга, когда не имеет смысла запускать один из них, а другой не запускать.
И да, узел службы может размещать службу, которая предоставляет несколько конечных точек, и несколько клиентов могут подключаться к этим отдельным конечным точкам одновременно, нет проблем. Среда выполнения WCF будет ускорять несколько рабочих потоков для обработки входящих запросов (вы можете ограничить их с помощью поведения ServiceThrottling) независимо друг от друга.
Чтобы настроить и контролировать количество одновременных вызовов и запросов, вам нужно взглянуть на поведение ServiceThrottling на стороне сервера.
<behaviors>
<serviceBehaviors>
<behavior name="serviceThrottled">
<serviceThrottling
maxConcurrentCalls="16"
maxConcurrentInstances="26"
maxConcurrentSessions="10"/>
</behavior>
</serviceBehaviors>
</behaviors>
и вам нужно ссылаться на эту конфигурацию поведения службы в объявлении службы, конечно:
<service name="YourService" behaviorConfiguration="serviceThrottled">
.....
</service>
Это значения по умолчанию. Объяснения следующие (взято из поста Дэна Ригсби в блоге, сокращенно):
MaxConcurrentCalls (по умолчанию = 16) [Per-message] Максимальное количество сообщений, которые можно активно обрабатывать.
MaxConcurrentInstances (по умолчанию = 26) Максимальное количество объектов InstanceContext в службе, которые могут выполняться одновременно. Для услуги на сеанс это равно максимальному количеству сеансов, для услуги на сеанс - это максимальное количество одновременных вызовов, а для синглетов - бессмысленно.
MaxConcurrentSessions (по умолчанию = 10) [на канал] Максимальное количество сеансов, которое может принять служба за один раз. Входит только в игру с привязками на основе сеанса (wsHttp или netTcp)
Обязательно посмотрите Отличный пост Дана Ригсби в блоге на эту тему.