Я разрабатываю API с древовидной иерархией. Я думаю о поддержке асинхронной загрузки всех узлов в дереве, и я не уверен, что это хорошая идея. Я планирую использовать реактивные расширения для этого.
У каждого узла есть метод Load, который не завершится, пока не будут загружены все его дочерние узлы (вещи загружаются сначала на глубину). Итак, для простой структуры:
1
|-- 1.1
| |- 1.1.1
| |- 1.1.2
|-- 1.2
|- 1.2.1
|- 1.2.2
Узел 1 загружает 1.1 и 1.2 асинхронно и ожидает их завершения, который, в свою очередь, загружает 1.1.1, 1.1.2, 1.2.1, 1.2.2 ... так, что это 6 операций асинхронной загрузки. Дерево может иметь потенциально 10 000 узлов ... это много асинхронных операций загрузки - Вопрос 1 - это создаст проблемы?
Я хочу реализовать это таким образом, чтобы я мог распределить нагрузку по определенному промежутку времени, чтобы пользователь мог настроить время загрузки, чтобы избежать зависания приложения, если необходимо загрузить много узлов одновременно. Вопрос 2 - Как бы я поступил в реактивных расширениях? Какие компоненты мне нужно изучить, настраиваемые наблюдаемые объекты? Не уверен, где начать.