В прошлом я создавал новый экземпляр ChannelFactory <> и client / proxy для каждого вызова службы WCF. У меня не было никаких проблем с этим, особенно в отношении производительности. Написанное мною приложение было развернуто во внутренней сети компании (локальной сети), где около 30 клиентов Windows Forms подключались к моей службе WCF.
Посмотрите на следующий вопрос Где перехватить неудачное соединение в классе вызова WCF? и мой ответ на него. По сути, это класс-оболочка, который обрабатывает создание экземпляров клиент / прокси и выполняет множество необходимых обработок ошибок, чтобы преодолеть определенные недостатки в дизайне WCF (подробнее в связанном вопросе).
Вы можете переписать или обернуть его на другой фабрике, чтобы вы могли кэшировать ChannelFactory и клиент / прокси, если вы беспокоитесь о производительности. Я «слышал», что кешировать ChannelFactory или клиент / прокси - плохая идея, однако я открыт для исправления.