2009-06-03 14 views
6

Estaba hablando con un colega sobre XAML y sobre cómo es tanto una presentación como un lenguaje de descripción de objetos y, por lo tanto, bastante único y novedoso entre la tecnología de TI.¿Qué tan único es XAML?

¿Es cierto que XAML es único y novedoso?

¿XAML tiene contrapartes o predecesores en el mundo de Java o en otro lugar? Creo que alguien me dijo que Java Server Faces era similar a WPF, ¿cuál es el equivalente de XAML allí?

Sé que MXML en Flex es similar pero, por lo que puedo recordar, existen algunas diferencias estructurales importantes, por lo que recuerdo MXML realmente no describe objetos, sino que es más un puro XML de presentación.

+0

debe ser una comunidad Wiki – NinethSense

+0

@NinethSense: Comminity Wiki? ¿Por qué? – AnthonyWJones

Respuesta

13

Este es un caso de una tecnología general que tiene un uso específico común tan abrumador que se vuelve sinónimo con el uso específico. Por ejemplo, las discusiones de Javascript a menudo asumen el contexto del navegador y la manipulación de un HTML DOM sin que nadie tenga que decirlo expresamente.

Estrictamente hablando XAML no es como XUL o SVG aparte de ser XML. XUL, SVG tienen una sintaxis definida para declarar la interfaz de usuario o elementos gráficos, XAML sin formato no.

XAML puede, por ejemplo, también usarse para describir Flujos de trabajo en la base de flujo de trabajo.

XAML es en realidad un enfoque para leer XML con el fin de describir tipos y propiedades de esos tipos. Por ejemplo, una propiedad de un tipo puede describirse utilizando un atributo o un Elemento, siempre que su nombre se pueda interpretar correctamente. XAML también incluye una extensión a la sintaxis XML básica donde {} en un atributo puede actuar como una mano corta para un elemento complejo.

No he encontrado este tipo de cosas antes. Todas las demás tecnologías basadas en XML vienen con un propósito específico, XAML es el primer uso de XML que he visto que es el desarrollo de cualquier nomenclatura específica, pero solo un medio de asignar XML a los tipos.

0

Además de XAML, tiene XUL que es utilizado por Mozilla. SVG, por otro lado, es uno recomendado por W3C.

-3

Bueno, XAML es básicamente un marcado avanzado para .NET, por lo tanto, creo que se pueden trazar muchos paralelismos entre XAML y XHTML. Ambas son técnicas de presentación.

Hay muchas diferencias, así OFC (XHTML siendo interpretado por un navegador para producir gráficos, mientras XAML está siendo compilado en MSIL y confiando en el CLR para hacer los gráficos :))

+1

Xaml no es una tecnología orientada a la presentación, sino que también se utiliza para definir flujos de trabajo y servicios. Además, Xaml no está compilado en MSIL, está compilado en BAML. Lamento rellenar esto también allí, pero el CLR no hace los gráficos, esa tecnología no está relacionada con la pila de presentación (ya sea WPF o SL) que se basa en DirectX en el caso de WPF. –

+0

Gracias por corregirme .. No tenía idea de que estaba equivocado: O – cwap

0

Mozilla creó su interfaz de usuario descripción del lenguaje XUL originalmente para poder personalizar fácilmente la interfaz de usuario de todos sus productos. Hoy en día es un paquete que se puede incluir en otras aplicaciones y también tiene una funcionalidad extendida.

Aunque XUL se centra principalmente en la representación de la interfaz de usuario, también contiene otras estructuras como eventos y secuencias de comandos y fuentes de datos. Sin embargo, por lo que sé, XAML integra estos conceptos mucho más estrictamente en sus marcos .NET (y adjuntos). Pero no estoy seguro si esto es suficiente para llamarlo único y novedoso.

1

**** XAML, XUL y XHTML superposición ****

La mayor coincidencia entre XAML y otras normas reside en su apoyo a los conceptos extraídos de HTML/XHTML. Las similitudes entre XAML y HTML son numerosas. La superposición con HTML no está limitada a XAML, por supuesto. El otro conocido dialecto XML GUI-XUL de Mozilla-también se superpone con XHTML. Finalmente, tanto XAML como XUL se superponen en lugares que XHTML ni siquiera incluye. XHTML y XUL se pueden combinar en un documento (al menos en los navegadores Mozilla). Tal combinación es un análogo aproximado para usos no-web de XAML. De hecho, el XUL de Mozilla solo es un análogo aproximado para algunos usos de XAML.

