Нам нужно разработать приложение для приборной панели для гигантского экрана. Что он делает, так это собирает все KPI (ключевые показатели эффективности) и показывает их на гигантском экране в реальном времени, чтобы лидеры управления знали, что происходит.
Таким образом, гигантский экран будет иметь от 20 до 30 независимых графиков и круговых диаграмм (число может скоро увеличиться), данные должны обновляться в течение настраиваемого промежутка времени. Технически это означает много обращений к базе данных для извлечения данных и уведомления об изменениях данных в графическом интерфейсе. Поскольку существует множество отдельных графиков для обновления, я не хочу обновлять их синхронно, потому что длительный запрос к базе данных одного графика задержит обновление другого графика.
Итак, у меня есть два варианта,
- Выполнение вызовов базы данных, вычислений и уведомление GUI об изменениях данных в отдельном потоке / задаче для каждого графика.
- Запись всех вызовов базы данных как асинхронных методов, выполнение вычислений и уведомление GUI в обратных вызовах
Хотя любой из методов будет достаточным для этой цели, я хочу знать, какое решение лучше, особенно учитывая тот факт, что аппаратное обеспечение имеет 16 ядер. Каковы преимущества и недостатки обоих этих методов? или есть ли лучший подход к этой проблеме?
Мы планируем использовать .NET 4.0 и WPF для UI & C # в качестве языка разработки.