Зачем использовать функции сериализации / десериализации, когда мы можем сделать это напрямую, используя IsolatedStorageSettings.ApplicationSettings? - PullRequest
3 голосов
/ 14 февраля 2011

В Windows Phone мы можем хранить и извлекать что угодно, используя

   IsolatedStorageSettings.ApplicationSettings.Add("foo", bar);
   IsolatedStorageSettings.ApplicationSettings["foo"]

Тогда почему люди используют такие вещи, как "sharpSerializer"?

Ответы [ 4 ]

4 голосов
/ 14 февраля 2011

Большая проблема с хранением объектов в ApplicationSettings заключается в том, что все содержимое настроек сериализуется и десериализуется вместе.

Как только вы получаете доступ только к одной настройке, все настройки десериализуются и загружаются в Dictionary<string, object>, который поддерживает ApplicationSettings. Следовательно, нехороший выбор для хранения большого количества настроек или для хранения больших объектов, которые требуют значительной сериализации.

4 голосов
/ 14 февраля 2011

Настройки - это плоская организация с парами ключ / значение.Для простых объектов это не проблема, но если у вас есть богатые коллекции и вы не хотите, чтобы из-за десериализации списка просто переходили к элементу, настройки могут быть проблематичными.Они также требуют, чтобы элемент был сериализуемым, в то время как с помощью изолированной файловой системы хранилища вы можете управлять сериализацией и сериализацией чего угодно.Кроме того, вы можете выбрать стратегию сериализации, такую ​​как двоичный файл, JSON, XML или другой.Наконец, существует предел эффективности параметров сериализации объектов.Я не уверен, что это из-за того, что он не опубликован, но более одного разработчика сказали мне, что большие объекты или большое количество объектов начинают работать неправильно, выбрасывая исключения или не сохраняются правильно, в настройках.- также, поскольку вы упомянули Windows Phone 7, существуют ограничения для настроек, тогда как файловая система не имеет квоты.

0 голосов
/ 25 апреля 2011

Другим важным моментом, о котором другие не упомянули, было то, что когда вы обновляете свое приложение, отправляя более новую версию на рынок, все ApplicationSettings стираются, так как предполагается, что у нового приложения будут установлены собственные настройки по умолчанию. Поэтому всегда полезно сериализовать данные в IsolatedStorage, а не заполнять AppSettings.

0 голосов
/ 14 февраля 2011

Вне моей головы:

IsolatedStorageSettings обычно медленнее получить доступ к файлам IsolatedStorage и сохранить их.

Нельзя сохранить ноль в настройках, но вы можете создать свой собственный.Сериализованное представление этого.

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

InВ некоторых случаях вы можете ссылаться на объект, хранящийся в IsolatedStorage.Вы не можете сделать это, если оно сохранено в настройках.

Я подозреваю, что объекты, добавленные в Настройки, по-прежнему сериализуются (в фоновом режиме) - я предполагаю, что это будет двоичная сериализация - так как их нужно сохранятьна диск.Определив свой собственный сериализацию, вы можете быть уверены, что это будет работать правильно / как ожидалось.Если вы просто полагаетесь на систему, вы можете столкнуться с неожиданным поведением.Если у вас есть собственная сериализация, у вас также есть некоторые гарантии будущей и кроссплатформенной совместимости.(Если это проблема.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...