Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как обычно хранят настройки приложения? кроме базы данных 
:(
    Опции темы
ochnev
Дата 11.5.2009, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 253
Регистрация: 27.3.2006

Репутация: нет
Всего: нет



Как обычно на практике хранят глобальные и пользовательские настройки приложения?
Интересует способ помимо базы данных. XML, properties и прочее. Что удобнее, практичнее?

В идеале, хотелось бы иметь удобный способ, подходящий и для мобильного приложения, и для web-приложения, и для обычного desktop приложения.

PM MAIL   Вверх
Samotnik
Дата 11.5.2009, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



ochnev, вопрос размывчитый  smile  
Что касается меня, то в основном  БД и .properties файлы. 
XML почти никогда не использую. 
PM MAIL   Вверх
Connie
Дата 11.5.2009, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 1
Всего: 9



Опять же смотря какие настройки.

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

У меня в настройках хранятся положение программы, размеры элементов и т.п. То есть ничего критичного.
PM MAIL WWW   Вверх
COVD
Дата 11.5.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Идеального способа на все случаи жизни нет. Где-то тут это уже обсуждалось.

Хранить пользовательские предпочтения (выбранный шрифт, расположения окон и т.д.) вроде удобно с помощью preferences. Но там ограничение - длина записи не может быть больше 8 кБ. И вручную записи не отредактируешь (их не так просто отыскать на компьютере), но для такого типа данных это обычно не требуется.

Если пользовательское приложение работает в связке с сервером, то возможно хранение настроек на сервере в базе данных. Это позволяет клиенту работать со своей конфигурацией из разных мест - например, из офиса и из дома. 

В серверном приложении необходимо иметь возможность редактировать настройки. Серверное приложение может не иметь GUI. Проперти - файл - самое простое решение. Возможно, xml файл тоже. Но здесь некоторую сложность представляет настройка проекта так, чтобы эти файлы паковались отдельно от jar. Чтобы можно было остановить приложение, отредактировать файл любым редактором, и запустить опять.

Настройки удобно хранить в виде текста (проперти-формат или xml), а не сериализованного обьекта - так проще редактировать и анализировать. Также проще разрешать ситуации, когда приложение модифицируется и желательно сохранить возможность использовать старые настройки.




Это сообщение отредактировал(а) COVD - 11.5.2009, 18:09
PM MAIL   Вверх
carper
Дата 12.5.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 1
Всего: 8



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

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


PM MAIL   Вверх
Eric_Cartman
Дата 12.5.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 2.3.2008

Репутация: 1
Всего: 1



присоединяюсь к некоторым ораторам выше =)
от себя добавлю, что есть достаточно неплохой, на мой взгляд, пакет на эту тему: Commons Configuration
PM MAIL   Вверх
Forsaken
Дата 25.3.2010, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



Скажите пожалуйста, а вообще Preferences всегда сохраняет что нить в реестр (Windows)? Как-то у меня не выходит обойти эту фишку, я хочу сразу же в XML сохранять.

Вообще я просто изучаю механизм Preferences, в реальности я бы хотел сохранять настройки в bin фаил но при этом иметь возможность экспортировать/импортировать в XML.. Как я понимаю Preferences для этого не очень подходит?

Это сообщение отредактировал(а) Forsaken - 25.3.2010, 11:57
PM MAIL   Вверх
Metal_Heart
Дата 25.3.2010, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 4
Всего: 12



Forsaken, Реестр венды здесь не причем и туда ничего не пишется!

LCD в факе написал статью, как  сериализовывать в ХМЛ.
Очень простой способ и как раз для твоих требований.

Что касаемо BIN-файла - придумываешь любой удобный для тебя формат данных (без ограничений) - и в перед



--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
jk1
Дата 25.3.2010, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

Forsaken, Реестр венды здесь не причем и туда ничего не пишется!


Вот это неправда. Preferences хранит ваши настройки в platform-dependent виде. Под Windows это как раз реестр.

Prooflink

Это сообщение отредактировал(а) jk1 - 25.3.2010, 14:17


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Forsaken
Дата 25.3.2010, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



Metal_Heart
Спасибо за ответ! Почитаю статью LCD, это очень интересно
Что касается реестра винды, то добавлю к jk1 , что Preferences хранится в разделе HKEY_CURRENT_USER\Software\JavaSoft, можете сами посмотреть...

jk1
Спасибо за помощь!

Это сообщение отредактировал(а) Forsaken - 25.3.2010, 16:53
PM MAIL   Вверх
batigoal
Дата 25.3.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(Samotnik @  11.5.2009,  09:30 Найти цитируемый пост)
Что касается меня, то в основном  БД и .properties файлы. 

+1. Покрывается 90% юзкейсов.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Forsaken
Дата 27.3.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



batigoal, 
А если настройки разбиты иерархически.. делаете псевдоиерархию в .properties ?


jk1, 
Правда по этой ссылке, тоже ключь хранится в реестре.., а избежать реестра не как нельзя с Preferences? А то хочется их хранить где нибудь в другом месте..
PM MAIL   Вверх
jk1
Дата 27.3.2010, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

а избежать реестра не как нельзя с Preferences


Можно. Реализуйте своего наследника AbstractPreferences и в его методах сохраняйте и извлекайте ключи и значения откуда вам удобно.

Я для управления иерархическими настройками использовал сериализацию в XML с помощью XMLEncoder, удобно и без лишнего геморроя.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Forsaken
Дата 27.3.2010, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



jk1
Спасибо большое!
Правда я еще недобрался до понятия сереализации, но догадываюсь что это приспособление для сохранения состояния объекта. Пока временно попользуюсь Properties объектами.

Тогда у меня есть еще не особо важный вопрос. Где хранить настройки? Я уже много прочел о Properties (на сайте http://java.sun.com и в книгах).. там везде пользовательские настройки предлогается хранить в папке пользователя. Мне это очень ненравится, я хочу их хранить в папке программы. А как Вы считаете правильно их хранить?

Это сообщение отредактировал(а) Forsaken - 27.3.2010, 14:25
PM MAIL   Вверх
jk1
Дата 27.3.2010, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Forsaken, 

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


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.