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 - это фреймворк с поддержкой привязок, тем, аппаратного ускорения и множества других интересных вещей.