Закрытие и удаление службы 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}.

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