WCF - это способ получить привязку фабрики к созданному каналу
Я использую WCF для создания соединения между серверным приложением и клиентским приложением.
Потому что я использую NetTcpBinding
Я хочу сохранить канал, созданный:
T proxy = ChannelFactory<T>.CreateChannel();
Я добавляю экземпляр прокси в мое приложение для связи с сервером. В какой-то момент я обновляю этот прокси с другой фабрики. Но я хочу освободить ресурсы от первой фабрики, утилизируя ее. Но я не хочу управлять фабриками и держать ссылку на.
Есть ли способ с экземпляром прокси, чтобы получить ассоциированный канал для его утилизации?
Подобно...
var commObj = (ICommunicationObject)proxy;
commObj.Factory.Dispose();
Спасибо
1 ответ
К сожалению, это невозможно, потому что каналы и фабрики не связаны. Но я думаю, что ваш подход не верен. Вы должны сохранить ссылку на фабрику и создать канал по мере необходимости. Повторное использование канала может быть проблемой в некоторых случаях. Канал может быть поврежден, но внутренняя фабрика все еще будет действительна. Создание фабрики сопряжено с реальными затратами, и некоторые фабрики.net 3.5 SP1 внутренне хранятся в статическом кэше.