2009-06-03 12 views
6

War im Gespräch mit einem Kollegen über XAML und wie es ist eine Präsentation und Objektbeschreibungssprache und daher ziemlich einzigartig und neu in der IT-Technologie.Wie einzigartig ist XAML?

Ist das wahr, dass XAML einzigartig und neuartig ist?

Hat XAML irgendwelche Gegenstücke oder Vorgänger in der Java-Welt oder anderswo? Ich glaube, jemand hat mir gesagt, dass Java Server Faces ähnlich wie WPF ist, also was ist das Äquivalent von XAML?

Ich weiß, MXML in Flex ist ähnlich, aber soweit ich mich erinnern kann, gibt es einige strukturelle Unterschiede, von dem, was ich erinnere MXML beschreibt nicht wirklich Objekte, sondern ist mehr eine reine Präsentation XML.

+0

Muss ein Community Wiki – NinethSense

+0

@NinethSense sein: comminity Wiki? Warum? – AnthonyWJones

Antwort

13

Dies ist ein Fall einer allgemeinen Technologie mit einer so überwältigenden gemeinsamen spezifischen Verwendung, die mit der spezifischen Verwendung synonym wird. Zum Beispiel übernehmen Diskussionen über Javascript oft den Browserkontext und die Manipulation eines HTML-DOMs, ohne dass dies jemand ausdrücklich sagen muss.

Genau genommen ist XAML nicht wie XUL oder SVG, abgesehen von XML. XUL, SVG haben eine definierte Syntax zum Deklarieren von Benutzeroberflächen oder grafischen Elementen, Roh-XAML nicht.

XAML kann zum Beispiel auch verwendet werden, um Workflows in Workflow-Grundlagen zu beschreiben.

XAML ist eigentlich ein Ansatz zum Lesen von XML, um Typen und Eigenschaften dieser Typen zu beschreiben. Zum Beispiel kann eine Eigenschaft eines Typs entweder mit einem Attribut oder einem Element beschrieben werden, solange der Name korrekt interpretiert werden kann. XAML enthält auch eine Erweiterung der XML-Grundsyntax, wobei {} in einem Attribut als Short-Hand für ein komplexes Element fungieren kann.

Ich habe so etwas noch nie zuvor gesehen. Alle anderen XML-basierten Technologien haben einen bestimmten Zweck. XAML ist die erste Verwendung von XML. Ich habe gesehen, dass dies eine beliebige Nomenklatur ist, aber nur ein Mittel zur Zuordnung von XML zu Typen.

0

Neben XAML haben Sie XUL, die von Mozilla verwendet wird. SVG auf der anderen Seite, ist eine von W3C empfohlen.

-3

Nun, XAML ist im Grunde erweiterte Markup für .NET, daher denke ich, dass Sie viele Parallelen von XAML zu XHTML ziehen können - Beide sind Präsentationstechniken.

viele Unterschiede gibt es auch OFC (XHTML von einem Browser interpretiert Grafiken zu erzeugen, während XAML in MSIL kompiliert wird und auf der CLR setzt die Grafik zu tun :))

+1

Xaml ist keine Präsentation-orientierte Technologie - es wird auch verwendet, um Workflows und Services zu definieren. Auch Xaml ist nicht in MSIL kompiliert - es ist nach BAML kompiliert. Es tut mir leid, das auch dort zu speichern, aber die CLR macht die Grafiken nicht - diese Technologie hat nichts mit dem Präsentationsstapel (entweder WPF oder SL) zu tun, der im Fall von WPF auf DirectX basiert. –

+0

Danke für die Korrektur .. Hatte keine Ahnung, dass ich das falsch gemacht habe: O – cwap

0

Mozilla erstellt ihre UI Beschreibung Sprache XUL ursprünglich in der Lage sein, die Benutzeroberfläche aller ihrer Produkte leicht anzupassen. Heutzutage ist es ein Paket, das in anderen Anwendungen enthalten sein kann und auch eine erweiterte Funktionalität hat.

Obwohl sich XUL hauptsächlich auf die UI-Darstellung konzentriert, enthält es auch andere Strukturen wie Ereignisse und Skripte und Datenquellen. Soweit ich weiß, integriert XAML diese Konzepte jedoch sehr viel enger in ihre .NET (und angeschlossenen) Frameworks. Aber ich bin mir nicht sicher, ob das genug ist, um es einzigartig und neuartig zu nennen.

1

**** XAML, XUL und XHTML Overlap ****

