Это на самом деле неплохо.Возможно, вы можете использовать ICommunicationObject
вместо этого, поскольку тот же код требуется и для ваших хостов.
Способ думать об этом - дружеский вызов.Пожалуйста, завершите мой звонок и верните прокси в пул соединений.Прервите: «Мне все равно, закройте прокси, потому что он мертв, а также удалите его из пула, потому что он мертв».
В зависимости от вашего кода, вы можете абстрагировать части кода «WCF Proxy» от частей вызова функции, если это возможно.Таким образом, вы можете тестировать логику приложения отдельно от прокси-кода WCF.
Возможно, вы захотите посмотреть на попытку {} catch (CommunicationException), чтобы вы могли обрабатывать исключения WCF отдельно и для исключения уровня приложения.вместо окончательно.
т.е.
try
{
try
{
proxy.call();
//app logic
((ICommunicationObject)proxy).Close();
}
catch (SomeAppException)
{
//recover app exception
}
}
catch (CommunicationException)
{
((ICommunicationObject)proxy).Abort();
}