Microsoft is certainly delivering a full court press on Silverlight (its RIA cross browser tool)- and really pushing its proprietary features that will work only on Windows XP and Vista but also “best” only with .NET 3.5 (2.0 .NET is what you get with XP and various versions of .NET depending on when you got your Vista).
Now of course Mono on Linux is scheduled to support Silverlight but not nearly all of the Silverlight 2.0 features. In Soccer they call this the Offside Trap, in Redmond its the Proprietary Trap. Get developers to think they are getting complete cross browser and maybe some cross OS platform RIA performance – and deliver a lot less. Remember the crucial test for an RIA is will the app run offline and online on every platform its used on. Like Microsofts current support for HTML/CSS/DOM standards, Redmond is the most seriously deficient of RIA providers as well. Beginning to sound like a broken record ? Well lets see exactly what Redmond is promoting.
What Developers Should be Demanding of Redmond
Steve Apiki has written a piece on Nine Silverlight 2 Features Not to Be Missed. Here is what Web 2.0 developers should be demanding of Microsoft before they even consider Silverlight.
1. HTML DOM Integration
For Silverlight applications that are deployed as a control or element of a larger Ajax application, tight integration between Silverlight and the HTML DOM means no bump between Silverlight and its hosting page, and a better user experience. The number one use case for DOM integration before Beta 1 may well have been gaining access to HTML controls, but now that weve got Silverlight native equivalents we can move on to enhance page integration.
2. JSON Serialization
Silverlight 2 Beta 1 applications can use the new .NET 3.5 DataContractJsonSerializer to serialize .NET objects to JSON. In our example project, below, well use this class to serialize our object for local storage. Since the representation is JSON, you can also use this technology to deserialize JSON strings from a web server or web service.
There are a number of Open Standards for JSON serialization, dont let Redmond bypass these and sell you their proprietary JSON extensions is the best they can do. redmond is being given credit in the Economist for being more Open Source oriented and delivering more Interoperability. Here is yet one more chance for Microsoft to deliver – there is a lot of great Open Source code here and throughout the RIA world..
3. Styles and Templates
In the Silverlight control model theres complete separation between control functionality and control appearance. The only thing thats intrinsic about a button is its functionality; that is, it fires a click event when clicked. The appearance of the button and how that appearance changes for various states can be lightly or fully customized using Styles and Control Templates. Its important that these customizations are expressed and applied in XAML, not in code, keeping them in the realm of the designer and not the developer.
The Silverlight offensive is really about selling XAML, the key to WPF and Vista, to developers. But we all know that the most serious source of bloat in Vista is XAML and the GUI interface. This is proprietary squared. Do you really want to Bloatize your RIA and Web 2.0 Apps and make them decidedly non-standard/proprietary. Redmond has seen no reason to explain why it has passed on SVG, XUL, MXML, and other XML-based GUI frameworks. Clearly Silverlight is a proprietary drive.
4. Local Storage
Isolated Storage gives your Silverlight application access to storage resources on the client. Its “isolated” because the store is partitioned per application, meaning no other applications can access files in your storage. On the other hand, your application (application defined by its URL) always gets the same storage, even if its run in a different browser.
This is one of the standards that has yet to be decided. But nobody has yet codified and standardized how this most important RIA feature should be done. The Google Gears model has some cross platform support with Adobe Flash/AIR supporting most of Gears. But the last thing you want to do is have a repeat of the SQL standards mess – every vendor pledging, nobody delivering the full SQL standards yet. Hence silos information databases and “locked” stacks plague the database and app development field to this day. Even worse is to let Microsoft set the standard without reference to general trends in the field; their Local Storage for SilverLight does just that.
Silverlight now supports two-way, one-way, and one-time databinding between visible controls and classes in code that represent application logic. One-way and one-time databinding are for read-only controls. Two way databinding lets the user make changes that automatically update classes in the model. You can also bind visual controls to static XAML resources, and indirectly to other visual controls, but Ill focus on making the binding in C# code here.
Here we have another convergence on proprietary vehicles in Silverlight. If C# and XAML were completely cross portable to Linux and Mac as Java and ActionScript are then I would have no complaints. But everybody knows that C# and XAML are only fully featured and compatible on Windows Vista and NET 3.5 – a very limited computing base. And as for a Mac presence ….
One of the best parts of Silverlight 2 development is access to a substantial subset of the .NET 3.5 Framework and the CLR. The CLR supports generics, classes and methods that are written to work with types that arent known until runtime. Generics allow you to write flexible classes and methods without losing the benefits of strong typing.
Generics is complex C# and .NET coding; but also again not available with full features on Mac, Linux, Solaris, many Unix, etc.
An ItemsControl is a UI element that displays a list of data objects. Doesnt sound like much, but the power of the ItemsControl is the flexibility that this simple mission provides. The ItemsControl can display the items of any enumerable collection, and it can display it in any fashion you like, all set up through the declarative magic of templates.
8. Layout Management
Along with its new controls, Beta 1 provides flexible layout management derived from the layout management system of WPF. To position controls within your application, you use one of three types of layout controls.
This is another XAML specific capability which emulates XUL and SVG which proceeded the Microsoft proprietary “solution”.
Silverlight applications can consume data from REST web services using the WebClient object. In fact, if you want to get media as a stream or need to process plain text or xml data, WebClient is your best choice as it can get anything you need from a web server. The coolest thing about WebClient is that it can operate asynchronously, pulling down data in the background without blocking the UI thread. When the download is complete, WebClient fires an event to let you know that the data is available.
This is like a broken record; but Web Client is yet another Microsoft proprietary solution which reveals the underlying intent of Silverlight – to return through RIA, Web 2.0 and GUI Service in the Cloud to a Microsoft dominated technology.
So why submit to Redmonds Proprietary Trap ?