I decided to make today a Silverlight day and concentrate on as many aspects of the Silverlight framework as I could, within the schedule of talks. Silverlight, for those of you not familiar with the framework, is Microsoft’s competition to Adobe’s Flash, within the realms of rich web based interfaces. Silverlight, being much newer than Flash, has the benefit of newer technology and plenty of hindsight. Who doesn’t remember Java Applets?
Silverlight varies from Flash in just about every respect apart from fact that it comes as a downloadable plug-in and it delivers pretty output to your browser. Silverlight is heavily dependent on Microsoft’s XAML XML-based object instantiation language. In fact from all the examples I could see, manipulating XAML to achieve some behaviour is a considerable aspect of developing Silverlight applications.
All the Silverlight presentations were delivered by Jeff Prosise from Wintellect, a skilled and able presenter, author and absolute authority on Silverlight. I’d actually previously seen Jeff’s dog and pony show on AJAX for .NET here in Cork at IT@Cork’s half day seminar on ASP.NET AJAX, so I new he was very watchable. As usual, I very quickly became aware that Jeff was completely conversant on the subject at hand. He obviously new a lot about what was going on under the “hood” with Silverlight 1.0 and 2.0.
My immediate impression was to forget using Silverlight 1.0. While you can produce lots of pretty output, the overall support for server-side communication and hence integration with real world applications is primitive. This means meaningful applications have to be somewhat hacked together to work with any degree of facility. Jeff told us, for Silverlight 1.0 applications he ended up using the AJAX remote API for integrating with server-side components. This, we felt, was to be avoided, if only for testing and maintenance reasons alone.
A simple zip-based compression protocol for transmitting assemblies and large XAML files (XAP files) comes with 2.0 as well as built-in support for extensible controls, XML Web Services, networking components and the various LINQ APIs.
My own impression of manipulating XAML for specific behaviour was that if you wanted tweak or hack XAML files manually you really needed to know the object model very well. For us mortals investing in the Microsoft editor for XAML, “Blend” seemed a much better prospect, at least until we could see how things hang together.