Разумный метод настройки для очень сложного программного обеспечения? - PullRequest
2 голосов
/ 21 февраля 2011

Мы пишем программу на C ++, которая должна быть легко настраиваемой (во время запуска). Прямо сейчас у нас есть базовый XML-файл, который содержит несколько переменных конфигурации и имена файлов других XML-файлов с большим количеством переменных конфигурации. В целом, у нас есть дерево из примерно 10 файлов XML и несколько форматов двоичных файлов с некоторым другим содержимым.

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

Существуют ли более эффективные способы реализации конфигурации для сложного программного обеспечения, кроме связанных XML-файлов?

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

EDIT Некоторые возможные идеи могут быть:

  • Переключиться на использование базы данных? Это было бы легко настраиваемо, но не так, чтобы читалось человеком.
  • Такая структура, как у Firefox about:config?
  • Один огромный плоский файл .ini и просто заниматься копированием? не вариант, это было бы еще более громоздким
  • ...

Ответы [ 3 ]

3 голосов
/ 22 февраля 2011

Lua был разработан для конфигурации.

0 голосов
/ 04 января 2012

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

Мы скоро выпустим наше решение в качестве размещенной службы управления конфигурацией. Если вы заинтересованы, подпишитесь на бета-версию на http://woot.configchief.com

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

Если вы используете C ++, вы можете использовать

http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html Параметры программы Boost.

Позволяет хранить конфиги в файлах и использовать аргументы командной строки взаимозаменяемо.

...