Параллельные экземпляры - данные / проблема проектирования

Я пытаюсь придумать дизайн для приложения (C#/Avalonia), которое позволит создавать представления для данных, поступающих из нескольких источников. Общая идея состоит в том, чтобы связать источники и представить результат с помощью различных компонентов визуализации.

Есть несколько источников данных:

  • База данных 1
  • База данных 2/3/4
  • МЫЛО

База данных 1 будет использоваться для хранения всего, что связано с самим приложением (пользователей, разрешения и так далее).

Базы данных 2-4+ являются только потоками данных.

SOAP - вот где я борюсь, не совсем уверен, как с ним справиться. Может быть 10-50 одновременных запущенных экземпляров приложения, и каждый из них может запрашивать одно и то же обновление данных из SOAP (ограничения поставщика сделали бы это невозможным).

Я думал о следующем подходе:

  1. Запросить исходные данные из SOAP
  2. Кэшировать данные в базе данных 1 с отметкой времени
  3. Определите задержку между запросами
  4. Когда пользователь запрашивает обновление данных из SOAP, проверьте, должны ли мы возвращать кэшированные или свежие данные на основе отметки времени и значения задержки.

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

  • Пользователь 1 запрашивает новые данные, отмечает базу данных, чтобы гарантировать, что в будущем запросы не будут обрабатываться
  • Пользователь 2 запрашивает новые данные - на этом этапе ничего не происходит, подождите и запросите еще раз
  • Пользователь 1 завершает работу - нет новых данных ни для одного пользователя

Является ли подход полностью неправильным, и попытка справиться с ним с использованием только клиента была бы самоубийством?

0 ответов

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