Якщо заднім числом базувати XAML на XML - це помилка чи гарний підхід?


16

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


3
Так, він може бути проаналізований XML-аналізатором, але не змістовно / повністю. Наприклад, він використовує рядкові атрибути для визначення джерел даних та відображення властивостей.
Конрад Рудольф

5
Що ви пропонуєте як альтернативу? Будь-яка дискусія про придатність певної технології повинна стосуватися відповідних технологій заміни.
Роберт Харві

2
XAML не без аналогів, ви знаєте. XUL, Glade та QML базуються на одній ідеї. Я думаю, що ти виховуєш XAML несправедливо.
user16764

3
Я думаю, що найбільша перевага XAML полягає не в тому, що він може розбиратися XML-аналізаторами. Це швидше те, що XAML схожий на XML, і більшість розробників уже знають, як працювати з XML, і тому крива навчання набагато менш крута.
Юозас Контвайніс

2
@JuozasKontvainis Якщо під "роботою" ви маєте на увазі "проаналізувати це у своїх інструментах", то так. Якщо ви маєте на увазі "написати інтерфейс, описаний ним", то знайомий синтаксис може виглядати так, що це допомагає, але реально, вам все-таки потрібно дізнатися, що потрібно помістити всередину атрибутів (адже це не XML), і це, безумовно, найскладніше річ, в моєму особистому досвіді. Вивчення нового синтаксису, особливо якщо він простий і добре продуманий, на мою думку, є тривіальним.
Роман Старков

Відповіді:


4

Єдина переконлива причина використання XML - це встановлення відкритого стандарту даних. XAML - та сама мова відображення, яка використовується як у Silverlight, так і в WPF; будь-який постачальник може використовувати той самий стандарт розмітки для створення визначення дисплея для власної платформи, і він може бути повторно використаний у Silverlight або WPF.

В аерокосмічній галузі у нас є пульти управління, які завдяки вдосконаленням комп'ютерних технологій тепер є досить гнучкими. У минулому все обладнання було на замовлення, унікальне та дуже дороге; сьогодні він працює з недорогими, широко доступними, позаштатними ПК. Це значно зменшує блокування постачальника. Однак віджети для відображення все ще записуються за допомогою ActiveX, оскільки так робиться завжди.

ActiveX вимагає доступу до інструментів Microsoft, які є застарілими. Тож ВВС та група міжрядового приладобудування розробили мову розмітки даних, що базується на XML. Це дозволить практикам проектувати дисплеї, використовуючи розмітку XML, у редакторі за власним вибором. Звучить знайомо?

Ніхто не сперечається, що XML не обходиться без своїх помилок. Але це найкраще, що можна зробити для того, що було розроблено, поки щось краще не з’явиться.

Дивіться також,
чому XML не працює


3
Чи погоджуєтесь ви, що одне і те ж міркування однаково добре стосується таких речей, як, скажімо, описи граматики YACC, TeX, регулярні виразки, Verilog і, можливо, навіть LISP? Для кожного з них ми придумали спеціальний синтаксис. Вони отримали б вигоду так само, як ви перераховуєте в першому пункті. Тоді чи не випливає, що використання XML для них було б правильним, адже XML відповідає цілям, які ви згадали?
Роман Старков

Лише XML є загальновизнаним як універсальний метастандарт даних, з якого ви можете створити стільки індивідуальних стандартів даних, скільки бажаєте. Щоб не забруднити води, я вилучив перший абзац.
Роберт Харві

S-вирази ніколи не сприймалися як стандарт метаданих, можливо тому, що ніхто не любить усі ці дурні дужки. Всюдисутність тут є переконливим фактором; всі ці альтернативні синтаксиси, про які ви згадали, можуть бути представлені в XML, якщо ви так схильні.
Роберт Харві

2
Усі вони також можуть бути представлені в YAML та JSON (і навпаки).
Тімві

2
Одна з величезних проблем, яку я бачу в цьому аргументі, полягає в тому, що XAML насправді не є даними. Звичайно, це можна вважати просто графіком об'єкта, але таке мислення, мабуть, чому багатьом людям не подобається і чому він має таку криву навчання. "ей, давайте зробити об'єктний графік, е, я маю на увазі інтерфейс користувача". Я поняття не маю, як це можна зробити краще, але я впевнений, що це може бути.
Граф

2

Ваші заперечення проти XML не мають нічого спільного з використанням його як мови опису графічного інтерфейсу; всі вони скарги на роботу з синтаксисом XML, які однаково стосуються будь-якої форми XML.

Отже, це здається, що вам просто не подобається XML.

Ви маєте рацію, це може бути не оптимальним вибором для редагування вручну, але для мови опису графічного інтерфейсу я б зробив декілька зустрічних аргументів:

  1. (ІМХО,) графічні інтерфейси графічні та повинні бути розміщені графічно. Формат файлу насправді не так важливий, тому що ви не повинні редагувати його вручну. (Текстові підходи заради контролю джерела, але багатослівність - це не проблема.)

  2. Окрім аналізатора, який доступний, XML також легко перевірити: ви можете написати схему DTD або XML, а потім скористатися загальними інструментами, щоб повідомити, чи ваш файл законний. Це стане дуже корисним для мови опису графічного інтерфейсу. Зробити те ж саме в JSON або YAML не так просто.

  3. Якщо ви справді незадоволені написанням XAML безпосередньо, ніщо не заважає вам розробити новий формат і потім компілювати його в XAML. Наприклад, ви можете створити просте відображення від JSON до XAML, так що ви можете мати легший синтаксис JSON (і можливість коментувати атрибути), а потім генерувати XAML під час створення програми. Люди рідше пишуть HTML безпосередньо, але HTML все ще є чудовим форматом.


1
Мені подобається XML; Мені просто не подобається писати це від руки. 1. Так, вони повинні, але, на жаль, реальність полягає в тому, що Visual Studio насправді не може це зняти. 3. Це ортогональне обговорення того, чи була XAML, задумливою, поганою ідеєю. Так, можна, але навіщо це потрібно, якщо XAML не був поганим вибором?
Роман Старков

1
Моя думка, ви судите це повністю за критеріями його написання; ваші занепокоєння повинні бути збалансовані проти перевірки та інтерпретації. DSL, який було приємніше писати, майже напевно було б важче розібратися. Але проміжний етап компіляції може дати вам найкраще з обох світів.
бензадо

0

Це питання є суб'єктивним, тому я вважаю, що справедливо розмістити відповідь, що базується на моїх особистих уподобаннях.

XML важко читати. Наприклад, відкрийте це посилання та натисніть "Зразок", щоб порівняти XML та YAML поряд. Останнє, очевидно, набагато читабельніше людини.

Якщо ви хочете використовувати XML для опису графічного інтерфейсу, то вам краще бути проклятим, впевненим, що ви надаєте достатню кількість інструментів, щоб люди не повинні були дивитись на XML.

Очевидно, що XPF провалився в цьому плані.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.