pero en conjunto, realmente no constituyen nada más que soporte para la mayoría del contenido HTML básico y forman widgets que ya son rutinarios en las aplicaciones web comunes. XUL superpone XHTML menos que XAML porque XUL intenta separarse de XHTML. No está tratando de ser un reemplazo directo, como lo es XAML.

Una cosa que me gusta de XAML en comparación con HTML es la mayor libertad de las características derivadas de publicación de HTML. XAML lo libera de las etiquetas h1, las etiquetas de código y una gran cantidad de otras etiquetas de nicho diversas que se usan con poca frecuencia en HTML. A efectos prácticos, estas etiquetas actúan como poco más que información de estilo en documentos HTML modernos.

HTML es también una mala GUI para aplicaciones, a pesar de la popularidad de la Web. Tanto XAML como XUL hacen un gran esfuerzo para rectificar ese problema. Podría volver a escribir sus aplicaciones web en XAML y se verían mejor que los originales HTML, si solo XAML tuviera una mejor compatibilidad con CSS.

1

Cocoa de Apple, o evento anterior NeXtStep tenía algo similar mucho antes que XAML.

La GUI se crea con un constructor de interfaz, que crea los llamados archivos nib (Nextstep Interface Builder), que contienen el diseño, los enlaces, las acciones, los puntos de venta y las instancias de objetos serializados. En el pasado, estos archivos de punta se almacenaban en un formato de archivo binario, pero hoy en día también es xml (xib).

Así que XAML no es el primero ni único en absoluto.

+0

¿Detecto un toque de llama allí? ;) –

+0

Trabajo día a día con .NET y realmente aprecio la tecnología XAML pero me encanta Cocoa, Objective-C y el camino de Apple. – Enyra

+1

No es una llama en absoluto, XAML es un gráfico de objeto serializado, al igual que los archivos NIB. –

1

Lea las comparaciones con otras tecnologías de presentación con un grano de sal: Xaml es un método para construir y componer objetos .NET. Eso está en marcado contraste con otros sistemas que fueron diseñados como una forma de construir interfaces de usuario. Lo bueno de Xaml es que es independiente de la pila de tecnología que se utiliza, es un lenguaje declaritivo más parecido a C# que XHTML. De esa manera, es único.

0

XAML es un lenguaje de construcción de gráficos de objetos en el dialecto de XML (no es la mejor opción). Cada elemento XAML es una instanciación de objeto y los atributos correspondientes son asignaciones de propiedad en dicha instancia. Dado que XML es un lenguaje basado en cadenas, los valores de propiedad deben convertirse de su tipo de cadena al tipo que la propiedad espera. Esto se hace usando descendientes de TypeConverter que el procesador XAML localiza y utiliza automáticamente. XAML y WPF vienen con un conjunto predeterminado de TypeConverters correspondiente a los tipos proporcionados y puede proporcionar el suyo propio.

Una visión general del proceso de definición es la siguiente:

<classG-in-namespace-A 
    xmlns="namespace-A" 
    xmlns:alias-B="namespace-B" 
    xmlns:alias-C="clr-namespace:namespace-C;assembly=assembly-of-namespace-C" 
    propertyG1="simple text value stipulation" 
    propertyG2="{alias-C:classH-in-namespace-C propertyC1=valueC1,..}" 
    > 
    <classG-in-namespace-A.propertyG2> 
     <alias-B:class-I-in-namespace-B propertyB1=valueB1,...> 
      class-I-in-namespace-B's content property value assignment 
     </alias-B:class-I-in-namespace-B> 
    </classG-in-namespace-A.propertyG2> 
    classG-in-namespace-A's content property value assignment 
</classG-in-namespace-A> 

hay tipos de servicios públicos proporcionados por XAML y WPF allá TypeConverters que facilitan las tareas de propiedad.En particular, existen los siguientes: ResourceDictionary, ObjectDataProvider, RelativeSource, StaticResource, DynamicResource, ...and more as shown in Microsoft Docs