In researching MSE’s policy support, I had to do some reading on XAML. It finally makes sense. So here’s my 10,000 foot view of XAML:
XAML (Extensible Application Markup Language) is an XML grammar for instantiating a tree of objects, setting their properties, and stitching them together.
Pretty simple, but pretty powerful idea! I can use XML to declare what objects to create. Then the same XML has the values to stuff into the properties and the logic to hook on object to another object. The XamlReader class in the .NET 3.0 framework reads the XML in and returns a fully instantiated tree of objects!
In WPF, this makes a lot of sense. I can use XML to define what UI objects to instantiate and then set the properties on those objects. Stitching them together makes one control a child of another or lets them react to events as needed.
If you take the concept beyond WCF, you can see why the MSE team used XAML. They need a way for people to inject some WCF behaviors into the runtime. They can use XAML to declare the objects to instantiate and the properties on those objects.
They could have done this with config, but config is a little more clumsy at solving this issue. XAML sort of feels like it’s half way between the feel of code and the feel of config.
XAML looks like really cool stuff. I hope to learn more about it soon. What I described above only scratches the surface of its capabilities. XAML is probably like SQL or XSLT in that you can grasp the basics in an hour, but it takes time to let you mind adapt to the paradigm shift of the languages.
Be brave! Explore!