Work Executor: постановка бизнес-задачи
My Frameworks | создано: 04.02.2025 | опубликовано: 15.02.2025 | обновлено: 15.02.2025 | просмотров: 36
«Перебор» задач из списка для получения результата.
Пользовательская история (User Story)
- Хочется получать гео-данные от нескольких сервисов, которые предоставляют услуги.
- Хочется максимально экономить финансовые средства, потому что сервисы могут предоставлять как платные (например, «подписка»), так и бесплатные услуги.
- Хочется получить данные как минимум с одного из сервисов в списке доступных.
- Хочется добавлять сервисы в список доступных для запросов и удалять из списка (без сборки и публикации ПО).
- Хочется указывать приоритетные сервисы с учетом цены, времени ответа, вероятности ошибок и т.д. и т.п.
- Хочется иметь статистику о том, какой сервис сколько раз сработал и во сколько это обошлось.
- Хочется, чтобы при разработке использовались сервисы-заглушки (fake-services)
- Хочется, чтобы в разных регионах (страны, материка, Земли) могли быть использованы разные группы сервисов.
Абстракция – наше всё!
Если представить, что реализация требований завершена, то как можно было бы еще использовать этот механизм? Какие данные можно было бы обрабатывать подобным способом? Могу предположить следующее:
- Гео-данные
- Прогноз погоды
- Курсы валют
- Проверка личных данных (ИНН, платежеспособность и т.д.)
- Проверка документов (паспорт, водительские права, т.д.)
- Проверка компаний/фирм/предприятий (рейтинг, банкротство, отзывы и т.д.)
- Получение цен на товары и услуги (магазины, сервисы агрегаторы и т.д.)
- Авторизация (github.com, goolge.com, ok.ru, vk.com и т.д.)
Постановка задачи на разработку
- Требуется реализовать обособленную сборку (nuget-пакет), который можно установить в проект и реализовать несколько вариантов «перебора» сторонних сервисов.
- Требуется использовать Dependency Container
- Требуется реализовать возможность вызова отдельно от механизма «перебора», например, для unit-тестов
- Требуется прерывать выполнение «перебора» сервисов, то есть применить таймаут на все запросы.
- Требуется обрабатывать каждый из результатов запроса на сервис в процессе «перебора».
- Если в процессе «перебора» сервисов были ошибки, требуется возможность знать он них «централизовано».
- Если ни один из зарегистрированных сервисов не вернул данные, требуется вернуть значение по умолчанию (при необходимости).