Я думаю о самохостинге моего сервиса WCF вместо того, чтобы использовать IIS. Большой вопрос для меня состоит в том, должен ли я инстанцировать нескольких servicehosts, как IIS делает или один wil быть достаточно.
muptiple servicehosts приносят какую-либо пользу кроме соображений безопасности dut к изоляции?
Один servicehost может служить многочисленным связям на одной конечной точке одновременно?
Нет никакой выгоды или выбора, действительно - один ServiceHost
(экземпляр этого класса) может вместить ровно одну услугу, а для каждой службы вам нужен отдельный сервисный хост. Это отображение 1: 1 - всегда, нет выбора.
Но, конечно, ваша служба Windows NT или консоль может иметь несколько объектов объектов
одновременно. Это может быть полезно, если у вас есть набор услуг, которые логически принадлежат друг другу и не могут существовать без одного - где он не имеет смысла иметь один из них, и еще один не начался.
И да, хост обслуживания может размещать услугу, которая обнажает несколько конечных точек, и несколько клиентов могут одновременно подключаться к этим отдельные конечные точки, без проблем. Время выполнения WCF будет включать в себя ряд рабочих потоков для обработки входящих запросов (вы можете ограничить их с поведением военнослужащего) независимо друг от друга.
Чтобы настроить и контролировать, сколько одновременных вызовов и запросов у вас есть, вам нужно будет посмотреть на поведение сервера сервера.
<behaviors>
<serviceBehaviors>
<behavior name="serviceThrottled">
<serviceThrottling
maxConcurrentCalls="16"
maxConcurrentInstances="26"
maxConcurrentSessions="10"/>
</behavior>
</serviceBehaviors>
</behaviors>
И вам необходимо ссылаться на то, что конфигурация службы поведения службы в вашей службе, конечно,:
<service name="YourService" behaviorConfiguration="serviceThrottled">
.....
</service>
Это значения по умолчанию. Объяснения следующие (взятые из поста блога Dan Rigsby, сокращенные):
maxconcurrentCalls (по умолчанию = 16) [для каждого сообщения] максимальное количество сообщений, которые могут быть активно обработаны.
maxconcurrentinstances (по умолчанию = 26) Максимальное количество объектов InstanceCtext в сервисе, которая может выполнить одновременно. Для сервиса для каждого сеанса это равно максимальному количеству сеансов, для обслуживания в соответствии с вызовом, это максимальное количество одновременных вызовов, а также для синглтонов, это бессмысленно.
maxconcurrentsessionsions (по умолчанию = 10) [per-channel] Максимальное количество сеансов, которые сервис может принимать одновременно. Только вступает в игру с привязками на основе сеансов (WSHTTP или Nettcp)
определенно также проверяют Отличный блог Dan Rigsby на тему.