Con il senno di poi, basare XAML su XML è un errore o un buon approccio?

16

XAML è essenzialmente un sottoinsieme di XML. Uno dei principali vantaggi del basare XAML su XML è che può essere analizzato con strumenti esistenti. E può, in larga misura, anche se i valori degli attributi (sintatticamente non banali) rimarranno in forma di testo e richiedono un'ulteriore analisi.

Esistono due alternative principali per descrivere una GUI in un linguaggio derivato da XML. Uno è quello di fare ciò che ha fatto WinForms e descriverlo in codice reale. Ci sono numerosi problemi con questo, anche se non è completamente privo di vantaggi (un domanda per confrontare XAML con questo approccio ). L'altra alternativa importante è progettare una sintassi completamente nuova appositamente studiata per il compito da svolgere. Questo è generalmente noto come lingua specifica per il dominio .

Quindi, con il senno di poi, e come lezione per le generazioni future, era una buona idea basare XAML su XML, o sarebbe stato meglio come linguaggio specifico per il dominio progettato su misura? Se stessimo progettando una struttura dell'interfaccia utente ancora migliore, dovremmo scegliere XML o un DSL personalizzato?

Dato che è molto più facile pensare in modo positivo allo status quo, in particolare uno che è abbastanza apprezzato dalla comunità, fornirò alcuni esempi di motivi per cui la costruzione di XML potrebbe essere considerata un errore.

Basare una lingua su XML ha una cosa da fare: è molto più semplice da analizzare (il parser principale è già disponibile), richiede molto, molto meno lavoro di progettazione, e parser alternativi sono anche molto più facile da scrivere per sviluppatori di terze parti.

Ma il linguaggio risultante può essere insoddisfacente in vari modi. È piuttosto prolisso. Se cambi il tipo di qualcosa, devi cambiarlo nel tag di chiusura. Ha un supporto molto scarso per i commenti; è impossibile commentare un attributo. Esistono limitazioni sul contenuto degli attributi tramite XML. Le estensioni di markup devono essere costruite "in cima" alla sintassi XML, non integrate in modo approfondito e piacevole. E, il mio preferito, se si imposta qualcosa tramite un attributo, si utilizza sintassi completamente diversa rispetto a quando si imposta la stessa cosa come proprietà del contenuto.

Si dice anche che poiché tutti conoscono l'XML, XAML richiede meno apprendimento. A rigor di termini questo è vero, ma imparare la sintassi è una piccola frazione del tempo dedicato all'apprendimento di un nuovo framework UI; sono i concetti della struttura che rendono la curva ripida. Inoltre, le idiosincrasie di un linguaggio basato su XML potrebbero effettivamente aggiungere al "bisogno di imparare".

Questi svantaggi sono ponderati dalla facilità di analisi? Il prossimo fantastico framework dovrebbe continuare la tradizione o investire il tempo necessario per progettare un fantastico DSL che non può essere analizzato dagli strumenti esistenti e la cui sintassi deve essere appresa da tutti?

P.S. Non tutti confondono XAML e WPF , ma alcuni lo fanno. XAML è la cosa simile all'XML. WPF è il framework con supporto per associazioni, tematiche, accelerazione hardware e un sacco di altre cose interessanti.

    
posta Roman Starkov 12.03.2012 - 19:24
fonte

3 risposte

4

L'unico motivo convincente per utilizzare XML è quello di stabilire uno standard aperto per i dati. XAML è la stessa lingua di visualizzazione utilizzata sia in Silverlight che in WPF; qualsiasi fornitore può utilizzare lo stesso standard di marcatura per creare una definizione di visualizzazione per la propria piattaforma e può essere riutilizzato in Silverlight o WPF.

Nell'industria aerospaziale, disponiamo di sale di controllo che, grazie ai progressi della tecnologia informatica, sono ora ragionevolmente flessibili. In passato, tutto l'hardware era personalizzato, unico e molto costoso; oggi è gestito da PC economici, comunemente disponibili e disponibili in commercio. Ciò riduce notevolmente il blocco del fornitore. Tuttavia, i widget di visualizzazione sono ancora scritti usando ActiveX, perché è così che è sempre stato fatto.

ActiveX richiede l'accesso a strumenti Microsoft che sono, beh, obsoleti. Quindi l'Aeronautica e il Gruppo di strumentazione interurbano stanno creando un Data Markup Language, che è XML basato. Ciò consentirà ai professionisti di progettare display utilizzando il markup XML, nell'editor di loro scelta. Ti sembra familiare?

Nessuno sostiene che XML non sia privo di difetti. Ma è la cosa migliore disponibile per ciò che è stato progettato per fare, fino a quando qualcosa di meglio arriva.

Vedi anche
Perché XML non fa succhiare

    
risposta data 15.03.2012 - 16:27
fonte
2

Le tue obiezioni a XML non hanno nulla a che fare con l'uso come linguaggio di descrizione della GUI; si lamentano tutti di lavorare con la sintassi XML che si applica ugualmente a qualsiasi forma di XML.

Quindi sembra che a te non piaccia l'XML.

Hai ragione, potrebbe non essere la scelta ottimale per la modifica a mano, ma per una descrizione della GUI farei alcuni contro-argomenti:

  1. (IMHO,) Le GUI sono grafiche e dovrebbero essere disposte graficamente. Il formato del file non è così importante, perché non dovresti davvero modificarlo a mano. (Il testo è piacevole per il controllo del codice sorgente, ma la verbosità non è un problema.)

  2. Oltre alla disponibilità del parser, XML è anche facile da convalidare: puoi scrivere un DTD o uno schema XML e quindi utilizzare strumenti generici per dirti se il tuo file è legale. Questo sarà molto utile per una lingua di descrizione della GUI. Fare lo stesso in JSON o YAML non è così semplice.

  3. Se non sei veramente soddisfatto di scrivere direttamente XAML, non c'è nulla che ti impedisca di sviluppare un nuovo formato e quindi di compilarlo in XAML. Ad esempio, potresti creare una mappatura semplice da JSON a XAML, così puoi avere la sintassi più leggera del JSON (e la possibilità di aggiungere commenti agli attributi), e quindi generare XAML quando costruisci la tua app. Le persone scrivono raramente HTML direttamente, ma HTML è ancora un ottimo formato.

risposta data 03.04.2012 - 09:38
fonte
0

Questa domanda è soggettiva, quindi penso che sia corretto pubblicare una risposta basata sulle mie preferenze personali.

XML è difficile da leggere. Ad esempio, apri questo link e fai clic su "Esempio" per confrontare XML e YAML fianco a fianco. Quest'ultimo è chiaramente molto più leggibile.

Se vuoi usare XML per descrivere una GUI, è meglio essere dannatamente sicuro che tu fornisca strumenti sufficienti in modo che gli umani non debbano guardare all'XML.

Chiaramente XPF ha fallito a tale riguardo.

    
risposta data 13.07.2017 - 00:11
fonte

Leggi altre domande sui tag