Следует ли вам всегда отключаться от службы WCF между вызовами? - PullRequest
3 голосов
/ 26 января 2011

Я использую службу WCF для администрирования службы Windows, работающей на удаленной машине.У нас есть клиент администрирования, который мы используем для изменения конфигурации службы Windows, а также для мониторинга состояния службы в режиме реального времени.Для мониторинга в реальном времени мы опрашиваем сервис на предмет его состояния каждую секунду.

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

Было бы рекомендовано в нашей ситуации, когда мы часто звоним в службу, или подключение и отключение добавили бы слишком много накладных расходов для процесса?

Спасибо

1 Ответ

1 голос
/ 27 января 2011

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

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

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

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

...