Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Посоветуйте DSLS для конфигов / 25 сообщений из 35, страница 1 из 2
08.08.2016, 14:44
    #39288324
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Привет. Есть коробочный продукт, который работает с разными серверами от разных вендоров, но решающих примерно одну задачу. Реализация в коде довольно хаотичная и есть задача вынести всё что относится к конкретному вендору в файлы конфигурации.
Файлы конфигурации будут писаться, скорее всего, вручную.

Изначально предлагался XML. Идеальное решение во всём кроме того что он абсолютно не предназначен для чтения и писания вручную.

Подумал на счет JSON, но уперся в то что он не поддерживает комментариев. Да, и вездесущие кавычки раздражают.

Groovy, вроде бы, не плохой вариант. Но надо на нем же писать обработку DSLS, да ещё и рантайм +5-10Мб к продукту. С другой стороны скрипты могут пригодиться. Для некоторых вендоров реализован Java код. Можно было бы унести его в конфиг.

JavaScript? Хорош тем что уже встроен в JRE. Но опыта нет чтобы предвидеть подводные камни.
Может YAML?

Посоветуйте что выбрать. Спасибо.
...
Рейтинг: 0 / 0
08.08.2016, 14:48
    #39288329
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Blazkowicz,

А простые файлы properties не подойдут?
...
Рейтинг: 0 / 0
08.08.2016, 14:49
    #39288331
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
mad_nazgulА простые файлы properties не подойдут?
Подойдут при должном усердии, но ничем не лучше XML будет.
...
Рейтинг: 0 / 0
08.08.2016, 15:28
    #39288375
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Blazkowicz,
Предлагаю смесь: в xml внедряем json.
Я так делаю в springe, пример:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<bean class="view.report.excel.ReportView">
	<property name="heights">
	<!-- [длина строки, высота] Д.Б. отсортировано по возрастанию -->
		<value>{"Objects":[[28,32],[40,43],[50,54],[60,65]]}</value>
	</property>
	<property name="style">
		<value>{"Objects":{"style":"s155","isNULL":0,"cells":[1,5,6,7,8]}}</value>
	</property>
	<property name="source">
		<bean p:nameReport="ф.INV-1 отчет.xml" class="view.report.ReportViewFile">
			<property name="fileName" value="/WEB-INF/project/INV-1_Template.xml"/>
		</bean>
	</property>
</bean>
...
Рейтинг: 0 / 0
08.08.2016, 15:38
    #39288386
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
am_sasa,

Ну, а польза тут от XML какая? Комментарии писать?
...
Рейтинг: 0 / 0
08.08.2016, 15:54
    #39288399
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Я за XML. За YAML только как исследовательскую работу в рамках задачи).
BlazkowiczИзначально предлагался XML. Идеальное решение во всём кроме того что он абсолютно не предназначен для чтения и писания вручную.
Возможно его делали не на атрибутах, а на нодах. Т.е. если больше использовать атрибуты, то вполне читабельно.
Код: xml
1.
2.
3.
4.
5.
<bindings>
    <binding ircEvent="PRIVMSG" method="newUri" regex="^http://.*" />
    <binding ircEvent="PRIVMSG" method="deleteUri" regex="^delete.*" />
    <binding ircEvent="PRIVMSG" method="randomUri" regex="^random.*" />
</bindings>


https://ru.wikipedia.org/wiki/YAML
...
Рейтинг: 0 / 0
08.08.2016, 16:08
    #39288412
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Совершенно не понимаю, чем JSON лучше XML'а.
...
Рейтинг: 0 / 0
08.08.2016, 16:26
    #39288428
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Petro123, Leonid Kudryavtsev, спасибо. Дам XML второй шанс с более интенсивным использованием атрибутов.
...
Рейтинг: 0 / 0
08.08.2016, 17:25
    #39288479
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
BlazkowiczИзначально предлагался XML. Идеальное решение во всём кроме того что он абсолютно не предназначен для чтения и писания вручную.

Это да

но если писать не в блокноте а в мальмальском редакторе то вполне ничего. в том же notepad++ есть к нему плагины.
все что поддерживает автоформат как мимумум проверит базовый синтаксис.

Я обычно сразу прикручиваю схему к XML и тогда Idea сразу подсвечивает ошибки.
...
Рейтинг: 0 / 0
08.08.2016, 17:49
    #39288500
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Blazkowicz, посмотри на HOCON .
...
Рейтинг: 0 / 0
08.08.2016, 17:57
    #39288509
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Можно попробовать http://json5.org/

Там вроде есть каменты.
...
Рейтинг: 0 / 0
08.08.2016, 18:26
    #39288519
scf
scf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Подумайте все-таки о том, чтобы конфигурировать кодом, на основе билдеров. Принцип разбиения на файлы идентичен обычному конфигу - вместо файлов конфигурации пишутся классы, выдающие объекты, которые выдавал бы парсер конфига.

