Silverlight as GUI Platform

Silverlight 1.0 is a graphics presentation platform which means it can be used to present information graphically. But Silverlight is not yet a graphics user interface platform because the host browser's scripting language, which it depends on to add dynamic behavior, is not fast enough to prevent sluggishness and jerkyness from showing up in highly interactive applications like Popfly. For GUI developers, Silverlight 1.1 should be their target because interactive behaviors can be coded in .NET languages, leaving overall page-level behaviors to be coded in browser scripting language.
Silverlight 1.0 is a highly focused subset of .NET so there are areas where it lacks even as a graphics presentation platform. For example, images can be loaded but image pixels can not be accessed directly. This is because most Silverlight 1.0 objects are just a bundle of properties without methods (they have a handful of common model maintenance methods but they don't provide object specific behavior). API to host browser scripting language is simply the hierarchy of those objects and their properties. Understanding this makes it easier to grasp the limitations of Silverlight 1.0. IMHO, it's a smart compromise. While it is theoretically possible to extend the granuarity of Silverlight object model all the way down to pixels, it is not practical to do so.
CLARIFICATION: When I say host browser scripting language is not fast enough, I don't mean just the language. Binding mechanism between scripting language and Silverlight plugin is subject to browser and platform implementation quirks and limits which will result in platform/browser specific slowdowns and other problems. Following has to happen for each UI event like mouse move:

  1. Silverlight: detects mouse move
  2. Silverlight: calls host browser javascript event handler.
  3. Binding: marshall parameters and wait for javascript engine thread
  4. Browser: event handler manipulates Silverlight object model (i.e. move object to match new mouse position).
  5. Silverlight: update display to match object model.

I don't know how Silverlight exposes its object model in each platform and browser combination but accessing external object model from a scripting language is a potentially expensive operation.

Advertisements