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 - це основа з підтримкою прив’язки, тематики, апаратного прискорення та цілого ряду інших цікавих матеріалів.