Производительность одного канала WCF по сравнению с несколькими каналами

У меня есть приложение, которое повторно использует один и тот же канал WCF снова и снова. Я сохраняю статическую ссылку через объект factory. Интересно, хорошо ли это, или что я должен открыть x каналов и объединить все вызовы служб по этим каналам, а не использовать один канал?

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

Ответ 1

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

Ответ 2

@Darin Dimitrov

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

прокси равен каналу. если вы посмотрите это сообщение в блоге, вы можете увидеть следующий фрагмент кода:

ISimpleContract proxy = factory.CreateChannel();
((IClientChannel)proxy).Open();

Кроме того, если вы планируете работать с сеансами, вы не хотите устанавливать новый сеанс для каждого запроса (каждый раз создавая новый канал/прокси).