За и против для различных форматов конфигурации?

Я видел, что люди используют *.cfg (Python Buildout), *.xml (Gnome), *.json (расширение Chrome), *.yaml (Google App Engine), *.ini и даже *.py для файлов конфигурации приложения (как Django).

Мой вопрос: почему существует столько различных форматов файла настройки? Я вижу преимущество от xml по сравнению с подходом json (намного менее подробный) или Python один (иногда, Вы имеете приложение Python и не хотите использовать определенный модуль только для парсинга файла конфигурации), но что относительно других подходов?

Я знаю, что существует еще больше форматов, чем те конфигурационные файлы, которые я иллюстрировал. Каковы действительно их преимущества друг по сравнению с другом? Исторические причины? Совместимость с различными системами?

Если бы Вы запустили бы приложение для чтения некоторых конфигурационных файлов (со сменной экосистемой), какой Вы использовали бы?

Которые это, которое я дал как пример, является самыми старыми? Вы знаете, что это - история?

32
задан Luca Stucchi 23 February 2017 в 11:11
поделиться

2 ответа

Это в основном личные предпочтения, цель и доступные библиотеки. Лично я считаю, что xml слишком подробен для файлов конфигурации, но он популярен и имеет отличные библиотеки.

.cfg, .ini - устаревшие форматы, которые хорошо работают, и для многих языков есть встроенная библиотека, которая их читает. Я без проблем использовал его на Java, Python, C ++. На самом деле он не работает как формат обмена данными, и если я передаю данные, я, вероятно, буду использовать тот же формат для конфигурации и обмена данными.

yaml и json находятся между xml и cfg / ini. Вы можете определить множество структур данных в обоих или это может быть простая пара "ключ-значение", как в cfg. У обоих этих форматов есть отличные библиотеки на Python, и я предполагаю, что многие другие языки также имеют библиотеки. Я считаю, что json - это подмножество yaml.

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

В прошлый раз, когда я выбирал формат, я выбрал yaml. Это просто, но имеет несколько хороших функций, а библиотеку python легко установить и она действительно хороша. Json был на втором месте, и поскольку библиотека yaml анализировала json, я предпочел yaml.

20
ответ дан 27 November 2019 в 21:13
поделиться

Обратите внимание, это чистое мнение и предположение с моей стороны, но я подозреваю, что единственная самая большая причина множества форматов, вероятно, связана с отсутствием легкодоступной, вездесущей библиотеки анализа файлов конфигурации. . В отсутствие этого большинству программ приходится писать свои собственные парсеры, поэтому часто приходится балансировать между тем, насколько сложной должна быть структура конфигурации (иерархическая или плоская, чисто данные или встроенная логика, например, операторы if и т. Д.), Сколько усилий прилагают разработчики. были готовы потратиться на написание парсера файла конфигурации, и насколько мучительно это должно быть для конечного пользователя. Однако, вероятно, все причины, которые вы перечислили и могли подумать, вероятно, были мотивацией для проекта или двух при выборе их формата.

В своих проектах я обычно использую .ini просто потому, что в Python уже встроен отличный синтаксический анализатор, и он «достаточно хорош» для большинства моих случаев использования. В паре случаев этого было недостаточно, я использовал файл конфигурации на основе XML, опять же из-за относительной простоты реализации.

6
ответ дан 27 November 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: