XAML по сути является подмножеством XML. Говорят, что одним из основных преимуществ использования XAML на XML является возможность его анализа с помощью существующих инструментов. И это может, в значительной степени, хотя (синтаксически нетривиальные) значения атрибутов останутся в текстовом виде и потребуют дальнейшего разбора.
Существует две основных альтернативы описанию GUI на языке XML. Один из них - сделать то, что сделал WinForms, и описать это в реальном коде. С этим связано множество проблем, хотя это не совсем бесполезно ( вопрос, чтобы сравнить XAML с этим подходом ). Другой основной альтернативой является разработка совершенно нового синтаксиса, специально разработанного для данной задачи. Это обычно известно как предметно-ориентированный язык .
Итак, оглядываясь назад, и в качестве урока для будущих поколений, было ли хорошей идеей основывать XAML на XML, или это было бы лучше, как специализированный язык для конкретного домена? Если бы мы разрабатывали еще лучшую структуру пользовательского интерфейса, мы должны выбрать XML или пользовательский DSL?
Поскольку гораздо проще позитивно думать о статус-кво, особенно о том, которое очень нравится сообществу, я приведу несколько примеров того, почему построение поверх XML может считаться ошибкой.
Основываясь на языке XML, можно сделать одно: разбирать его намного проще (основной синтаксический анализатор уже доступен), требуется гораздо меньше работы по проектированию, а альтернативные парсеры также гораздо проще писать для сторонних разработчиков.
Но полученный язык может быть неудовлетворительным по-разному. Это довольно многословно. Если вы меняете тип чего-либо, вам нужно изменить это в закрывающем теге. У него очень плохая поддержка комментариев; невозможно закомментировать атрибут. Существуют ограничения на содержание атрибутов с помощью XML. Расширения разметки должны быть построены «поверх» синтаксиса XML, а не глубоко и красиво интегрированы в него. И, мой личный фаворит, если вы устанавливаете что-то с помощью атрибута, вы используете совершенно другой синтаксис, чем если бы вы устанавливали то же самое, что и свойство содержимого.
Также сказано, что, поскольку все знают XML, XAML требует меньше обучения. Строго говоря, это правда, но изучение синтаксиса - крошечная доля времени, затрачиваемого на изучение новой инфраструктуры пользовательского интерфейса; это концепции каркаса, которые делают кривую крутой. Кроме того, особенности языка, основанного на XML, могут фактически добавить в корзину «изучение потребностей».
Эти недостатки перевешиваются простотой разбора? Должна ли следующая классная структура продолжить традицию или потратить время на разработку потрясающего DSL, который не может быть проанализирован существующими инструментами и чей синтаксис должен быть изучен всеми?
PS Не все путают XAML и WPF , но некоторые путают . XAML - это вещь, похожая на XML. WPF - это фреймворк с поддержкой привязок, тем, аппаратного ускорения и множества других интересных вещей.
источник
Ответы:
Единственная убедительная причина использовать XML - установить стандарт открытых данных. XAML - это тот же язык отображения, который используется в Silverlight и WPF; любой поставщик может использовать один и тот же стандарт разметки для создания определения отображения для своей собственной платформы, и его можно повторно использовать в Silverlight или WPF.
В аэрокосмической промышленности у нас есть диспетчерские, которые благодаря достижениям компьютерных технологий теперь достаточно гибки. В прошлом все оборудование было нестандартным, уникальным и очень дорогим; сегодня все это работает на недорогих, общедоступных готовых ПК. Это значительно уменьшает блокировку поставщика. Однако виджеты отображения по-прежнему пишутся с использованием ActiveX, потому что так было всегда.
ActiveX требует доступа к инструментам Microsoft, которые, ну, в общем-то, устарели. Таким образом, ВВС и Межведомственная группа приборов создают язык разметки для отображения данных, основанный на XML. Это позволит практикам создавать дисплеи с использованием разметки XML в редакторе по своему выбору. Звучит знакомо?
Никто не утверждает, что XML не лишен недостатков. Но это лучшее, что доступно для того, что было разработано, пока не появится что-то лучшее.
Смотрите также,
почему XML не сосет
источник
Ваши возражения против XML не имеют ничего общего с использованием его в качестве языка описания GUI; все они жалуются на работу с синтаксисом XML, который в равной степени применим к любой форме XML.
Похоже, вы просто не любите XML.
Вы правы, это не может быть оптимальным выбором для редактирования вручную, но для языка описания GUI я бы сделал несколько контраргументов:
(ИМХО) GUI являются графическими и должны быть выложены графически. Формат файла на самом деле не так важен, потому что вы действительно не должны редактировать его вручную. (Основанный на тексте хорошо для контроля исходного кода, но многословие не проблема.)
Помимо того, что синтаксический анализатор доступен, XML также легко проверить: вы можете написать DTD или XML-схему, а затем использовать универсальные инструменты, чтобы сообщить вам, является ли ваш файл легальным. Это будет очень полезно для языка описания GUI. Делать то же самое в JSON или YAML не так просто.
Если вы действительно недовольны написанием XAML напрямую, ничто не мешает вам разработать новый формат и затем скомпилировать его в XAML. Например, вы можете придумать прямое отображение из JSON в XAML, чтобы у вас был более легкий синтаксис JSON (и возможность комментировать атрибуты), а затем сгенерировать XAML при создании приложения. Люди редко пишут HTML напрямую, но HTML по-прежнему отличный формат.
источник
Этот вопрос субъективен, поэтому я думаю, что было бы справедливо опубликовать ответ, основанный на моих личных предпочтениях.
XML трудно читать. Например, откройте эту ссылку и нажмите «Образец», чтобы сравнить XML и YAML бок о бок. Последнее явно намного более читабельно для человека.
Если вы хотите использовать XML для описания GUI, то вам лучше быть уверенным, что вы предоставили достаточно инструментов, чтобы людям не пришлось смотреть на XML.
Очевидно, что XPF потерпел неудачу в этом отношении.
источник