Я инициализирую свой прокси вручную через класс ChannelFactory, поскольку конфигурации для инициализации этого прокси взяты из какой-то другой службы конфигурации (не в том же App.Config) и, чтобы избежать затрат на инициализацию (вызов службы, чтение параметров конфигурации), я кэшировал этот прокси. Я не могу нести затраты на закрытие этого прокси после каждой операции, потому что требуется частое выполнение операций. Конфигурации тайм-аута для этого прокси следующие.
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
closeTimeout="00:10:00"
Согласно моему пониманию свойств тайм-аута на стороне клиента, статус моего прокси-сервера будет Fault, когда тайм-аут превысит. правильно?
Я хочу повторно инициализировать свой прокси, поэтому у меня есть 2 варианта сделать это.
1) Я использую обработчик событий ICommunicationObject.Faaled, и когда мой прокси перешел в состояние сбоя, я даже повторно инициализирую прокси. Но эта реализация не подходит, потому что мы неправильно разместили прокси (вызов метода .Close ()), и он не освободит ресурсы со стороны службы и не повлияет на мою производительность.
2) Я создаю поток и устанавливаю, что прошло несколько секунд, прежде чем прокси перейдет в состояние сбоя. Правильно закройте этот прокси, вызвав метод .Close {), повторно инициализируйте другой объект и кешируйте его.
Пожалуйста, предложите мне, какой вариант хорош с точки зрения производительности, и дайте мне знать, существует ли какое-либо другое решение, чтобы избежать этой проблемы.
Заранее спасибо.