Вопрос

Я работаю над клиентом Silverlight и связанными с ним ASP.NET веб-сервисами (не WCF), и мне нужно реализовать некоторые функции, содержащие пользовательские настройки, такие как система "избранные элементы", и хотят ли они перенос слов или нет.Чтобы создать приятный (а не приводящий в бешенство) пользовательский интерфейс, я хочу сохранить эти настройки в разных сеансах.Краткое исследование показывает, что существуют две основные возможности.

  1. Изолированное хранилище Silverlight
  2. ASP.NET-доступная база данных

Я понимаю, что вариант 2, вероятно, лучший вариант, поскольку он гарантирует, что даже если пользователь отключит изолированное хранилище для Silverlight, его предпочтения все равно сохранятся, но я хотел бы избежать бремени ведения базы данных в это время, и мне нравится идея, что настройки доступны для загрузки и редактирования, даже когда подключение к серверу недоступно.Тем не менее, я открыт для аргументированных аргументов, почему было бы предпочтительнее принять этот удар сейчас, а не позже.

То, что я ищу, - это предложения о наилучшем способе реализации сохранения настроек в любом сценарии.Например, если используется изолированное хранилище, должен ли я использовать формат XML или какой-либо другой формат файла для сохранения настроек;если используется подход к базе данных, должен ли я создавать таблицу настроек или есть встроенный механизм в ASP.NET для поддержки этого и как мне предоставить настройки клиенту?

Итак:

Какое решение является лучшим решением для сохранения пользовательских предпочтений?Как могут сохраняться настройки в этом решении и как клиент может получить к ним доступ и обновить их?

Предварительное исследование

Обратите внимание, что я провел небольшое предварительное исследование по этому вопросу и нашел следующие ссылки, которые, похоже, поддерживают то или иное решение, в зависимости от того, какую статью вы читаете.

Обновить

Оказывается, Microsoft предоставила сохранение настроек в изолированном хранилище как встроенную часть Silverlight (я как-то пропустил это до тех пор, пока не внедрил альтернативу). Мой ответ ниже имеет более подробную информацию по этому поводу.

Я оставляю вопрос открытым, поскольку, хотя Microsoft обеспечивает сохранение настроек на стороне клиента, это не обязательно означает, что это лучший подход для сохранения пользовательских настроек, и я хотел бы получить больше мнений и предложений по этому поводу.

Это было полезно?

Решение

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

Теперь все это кажется очевидным.Конечно, в долгосрочной перспективе механизм резервного копирования и восстановления настроек с использованием серверной базы данных был бы хорошим улучшением сохраняемости настроек на стороне клиента.

Другие советы

Я думаю, что в целом по умолчанию было бы хранить на сервере;мы должны делать это только тогда, когда есть конкретные веские причины для попытки сохранения на клиенте.Чем больше вы полагаетесь на хранение на носителе, который не можете контролировать, тем больше вы рискуете.

Сказав это и встав на сторону аргумента "база данных", я хотел бы спросить, в чем недостаток базы данных?Вы упомянули использование XML - являются ли ваши данные только полуструктурированными?Если да, то почему бы не сохранить XML в базе данных SQL?Настройка чего-то такого простого, как правило, не считается "бременем" по большинству стандартов.Простой веб-сервис мог бы выступать в качестве посредника между вашим клиентом Silverlight и базой данных настроек.

Если для вас важно, чтобы пользователи имели доступ к своим предпочтениям в автономном режиме, то, похоже, вам подойдет изолированное хранилище.Если более важно, чтобы пользователи могли сохранять настройки, даже если они отключили изолированное хранилище (действительно ли это проблема?У меня был бы соблазн позвонить YAGNI по этому поводу, но у меня нет большого опыта работы с платформой Silverlight ...) затем вам нужно разместить базу данных.Если и то, и другое важно, то вы, вероятно, смотрите на какое-то гибридное решение;использование изолированного хранилища, если оно доступно, затем возврат к базе данных.

Другими словами, я думаю, что потребности вашего приложения важнее, чем какая-то абстрактная передовая практика.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top