Как ограничить количество экземпляров службы WCF в IIS? - PullRequest
1 голос
/ 18 декабря 2009

Моя служба WCF создается несколько раз, пока система не выйдет из памяти? Как установить один экземпляр в IIS 7?

Моя служба WCF уже настроена на один экземпляр через атрибут, но IIS, похоже, игнорирует это:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
    ConcurrencyMode = ConcurrencyMode.Multiple)]

Ответы [ 2 ]

5 голосов
/ 19 декабря 2009

Вы могли бы определить службу WCF как одиночную - я бы порекомендовал этого не делать. Вы столкнетесь с множеством неприятностей - проблемами с производительностью и масштабированием, и для их решения вам придется иметь дело с многопоточным, поточно-ориентированным программированием - и все это довольно грязно.

Что вам нужно сделать, это использовать настройку для каждого вызова и ограничить ваш сервер тем, что вы считаете разумным. Существует поведение службы, называемое «serviceThrottling», которое позволяет вам определять, например, сколько одновременных экземпляров класса обслуживания вы хотите разрешить, сколько одновременных вызовов вы хотите обрабатывать и т. Д.

По умолчанию эти значения установлены на довольно низкое значение. Если у вас хорошо оборудованный сервер, вы можете легко их поднять. Вы определяете это в файле web.config вашего сервера следующим образом:

<behaviors>
    <serviceBehaviors>
        <behavior name="throttled">
            <serviceThrottling
                maxConcurrentCalls="16"
                maxConcurrentInstances="26"
                maxConcurrentSessions="10" />
        </behavior>
    </serviceBehaviors>
</behaviors>

(Значения выше являются значениями по умолчанию)

Читайте о регулировании обслуживания и всех его деталях с этими превосходными сообщениями в блоге:

0 голосов
/ 18 декабря 2009

Возможно, вы переопределяете атрибут в web.config? Откуда вы знаете, что ваш сервис создается несколько раз клиентскими вызовами (а не кодом на сервере, создающем несколько экземпляров)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...