У нас есть объектная модель, используемая в трех приложениях.Две программы собирают данные, другая читает их и генерирует отчеты.Система очень отключена, поэтому мы не можем иметь единую базу данных, с которой общаются все программы.
Сейчас программы просто используют общую библиотеку для заполнения объектной модели и сериализации / десериализации на диск.В частности, мы используем сериализацию XML.
Есть несколько проблем с этой моделью.1) XML можно считать расточительным.Файлы могут стать большими и громоздкими.Честно говоря, размер файла не является большой проблемой сейчас.2) Больше всего меня беспокоит отпечаток памяти.Весь файл загружается в объектную модель, обрабатывается, затем сохраняется.
Надеюсь, я выразил свое беспокойство, в какой-то момент у нас возникнут проблемы с памятью в этом приложении во время выполнения.В одну «базу данных» (XML-файл) будет собрано достаточно данных, которые не могут быть загружены в память сразу.
Я бы хотел получить доступ к моей объектной модели, поддерживаемой файловым хранилищем.памяти.Я хочу, чтобы изменения в объектной модели были минимальными.Когда к объекту обращаются, он поступает с диска, а когда он установлен, он сохраняется (автоматически, если это возможно).
Мы рассмотрели NHibernate с SQLite, SQL Compact 4.0 и EF 4 и LINQ.в XML (кратко).В прошлом я также использовал db4o для кэширования объектов на диск, но это был не связанный проект.
Прежде чем погрузиться и посвятить время изучению одного из них, я хотел бы знать, если моя идеяимеет смысл.Могу ли я иметь объектную модель, которая будет «магически» кешироваться на носитель вместо того, чтобы просто бесконечно увеличивать объем памяти?Какой кратчайший путь для этого, даже если он не самый элегантный?
Существуют ли другие технологии, которые могут мне помочь?Файлы, отображаемые в память, linq-to-sql, Lazy (T) (только для извлечения объектов из файлов при необходимости).
Я понимаю, что это открытый вопрос.Я ищу подробный ответ и подробности, если кто-то там имеет реальный опыт в этом деле.Ссылки были бы полезны ...
Спасибо.