Параллельные экземпляры - данные / проблема проектирования
Я пытаюсь придумать дизайн для приложения (C#/Avalonia), которое позволит создавать представления для данных, поступающих из нескольких источников. Общая идея состоит в том, чтобы связать источники и представить результат с помощью различных компонентов визуализации.
Есть несколько источников данных:
- База данных 1
- База данных 2/3/4
- МЫЛО
База данных 1 будет использоваться для хранения всего, что связано с самим приложением (пользователей, разрешения и так далее).
Базы данных 2-4+ являются только потоками данных.
SOAP - вот где я борюсь, не совсем уверен, как с ним справиться. Может быть 10-50 одновременных запущенных экземпляров приложения, и каждый из них может запрашивать одно и то же обновление данных из SOAP (ограничения поставщика сделали бы это невозможным).
Я думал о следующем подходе:
- Запросить исходные данные из SOAP
- Кэшировать данные в базе данных 1 с отметкой времени
- Определите задержку между запросами
- Когда пользователь запрашивает обновление данных из SOAP, проверьте, должны ли мы возвращать кэшированные или свежие данные на основе отметки времени и значения задержки.
Такой подход приводит к проблеме, когда пользователь завершает работу приложения в середине запроса новых данных.
- Пользователь 1 запрашивает новые данные, отмечает базу данных, чтобы гарантировать, что в будущем запросы не будут обрабатываться
- Пользователь 2 запрашивает новые данные - на этом этапе ничего не происходит, подождите и запросите еще раз
- Пользователь 1 завершает работу - нет новых данных ни для одного пользователя
Является ли подход полностью неправильным, и попытка справиться с ним с использованием только клиента была бы самоубийством?