XAML è essenzialmente un sottoinsieme di XML. Uno dei principali vantaggi di basare XAML su XML è che può essere analizzato con strumenti esistenti. E può, in larga misura, sebbene i valori degli attributi (sintatticamente non banali) rimarranno in forma di testo e richiederanno ulteriori analisi.
Esistono due alternative principali alla descrizione di una GUI in un linguaggio derivato da XML. Uno è fare ciò che ha fatto WinForms e descriverlo in codice reale. Ci sono numerosi problemi con questo, sebbene non sia completamente privo di vantaggi (una domanda per confrontare XAML con questo approccio ). L'altra alternativa principale è progettare una sintassi completamente nuova, appositamente studiata per l'attività da svolgere. Questo è generalmente noto come linguaggio specifico del dominio .
Quindi, col senno di poi, e come lezione per le generazioni future, è stata una buona idea basare XAML su XML o sarebbe stato meglio come linguaggio specifico del dominio progettato su misura? Se stessimo progettando un framework UI ancora migliore, dovremmo scegliere XML o un DSL personalizzato?
Dal momento che è molto più facile pensare positivamente allo status quo, in particolare a quello che è abbastanza apprezzato dalla comunità, fornirò alcuni motivi per cui costruire su XML potrebbe essere considerato un errore.
Basare un linguaggio su XML ha una cosa in gioco: è molto più facile analizzarlo (il parser principale è già disponibile), richiede molto, molto meno lavoro di progettazione e anche parser alternativi sono molto più facili da scrivere per sviluppatori di terze parti.
Ma la lingua 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 poste sul contenuto degli attributi da XML. Le estensioni di markup devono essere costruite "in cima" alla sintassi XML, non integrate in modo profondo e gradevole. E, il mio preferito personale, se si imposta qualcosa tramite un attributo, si utilizza una sintassi completamente diversa rispetto a se si imposta esattamente la stessa cosa di una proprietà di contenuto.
Si dice anche che poiché tutti conoscono XML, XAML richiede meno apprendimento. A rigor di termini questo è vero, ma l'apprendimento della sintassi è una piccola parte del tempo impiegato per apprendere un nuovo framework dell'interfaccia utente; sono i concetti del framework che rendono la curva ripida. Inoltre, le idiosincrasie di un linguaggio basato su XML potrebbero effettivamente aggiungere al paniere "esigenze di apprendimento".
Questi svantaggi sono compensati 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?
PS Non tutti confondono XAML e WPF , ma alcuni lo fanno. XAML è una cosa simile a XML. WPF è il framework con supporto per attacchi, temi, accelerazione hardware e molte altre cose interessanti.