後から考えると、XAMLをXMLに基づいているのは間違いですか、それとも良いアプローチですか?


16

XAMLは基本的にXMLのサブセットです。XMLに基づいたXAMLの主な利点の1つは、既存のツールで解析できることです。また、(構文的には重要ではない)属性値はテキスト形式のままであり、さらに解析する必要がありますが、かなりの程度まで可能です。

XML派生言語でGUIを記述するための2つの主要な代替手段があります。1つは、WinFormsが行ったことを実行し、それを実際のコードで記述することです。これには多くの問題がありますが、完全にアドバンテージがないわけではありません(このアプローチとXAMLを比較する質問)。他の主要な代替手段は、手元のタスクに合わせて特別に調整された完全に新しい構文を設計することです。これは、一般的にドメイン固有の言語として知られています

それで、後知恵で、そして将来の世代への教訓として、XAMLをXMLに基づいたものにするのは良い考えでしたか、それともカスタム設計のドメイン固有言語としてより良いものでしたか?さらに優れたUIフレームワークを設計している場合、XMLまたはカスタムDSLを選択する必要がありますか?

それは現状維持、かなりのコミュニティに好かれ、特に1について積極的に考えるのは非常に簡単ですので、私はXMLの上に構築する理由の理由は、いくつかの例をあげるかもしれない間違いと見なされます。

XMLを基に言語を作成することには1つのことがあります:解析がはるかに簡単(コアパーサーが既に利用可能)であり、設計作業がはるかに少なくてすみます。

しかし、結果として生じる言語は、さまざまな点で不満になる可能性があります。かなり冗長です。何かのタイプを変更する場合は、終了タグで変更する必要があります。コメントに対するサポートは非​​常に貧弱です。属性をコメント化することはできません。XMLによる属性のコンテンツには制限があります。マークアップ拡張機能は、XML構文の「最上部」に構築する必要があり、XML構文に深く、うまく統合されていません。そして、私の個人的なお気に入りは、属性を介して何かを設定する場合、コンテンツプロパティとまったく同じものを設定する場合まったく異なる構文を使用することです。

また、誰もがXMLを知っているため、XAMLの学習はそれほど必要ではないと言われています。厳密に言えばこれは事実ですが、構文の学習は、新しいUIフレームワークの学習に費やす時間のほんの一部です。曲線を急にするのはフレームワークの概念です。その上、XMLベースの言語の特異性は、実際に「学習が必要」なバスケットに追加される可能性があります。

これらの不利な点は、解析の容易さによって重くされていますか?次のクールなフレームワークは伝統を続けるべきでしょうか、それとも既存のツールでは解析できず、誰もが構文を学ぶ必要のある素晴らしいDSLを設計するために時間を投資すべきでしょうか?

PS誰もがXAMLWPFを混同しているわけではありませんが、一部は混同しています。XAMLはXMLのようなものです。WPFは、バインディング、テーマ設定、ハードウェアアクセラレーション、その他多くの優れた機能をサポートするフレームワークです。


3
はい、XMLパーサーで解析できますが、意味的/完全には解析できません。たとえば、文字列属性を使用して、データソースとプロパティマッピングを定義します。
コンラッドルドルフ

5
代替案として何を提案しますか?特定の技術の適合性に関する議論は、適切な代替技術に対処する必要があります。
ロバートハーベイ

2
XAMLには対応するものがないわけではありません。XUL、Glade、およびQMLはすべて同じ考えに基づいています。XAMLを不当に取り上げていると思います。
user16764

3
XAMLの最大の利点は、XMLパーサーで解析できることではないと思います。むしろ、XAMLはXMLに似ており、ほとんどの開発者は既にXMLの操作方法を知っているため、学習曲線はそれほど急ではありません。
Juozas Kontvainis

2
@JuozasKontvainis「仕事」で「ツールで解析する」という意味なら、はい。「それによって記述されたUIを記述する」ことを意味する場合、使い慣れた構文は役立つように見えますが、現実的には、属性の中に何を入れるかを学ぶ必要があります(XMLではないため)私の個人的な経験では。私の意見では、特に単純で適切に設計された新しい構文を学ぶことは簡単です。
ローマスターコフ

回答:


4

XMLを使用する唯一の説得力のある理由は、オープンデータ標準確立することです。 XAMLは、SilverlightとWPFの両方で使用される同じ表示言語です。すべてのベンダーが同じマークアップ標準を使用して独自のプラットフォームの表示定義を作成でき、SilverlightまたはWPFで再利用できます。

航空宇宙産業では、コンピューター技術の進歩のおかげで、現在ではかなり柔軟な制御室があります。過去には、すべてのハードウェアはカスタムで、ユニークで、非常に高価でした。現在では、安価で一般に入手可能な市販のPCですべて実行されています。これにより、ベンダーのロックインが大幅に削減されます。ただし、表示ウィジェットはActiveXを使用して記述されています。これは常に行われている方法だからです。

