Закрытие и удаление службы WCF
Close
метод на ICommunicationObject
может выдать два типа исключений, как указано в MSDN здесь. Я понимаю почему Close
метод может генерировать эти исключения, но я не понимаю, почему Dispose
метод на прокси службы вызывает Close
метод без try
вокруг него. Не твой Dispose
метод единственное место, где вы хотите, чтобы убедиться, что вы не бросаете никаких исключений?
2 ответа
Кажется, это общий шаблон проектирования в.NET-коде. Вот цитата из руководящих принципов проектирования Framework
Рассмотрите возможность предоставления метода Close () в дополнение к Dispose(), если close является стандартной терминологией в области. При этом важно, чтобы вы сделали реализацию Close идентичной Dispose ...
Вот сообщение в блоге, в котором вы можете найти обходной путь для этой проблемы проектирования System.ServiceModel.ClientBase
Да, обычно Dispose - это одно из мест, где вы хотите, чтобы исключения не создавались. Однако на основе этой ветки форума MSDN были некоторые исторические причины такого поведения. Таким образом, рекомендуемый шаблон - это парадигма try{Close}/catch{Abort}.