В моем приложении Windows Mobile (.NET Compact Framework) я использую большой массив для хранения первичных данных приложения. Это набор данных из потенциально сотен объектов. Каждый объект имеет около 10 или около того свойств и два массива, каждый из которых содержит около 25 других объектов, каждый из которых имеет около 5 свойств.
Чтобы сохранить этот массив на мобильном устройстве, я просто сериализую весь массив. Это работает хорошо в большинстве случаев, и это очень, очень легко.
Однако в наших тестовых случаях мы всегда работали только с несколькими объектами, максимум от 50 до 75. Но у нашего клиента были случаи, когда у пользователей было несколько сотен таких объектов, до 1000. В этих случаях сериализация довольно медленный, может занять до минуты.
Фактическая проблема заключается в том, что при сохранении всего массива в основном изменилась только пара объектов. Итак, основной поток выглядит примерно так:
- Загрузить весь массив из хранилища, скажем, 400 объектов;
- Изменить несколько свойств 1 объекта;
- Сохранить весь массив обратно в хранилище, все 400 объектов;
- Изменить еще пару свойств этого же объекта;
- Сохранить еще раз
- Изменить конечные свойства;
- Сохранить еще раз;
- То же самое с любыми последующими объектами ...
Обычно это не будет проблемой, если сохранение происходит не слишком часто, но на нескольких промежуточных этапах данные сохраняются. Это необходимо для того, чтобы все данные были сохранены и потеря данных не происходила (например, при разрядке батареи).
Как я могу решить это?