Из плюсов - самодокументируемость, гибкость, поддержка автокомплита в IDE, валидация на этапе компиляции.
...
Рейтинг: 0 / 0
08.08.2016, 21:07
    #39288583
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
scfПодумайте все-таки о том, чтобы конфигурировать кодом, на основе билдеров. Принцип разбиения на файлы идентичен обычному конфигу - вместо файлов конфигурации пишутся классы, выдающие объекты, которые выдавал бы парсер конфига.

Из плюсов - самодокументируемость, гибкость, поддержка автокомплита в IDE, валидация на этапе компиляции.

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

xml самое то, можно в принципе описать структуру на Java и затем ее через xstream сериализовать в xml и по нему xsd шаблон прикрутить.


как вариант можно разбить xml на две части первую дефолтовую с полным описанием конфигов и вторую которая переопределяет дефолтовую. тогда можно просто копирование и правкой дефолтовой ограничиться.
...
Рейтинг: 0 / 0
08.08.2016, 22:11
    #39288593
scf
scf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
lleming,

изменение "тяжелого" конфига без редеплоя приложения встречается очень редко.

В самых продвинутых компаниях либо полностью автоматизируют деплоймент, либо релизят приложение и его конфиг как два независимых артефакта с независимым деплойментом.
...
Рейтинг: 0 / 0
08.08.2016, 22:30
    #39288599
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
BlazkowiczGroovy, вроде бы, не плохой вариант. Но надо на нем же писать обработку DSLS, да ещё и рантайм +5-10Мб к продукту. С другой стороны скрипты могут пригодиться. Для некоторых вендоров реализован Java код. Можно было бы унести его в конфиг.

Мы практически выбрали это, но у нас не коробочный продукт, а SaaS - нам проще. Тем более gradle постепенно завоёвывает мир.

Но на мой взгляд лучше писать всё на scala/kotlin и использовать тамошний DSL.

Правда у нас попытка использовать kotlin сломалась о плохую интеграцию с jacoco (он не хочет видеть unit-test'ы на kotlin), а времени разбираться нет.
...
Рейтинг: 0 / 0
09.08.2016, 01:42
    #39288632
dimonz80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Blazkowicz,


Как-то выносил часть реализации во внешние скрипты, чтобы не писать сложный конфиг. В коде тупо интерфейсы и дефолтная реализация + при старте подхватывает файлы с BeanShell с альтернативной реализацией. Однако в данном случае нужет язык с хорошей интероперабельностью с Java, достаточной для реализации интерфейсов. Позже видел такое же решение в Bifit Ibank2.
Однако у такого подхода есть обратная медаль, когда часть бизнес-логики бесконтрольно перетекает в скрипты и поддерживать/отлаживать все это вместе становится сложновато.
...
Рейтинг: 0 / 0
09.08.2016, 09:36
    #39288706
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Blazkowicz,

Мы используем json. Только он редактируется программой а не вручную. Сущностей настолько много, что комментарии не помогли бы разобраться в структуре данных.

С уважением, Валентин
...
Рейтинг: 0 / 0
09.08.2016, 09:50
    #39288714
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Valentin Kolesnikov,
Если над файлом программа, тогда пофиг формат файла. Хоть бинарник.
...
Рейтинг: 0 / 0
15.08.2016, 10:58
    #39291788
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Petro123Valentin Kolesnikov,
Если над файлом программа, тогда пофиг формат файла. Хоть бинарник.
+ И чем непонятнее, тем лучше - никто не полезет руками ломать править.
...
Рейтинг: 0 / 0
15.08.2016, 12:34
    #39291864
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
Garrick,
согласен. Только админы думают наоборот. Работа у них такая - конфиги текстовые поюдавай).
...
Рейтинг: 0 / 0
15.08.2016, 12:44
    #39291869
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
GarrickPetro123Valentin Kolesnikov,
Если над файлом программа, тогда пофиг формат файла. Хоть бинарник.
+ И чем непонятнее, тем лучше - никто не полезет руками ломать править.

BlazkowiczФайлы конфигурации будут писаться, скорее всего, вручную.

цель сделать так чтобы самому себе было труднее сконфигурить систему?

если сделать формат непонятным то провидение обеспечит верную конфигурацию случайным юзером через UI ?
...
Рейтинг: 0 / 0
15.08.2016, 13:31
    #39291912
breath
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
ini files
...
Рейтинг: 0 / 0
15.08.2016, 13:42
    #39291926
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
breathini files
нет вложенных свойств как в XML
...
Рейтинг: 0 / 0
15.08.2016, 13:49
    #39291937
breath
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
есть
...
Рейтинг: 0 / 0
15.08.2016, 13:53
    #39291942
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте DSLS для конфигов
breathесть
делай
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Посоветуйте DSLS для конфигов / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]