Я не согласен с Джесси ( в качестве примечания: он также рекомендует по умолчанию использовать классы обслуживания WCF в качестве одиночных, что, на мой взгляд, является худшей идеей ) .....
Пока вы тщательно следите за перехватом исключений на сервере (например, реализуя интерфейс IErrorHandler
в своем классе обслуживания), здесь нет смысла продолжать закрывать ваш канал ... особенно не всреда корпоративной локальной сети, использующая netTcpBinding.
В отличие, например, от подключения к базе данных, которое часто сопряжено с расходами на лицензирование, поддержание открытого сетевого подключения к вашему сервисному компьютеру не должно вызывать никаких проблем.Как правило, это также не ограниченный ресурс, поэтому постоянно открывать и закрывать его кажется бессмысленным.
Если вы продолжаете открывать свой сервисный канал в течение более длительного периода времени, вы должны быть способны на стороне клиента обрабатывать ошибки- например, вам нужно иметь возможность восстанавливаться после ситуации, когда канал вышел из строя, когда в конце концов возникло исключение (например, сеть не работает или что-то в этом роде).
Но если вы это сделаете,тогда я не вижу никакой выгоды в том, чтобы постоянно закрывать ваш канал после каждого звонка и открывать для следующего ...