У меня есть проект, который имеет довольно сложный, вложенный (ссылки на вызывающие объекты вверх и вниз) объект (класс), хранящийся в словаре, например:
public static Dictionary<string, Object1> DObject { get; set; }
Object1 - сложный класс. Это не класс "адресная книга" или "информация о человеке". У самого класса есть массивы, словари другого объекта. Эти объекты ссылаются на класс над ним и т. Д.
Поскольку размер DObject может быть больше 1 ГБ в памяти, я собираюсь сериализовать его в файл с помощью BinaryFormatter. Поскольку мне нужно загрузить этот объект, я подумал об использовании MemoryMappedFile. Новые ключи и значения могут быть добавлены в словарь. В объектах может быть больше данных (добавлено / обновлено) и т. Д. Меняет ли MMF размер? Как получить доступ к определенному ключу в DObject в файле отображения памяти? Существует ли механизм поиска, например, хеш-таблица в памяти, чтобы я мог найти определенный ключ, например, словарь, и получить его значение? Как работает эта MMF?
Моя идеальная мысль. Иметь большой файл на диске (2 ГБ +). Я быстро обновляю объект в словаре на диске, как будто память сохраняется на диске. Все быстро Ключ-значение ищите до конца. Я смотрю, редактирую значение, сохраняю и т. Д. Мне нужно было бы иметь быстрый доступ к этому объекту объемом 2 ГБ в любое время, когда я захочу. Если сервер WCF перезапустится, мне понадобится быстрый доступ к этому объекту размером 2 ГБ +. Вот почему я думал 1) сериализация 2). загрузить и прочитать из / в MMF. Мое главное беспокойство - скорость в этот момент. Я не могу перезагружать эти 2 ГБ данные с нуля каждый раз, когда я отлаживаю проект другими словами (это занимает много времени).
Любые предложения, идеи и мысли о том, как я должен справиться с этой ситуацией.