Work Executor: постановка бизнес-задачи

Опубликовано 15.02.2025 11:50:00 в категории My Frameworks

«Перебор» задач из списка для получения результата.

Пользовательская история (User Story)

  • Хочется получать гео-данные от нескольких сервисов, которые предоставляют услуги.
  • Хочется максимально экономить финансовые средства, потому что сервисы могут предоставлять как платные (например, «подписка»), так и бесплатные услуги.
  • Хочется получить данные как минимум с одного из сервисов в списке доступных.
  • Хочется добавлять сервисы в список доступных для запросов и удалять из списка (без сборки и публикации ПО).
  • Хочется указывать приоритетные сервисы с учетом цены, времени ответа, вероятности ошибок и т.д. и т.п.
  • Хочется иметь статистику о том, какой сервис сколько раз сработал и во сколько это обошлось.
  • Хочется, чтобы при разработке использовались сервисы-заглушки (fake-services)
  • Хочется, чтобы в разных регионах (страны, материка, Земли) могли быть использованы разные группы сервисов.

Абстракция – наше всё!

Если представить, что реализация требований завершена, то как можно было бы еще использовать этот механизм? Какие данные можно было бы обрабатывать подобным способом? Могу предположить следующее:

  • Гео-данные
  • Прогноз погоды
  • Курсы валют
  • Проверка личных данных (ИНН, платежеспособность и т.д.)
  • Проверка документов (паспорт, водительские права, т.д.)
  • Проверка компаний/фирм/предприятий (рейтинг, банкротство, отзывы и т.д.)
  • Получение цен на товары и услуги (магазины, сервисы агрегаторы и т.д.)
  • Авторизация (github.com, goolge.com, ok.ru, vk.com и т.д.)

Постановка задачи на разработку

  • Требуется реализовать обособленную сборку (nuget-пакет), который можно установить в проект и реализовать несколько вариантов «перебора» сторонних сервисов.
  • Требуется использовать Dependency Container
  • Требуется реализовать возможность вызова отдельно от механизма «перебора», например, для unit-тестов
  • Требуется прерывать выполнение «перебора» сервисов, то есть применить таймаут на все запросы.
  • Требуется обрабатывать каждый из результатов запроса на сервис в процессе «перебора».
  • Если в процессе «перебора» сервисов были ошибки, требуется возможность знать он них «централизовано».
  • Если ни один из зарегистрированных сервисов не вернул данные, требуется вернуть значение по умолчанию (при необходимости).

Видео

Мои видео

Boosty.toYouTube | Yandex.Дзен | RuTube | VK Video

Больше видео на boosty Calabonga, а если хотите тоже получать донаты, тогда заходите и регистрируйте свою страницу на boosty. Я использую хостинг reg.ru, Подключайся с промокодом 9A17-953A-8591-CF98 чтобы получить скидку 5%

Комментарии к статье отключены

Что-то пошло не по сценарию и завершилось ошибкой. Перезагрузить страницу (F5) 🗙

Переподключаем сервер...

Переподключение сломалось... Пробуем еще раз сек.

Не получилось переподключится.
Пожалуйста, обновите страницу F5

Сессия была поставлена сервером на паузу.

Восстановить сессию не получилось.
Пожалуйста, обновите страницу F5.