Когда несколько лет назад я разрабатывал управляемые данными приложения для платформы Android, иногда возникали периодические проблемы с подключением, которые приводили к сбою приложения. Вместо того, чтобы отклонять весь запрос и регистрировать исключение, я ввел шаблон повторных попыток. Каждый метод базы данных будет заключен в блок try/catch. В блоке catch будет вызов того же метода. Чтобы код не зацикливался и не генерировал исключение stackoverflow, я реализовал шаблон повтора, чтобы выполнить настраиваемое количество попыток, прежде чем сдаться и генерировать исключение. Благодаря реализации шаблона повторных попыток во всех методах базы данных преобладание исключений в этой части кода практически исчезло.

Я реализовал тот же шаблон повторных попыток со своими службами ASP.NET Web API. Вместо создания исключения в случае временной проблемы со связью шаблон повторных попыток позволяет повторить метод из блока catch до настраиваемого числа повторных попыток. Я реализовал этот шаблон для всех методов базы данных и контроллеров, которые извлекают данные из сторонних сервисов.

Шаблон повторных попыток добавляет уровень устойчивости к приложениям, которые управляются данными и/или используют сторонние службы, или где существует любой уровень внешней связи между различными движущимися частями приложения.