ActiveXは、古くなったMicrosoftツールへのアクセスを必要とします。そのため、空軍と範囲間計装グループは、XMLベースのデータ表示マークアップ言語を考案しています。これにより、開業医は、選択したエディターでXMLマークアップを使用してディスプレイを設計できます。おなじみの音?

XMLに欠点がないと主張する人はいません。しかし、それは、より良いものが登場するまで、それがするように設計されたものにとって利用可能な最高のものです。

関連項目
XMLんがサックないのはなぜ


3
同じ推論が、たとえばYACC文法の説明、TeX、正規表現、Verilog、さらにはLISPなどにも当てはまることに同意しますか?これらのそれぞれに対して特別な構文を思いつきました。最初の段落に記載したのと同じ方法で利益が得られます。それから、XMLがあなたが言及した目標を満たしているので、XMLを使用することが正しいことになるのではないでしょうか?
ローマンスターコフ

ユニバーサルデータメタ標準として広く認識されているのはXMLのみであり、そこから必要な数の個別のデータ標準を作成できます。水が濁らないように、最初の段落を削除しました。
ロバートハーヴェイ

S式はメタデータの標準として決して受け入れられませんでした。おそらく、誰もがこれらの愚かな括弧を好まないからでしょう。ユビキタスはここでの魅力的な要因です。あなたが言及したこれらの代替構文はすべて、XMLで表現できます。
ロバートハーヴェイ

2
それらはすべてYAMLとJSONでも表現できます(逆も同様です)。
ティムウィ

2
この議論を通して私が目にする大きな問題の1つは、XAMLは実際にはデータではないということです。もちろん、単なるオブジェクトグラフとして扱うこともできますが、この種の考え方がおそらく多くの人がそれを好まない理由であり、なぜ学習曲線を持っているのでしょう。「ちょっと、オブジェクトグラフを作成してみましょう。ユーザーインターフェイスを意味します」。どうすれば改善できるかわかりませんが、改善できると確信しています。
アールズ

2

XMLに対する異論は、XMLをGUI記述言語として使用することとは関係ありません。それらはすべて、あらゆる形式のXMLに等しく適用されるXML構文の操作に関する苦情です。

したがって、XMLが好きではないように思えます。

あなたは正しい、それは手で編集するための最適な選択ではないかもしれませんが、GUI記述言語のために私はいくつかの反論をします:

  1. (私見)GUIはグラフィカルであり、グラフィカルにレイアウトされるべきです。手動で編集するべきではないため、ファイル形式はそれほど重要ではありません。(テキストベースはソース管理のために便利ですが、冗長性は問題ではありません。)

  2. パーサーが利用可能であることに加えて、XMLの検証も簡単です。DTDまたはXMLスキーマを記述し、汎用ツールを使用してファイルが合法かどうかを確認できます。これは、GUI記述言語にとって非常に便利です。JSONやYAMLで同じことをするのは簡単ではありません。

  3. XAMLを直接記述することに本当に不満がある場合、新しい形式を開発し、それをXAMLにコンパイルすることを妨げるものは何もありません。たとえば、JSONからXAMLへの単純なマッピングを考え出すことができます。そのため、JSONのより軽い構文(および属性をコメント化する機能)を使用し、アプリをビルドするときにXAMLを生成できます。人々がHTMLを直接書くことはめったにありませんが、HTMLは依然として優れた形式です。


1
私はXMLが好きです。手書きで書くのは好きではありません。1.はい、彼らはそうすべきですが、悲しいかな現実はVisual Studioがそれを本当に引き出せないということです。3.これは、XAMLが後知恵で悪い考えであったかどうかの議論とは直交しています。はい、できますが、XAMLが悪い選択ではないのになぜ必要なのでしょうか?
ローマンスターコフ

1
私のポイントは、あなたがそれを書く基準に完全に照らして判断しているということです。あなたの懸念は、それを検証し解釈することに対してもバランスを取る必要があります。書きやすいDSLは、ほぼ間違いなく解析しにくいでしょう。しかし、中間のコンパイル手順により、両方の長所を活用できます。
Benzado

0

この質問は主観的なものですので、個人的な好みに基づいた回答を投稿するのは公平だと思います。

XMLは読みにくいです。たとえば、このリンク開き、[サンプル]をクリックして、XMLとYAMLを並べて比較します。後者は明らかに人間が読める形式です。

XMLを使用してGUIを記述したい場合は、人間がXMLを見る必要がないように十分なツールを提供することをお勧めします。

その点で明らかにXPFは失敗しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.