Какие технологии для хранения данных настольных, объектно-ориентированных приложений? - PullRequest
2 голосов
/ 09 октября 2011

Допустим, я пишу отдельное приложение для настольного компьютера.Скажем, он объектно-ориентированный, и ему нужно сохранить свои данные в файл.Данные обычно хранятся в разных классах.Наследование участвует.

SQLite, кажется, является распространенным выбором, но его поддержка наследования несколько скудна, и для его реализации необходимо прибегнуть к разным трюкам, поэтому я берусь за более удобные и гибкие варианты?

(предположим, чтосоздание собственного формата данных не вариант)

РЕДАКТИРОВАТЬ: Более конкретно, я в настоящее время работаю с Windows и C #, хотя в будущем меня также будут интересовать решения C ++.

1 Ответ

1 голос
/ 30 декабря 2011

Возможно, нет причины использовать реляционную базу данных для хранения данных.Инструменты реляционного отображения OO-RDB многочисленны, но добавляют приложению больше сложности и точек сбоев.C # /. Net предоставляет удобный интерфейс сериализации (http://goo.gl/zmyeo).. Используя сериализацию .Net, объекты могут быть записаны в файл в формате XML или двоичном. Затем XML или двоичный файл можно «десериализовать» обратно вОбъекты. Как правило, это быстро и удобно, и, как правило, достаточно для прототипа.

Некоторые преимущества реляционных баз данных в том, что они поддерживают SQL (что упрощает использование данных другими приложениями) и поддерживают доступ к одному и тому же множеству пользователей.набор данных. Как только приложение заработает или превзойдет функциональность, предлагаемую Serialization, рассмотрите возможность его перемещения в реляционную базу данных, такую ​​как SQLite.

Проблема C ++ немного сложнее. C ++ не предлагает каких-либо- сериализация блоков. Отсутствие рефлексии затрудняет написание и поддержание кода персистентности объектов. Моя собственная стратегия состоит в том, чтобы по возможности избегать C ++ для OO-приложений. Если C ++ является обязательным, взгляните на некоторые из OO-RBDинструменты отображения для C ++: http://goo.gl/7ytOV.

PS: как приложениеПликация развивается, имена классов и атрибутов изменяются, добавляются и удаляются.Чтение обратно в сериализованных объектах из более старой базы кода представляет проблемы - содержимое файла не соответствует структуре (обновленных) классов.C # предоставляет средство, которое позволяет переносить старые объекты в новые.Если вы идете по маршруту сериализации, проверьте это.

...