Есть объекты, которые предоставляют данные для постройки графика. Нужно построить механизм кэширования этих объектов, но не простой а с некоторой загвоздкой. Есть примерно такой класс, объекты которого будем кешировать:
public class MyObject
{
public DateTime DateTime { get; set; }
public int MyInt { get; set; }
// остальные свойства
}
Данные получаем с помощью следующего метода:
public List<MyObject> GetData(string tableName, int timeFrame, DateTime lastObjectTime, int objectCount)
{
// Проверить наличие данных в кэше.
// Если в кэше не все данные послать запрос на сервер для
// отсутствующих данных. Сохранить полученные данные в кэш.
// Вернуть результат запроса
}
tableName - название графика, timeFrame - временное разрешение графика, lastObjectTime - наибольшее время в наборе запрашиваемых объектов, objectCount - количество запрашиваемых объектов;
Т.е. запрашиваем объекты с даты lastObjectTime против шкалы времени. У двух смежных объектов в наборе DateTime отличается на значение timeFrame.
Загвоздка в следующем: Объекты в кеше отсортированы по времени. Но в кэше могут быть смежные объекты (назовем их об.А и об.Б) у которых разница по времени больше timeFrame. Т.е. между этими 2 объектами на сервере существуют другие объекты. В этом случае нам нужно выбрать с кеша все объекты по объект А, остальные объекты нужно запросить с сервера.
У меня пока только одна идея как это организовать: Выбирать из кеша objectCount объектов и искать первый объект, DateTime которого не соответствует timeFrame. Но этот способ не очень производительный, т.к. придется проверять все объекты в запросе.
Возможно есть более оптимальный способ?
Виртуальный выделенный сервер (VDS) становится отличным выбором
При выводе списка в представлении происходит ошибка Поле не найдено: "DB2ConnSettings_bEnableEFCaseSensitivity"