WCF - это способ получить привязку фабрики к созданному каналу

Я использую WCF для создания соединения между серверным приложением и клиентским приложением.

Потому что я использую NetTcpBindingЯ хочу сохранить канал, созданный:

T proxy = ChannelFactory<T>.CreateChannel();

Я добавляю экземпляр прокси в мое приложение для связи с сервером. В какой-то момент я обновляю этот прокси с другой фабрики. Но я хочу освободить ресурсы от первой фабрики, утилизируя ее. Но я не хочу управлять фабриками и держать ссылку на.

Есть ли способ с экземпляром прокси, чтобы получить ассоциированный канал для его утилизации?

Подобно...

var commObj = (ICommunicationObject)proxy;
commObj.Factory.Dispose();

Спасибо

1 ответ

Решение

К сожалению, это невозможно, потому что каналы и фабрики не связаны. Но я думаю, что ваш подход не верен. Вы должны сохранить ссылку на фабрику и создать канал по мере необходимости. Повторное использование канала может быть проблемой в некоторых случаях. Канал может быть поврежден, но внутренняя фабрика все еще будет действительна. Создание фабрики сопряжено с реальными затратами, и некоторые фабрики.net 3.5 SP1 внутренне хранятся в статическом кэше.

Другие вопросы по тегам