Dev week, day one

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.

Silverlight 2.0 though is another beast altogether. Silverlight 2.0 had only been released that week so the features were “hot off the press”, as it were. Silverlight 2.0 contains a (mostly) fully featured CLR implemented in code within the plug-in. What this means in reality, is the ability to develop assemblies for any application have them downloaded by your Silverlight application to run locally on the client about 1000 times faster than the equivalent JavaScript code.

As you can imagine, I found this somewhat attractive. Not only does it perform better than JavaScript but it’s a properly unit testable coding environment which can be developed, tested and debugged in isolation from the client, yum. Apparently there are some restrictions as to what a client executed assembly can do, the usual security restrictions apply. A micro-sandbox for client-side persistence is available and apparently mandatory dialog boxes requiring manual concurrence can appear when somewhat threatening operations are detected by the client’s CLR. But it’s still a very attractive proposition for rich clients.

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.

, , ,

  1. #1 by Alan Roche on May 15, 2008 - 1:23 pm

    Interestingly, applets may be poised for a comeback…

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: