XAML
# XAML

XAML est un langage déclaratif développé pour les besoins des systèmes d'exploitation de Microsoft, Windows Vista, Windows 7 et Windows 8 et qui permet la description de données structurées. Prononcé Xammel, ces initiales correspondent à eXtensible Application Markup Language. Il s'agit d'un dialecte XML.

Ce langage créé initialement pour la déclaration d'interface riches dans WPF avec .NET Framework 3.0 (initialement appelé WinFX), a été intégré ensuite dans les développements connexes de Microsoft à savoir WCF et WF qui sont aussi utilisables avec ce langage. C'est maintenant un abus de considérer XAML comme un langage lié à la fabrication d'interface. Il est devenu un dialecte XML permettant l'instanciation à l'exécution d'objets issus des plateformes .NET Framework 3.0 et ultérieures.

Basé sur le langage XML, il facilite le travail du développeur et permet d'écrire une application client Windows aussi aisément qu'une application web. L'idée est en effet de séparer la déclaration des objets d'un programme du code sous-jacent comme cela est déjà le cas dans les applications Web de type ASP.NET.

Dans le cas de XAML pour WPF, le développement de l'interface utilisateur étant confié à des designers, Microsoft propose à ceux-ci le logiciel Expression Blend pour manipuler cette interface. XAML inclut également des fonctionnalités pour manipuler des objets en trois dimensions, de manière analogue à X3D.

XUL et UIML sont d'autres exemples de langages de description d'interfaces graphiques qui sont des dialectes XML.

## Transaction Authority

XAML est également une spécification de développement pour des services web qui tire son nom du protocole XA (Transaction Authority) qui a donné Transaction Authority Markup Language.

Les spécifications XAML permettent en effet à une transaction web de gérer l'intégrité transactionnelle (ce qui faisait défaut jusqu'ici aux développements B2B). Avec XAML il devient possible de gérer le two-phase commit qui permet la mise à jour contrôlée de plusieurs bases de données réparties (par exemple entre plusieurs partenaires).

La transaction XAML « attend » de recevoir l'acquittement (le commit) des différents serveurs sollicités et en cas de problème avec l'un d'eux, est en mesure de demander aux autres serveurs de « défaire » les mises à jour partielles effectuées afin de maintenir l'intégrité des données.

## Exemple

Voici un exemple de code d'une petite application Windows qui affiche « Hello World! » :

Comme dans le développement Web, du code permettant de gérer des évènements (clic, double-clic, entrée de texte, etc.) peut être inséré :

* soit directement dans la page à l'aide d'un tag spécial def:Code,
* soit dans un fichier séparé écrit dans un langage supporté par l'environnement.

Le code peut être écrit en C# ou Visual Basic .NET. Une des caractéristiques les plus appréciées du développement en XAML, présente en fait depuis l'arrivée de .NET, est justement de pouvoir séparer cette partie visible par l'utilisateur (environnement graphique) du code en lui-même. Le fichier séparé est alors appelé code-behind file.

