XAML es esencialmente un subconjunto de XML. Se dice que uno de los principales beneficios de basar XAML en XML es que se puede analizar con las herramientas existentes. Y puede, en gran medida, aunque los valores de los atributos (sintácticamente no triviales) permanecerán en forma de texto y requerirán un análisis más detallado.
Hay dos alternativas principales para describir una GUI en un lenguaje derivado de XML. Una es hacer lo que hizo WinForms y describirlo en código real. Existen numerosos problemas con esto, aunque no es completamente libre de ventajas (una pregunta para comparar XAML con este enfoque ). La otra alternativa importante es diseñar una sintaxis completamente nueva diseñada específicamente para la tarea en cuestión. Esto se conoce generalmente como un lenguaje de dominio específico .
Entonces, en retrospectiva, y como una lección para las generaciones futuras, ¿fue una buena idea basar XAML en XML, o hubiera sido mejor como un lenguaje específico de dominio diseñado a medida? Si estuviéramos diseñando un marco de interfaz de usuario aún mejor, ¿deberíamos elegir XML o un DSL personalizado?
Dado que es mucho más fácil pensar positivamente sobre el status quo, especialmente uno que le gusta bastante a la comunidad, daré algunos ejemplos de razones por las cuales construir sobre XML podría considerarse un error.
Basar un lenguaje en XML tiene algo que hacer: es mucho más fácil de analizar (el analizador principal ya está disponible), requiere mucho, mucho menos trabajo de diseño, y los analizadores alternativos también son mucho más fáciles de escribir para desarrolladores de terceros.
Pero el lenguaje resultante puede ser insatisfactorio de varias maneras. Es más bien detallado. Si cambia el tipo de algo, debe cambiarlo en la etiqueta de cierre. Tiene muy poco apoyo para comentarios; Es imposible comentar un atributo. Existen limitaciones en el contenido de los atributos por XML. Las extensiones de marcado deben construirse "encima" de la sintaxis XML, no integrarse de manera profunda y agradable en ella. Y, mi favorito personal, si configura algo a través de un atributo, usa una sintaxis completamente diferente que si configura exactamente lo mismo que una propiedad de contenido.
También se dice que dado que todos conocen XML, XAML requiere menos aprendizaje. Estrictamente hablando, esto es cierto, pero aprender la sintaxis es una pequeña fracción del tiempo dedicado a aprender un nuevo marco de interfaz de usuario; Son los conceptos del marco los que hacen que la curva sea empinada. Además, las idiosincrasias de un lenguaje basado en XML podrían agregarse a la cesta de "necesidades de aprendizaje".
¿Son estas desventajas compensadas por la facilidad de análisis? ¿Debería el próximo marco genial continuar con la tradición, o invertir el tiempo para diseñar un DSL increíble que las herramientas existentes no puedan analizar y cuya sintaxis deba ser aprendida por todos?
PD: No todos confunden XAML y WPF , pero algunos sí. XAML es una cosa similar a XML. WPF es el marco con soporte para enlaces, temas, aceleración de hardware y muchas otras cosas interesantes.