Die größte Überlappung zwischen XAML und anderen Standards liegt in der Unterstützung von HTML/XHTML gezogen Konzepte. Die Ähnlichkeiten zwischen XAML und HTML sind zahlreich. Die Überlappung mit HTML ist natürlich nicht auf XAML beschränkt. Der andere bekannte XML-GUI-Dialekt - Mozillas XUL - überlappt ebenfalls mit XHTML. Schließlich überlappen sich XAML und XUL an Stellen, die XHTML nicht einmal enthält. XHTML und XUL können in einem Dokument kombiniert werden (zumindest in Mozilla-Browsern). Eine solche Kombination ist eine grobe Analogie für Nicht-Web-Anwendungen von XAML. In der Tat ist Mozillas XUL allein eine grobe Analogie für einige Anwendungen von XAML.

Zusammengenommen bilden sie jedoch nichts mehr als Unterstützung für die meisten grundlegenden HTML-Inhalte und Formularwidgets, die in normalen Webanwendungen bereits Routine sind. XUL überlappt XHTML weniger als XAML, weil XUL versucht, sich von XHTML zu trennen. Es versucht nicht, ein Drop-In-Ersatz zu sein, wie XAML ist.

Eine Sache, die ich über XAML im Vergleich zu HTML mag, ist die erhöhte Freiheit von den vom Publishing abgeleiteten HTML-Funktionen. XAML befreit Sie von h1-Tags, Code-Tags und einer Vielzahl anderer Nischen-Tags, die selten in HTML verwendet werden. Aus praktischen Gründen sind diese Tags in modernen HTML-Dokumenten kaum mehr als Stilinformationen.

HTML ist auch eine schlechte GUI für Anwendungen, trotz der Popularität des Webs. Sowohl XAML als auch XUL tragen dazu bei, dieses Problem zu beheben. Sie könnten Ihre Webanwendungen in XAML umschreiben und sie würden besser aussehen als die HTML-Originale, wenn XAML nur bessere CSS-Unterstützung hätte.

1

Kakao von Apple, oder Ereignis früher NeXtStep hatte etwas ähnliches lange vor XAML.

Die GUI wird mit einem Interface Builder erstellt, der sogenannte nib (Nextstep Interface Builder) Dateien erstellt, die das Layout, Bindings, Aktionen, Outlets und serialisierte Objektinstanzen enthalten. In der Vergangenheit wurden diese Nib-Dateien in einem binären Dateiformat gespeichert, heutzutage ist es aber auch xml (xib).

Also XAML ist nicht das erste überhaupt nicht einzigartig.

+0

Erkenne ich einen Hauch von Flamme dort? ;) –

+0

Ich arbeite Tag für Tag mit .NET und ich schätze die XAML-Technologie sehr, aber ich liebe Cocoa, Objective-C und den Weg von Apple. – Enyra

+1

Keine Flamme überhaupt, XAML ist ein serialisiertes Objektdiagramm, genau wie NIB-Dateien. –

1

Lesen Sie die Vergleiche mit anderen Präsentationstechnologien mit einem Körnchen Salz - Xaml ist eine Methode zum Erstellen und Erstellen von .NET-Objekten. Das steht im krassen Gegensatz zu anderen Systemen, die zum Aufbau von Benutzeroberflächen entwickelt wurden. Das Schöne an Xaml ist, dass es unabhängig des Technologie-Stacks ist, für den es verwendet wird - es ist eine ziel-agnostische Deklarationssprache, die eher C# als XHTML ähnelt. Auf diese Weise ist es einzigartig.

0

XAML ist ein Objekt Graph Konstruktionssprache im Dialekt XML (nicht die beste Wahl). Jedes XAML Element ist eine Objektinstanziierung, und die entsprechenden Attribute sind Eigenschaftszuweisungen für diese Instanz. Da XML eine String-basierte Sprache ist, müssen Eigenschaftswerte aus ihrem String-Typ in den von der Eigenschaft erwarteten Typ konvertiert werden. Dies geschieht unter Verwendung von Abkömmlingen von TypeConverter, die der XAML-Prozessor automatisch findet und verwendet. XAML und WPF werden mit einem Standardsatz von Typkonvertierern geliefert, die ihren bereitgestellten Typen entsprechen, und Sie können eigene Typen bereitstellen.

Eine grobe Übersicht über den Definitionsprozess ist wie folgt:

<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> 

Es gibt Utility-Typen von XAML und WPF über Typeconverter zur Verfügung gestellt, die Eigenschaftszuweisungen erleichtern.Insbesondere gibt es folgende: ResourceDictionary, ObjectDataProvider, RelativeSource, StaticResource, DynamicResource, ...and more as shown in Microsoft Docs