WCF CreateChannel для каждого вызова метода - PullRequest
6 голосов
/ 26 октября 2010

В моем текущем веб-проекте мы выполняем ClientFactory.CreateChannel для каждого вызова метода удаленной службы.

Это действительно необходимо?Какова лучшая практика?

Ответы [ 2 ]

2 голосов
/ 26 октября 2010

Это в некоторой степени зависит от ваших требований. Открытие канала дорого, условно говоря. Рекомендуется, чтобы класс, выполняющий удаленные вызовы, реализовывал IDisposable, он должен один раз вызвать ClientFactory.CreateChannel, использовать каналы во всех вызовах методов и закрыть канал при вызове метода Dispose. Тем не менее, если время между вызовами методов, которые вызывают удаленную службу, велико (дольше, чем время ожидания по умолчанию на канале, равное 10 минутам), то выполнение ClientFactory.CreateChannel не особенно вредно, но я бы сказал, все равно было бы лучше пойти по пути IDisposable и инкапсулировать использование класса с ключевым словом 'using'

0 голосов
/ 27 октября 2010

создание нового канала для каждого вызова метода является "плохой практикой" "в целом".

Для дуплексной службы WCF

создание одного канала и его использование до тех пор, пока больше не будет необходимости общаться с сервером / или этот канал не будет закрыт.

После создания канала, прежде чем делать какие-либо звонки на сервер, рекомендуется проверить состояние канала (ошибка, открытие, закрытие).

Регистрация закрытого канала / Рекомендуется узнать об ошибках, когда они происходят. так что вы можете предпринять необходимые действия или / и снова создать канал с той же ссылкой на объектный канал объекта.

Для нормальной работы WCF

Создание шаблона прокси, создание канала / повторное использование / повторное создание, обработка ошибок и удаление. задайте тайм-аут неактивного доступа вместе с соответствующей конфигурацией прокси-клиента клиента WCF, которая лучше всего подходит для вашего решения.

Всегда нагрузочный тест !!!!

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