Каковы преимущества для нескольких servicehosts? Один ServiceHost поддерживает несколько одновременных соединений на одной конечной точке?

Я думаю о самохостинге моего сервиса WCF вместо того, чтобы использовать IIS. Большой вопрос для меня состоит в том, должен ли я инстанцировать нескольких servicehosts, как IIS делает или один wil быть достаточно.

muptiple servicehosts приносят какую-либо пользу кроме соображений безопасности dut к изоляции?

Один servicehost может служить многочисленным связям на одной конечной точке одновременно?

7
задан flashnik 25 January 2010 в 11:10
поделиться

1 ответ

Нет никакой выгоды или выбора, действительно - один 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 на тему.

11
ответ дан 6 December 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: