Building a Silverlight Line-Of-Business Application – Part 7.1

Part 7.1 (yes, .1) of my series on building a line-of-business application with Silverlight is now available on the website here:

This is the start of a 7 part mini-series on styling the application within my main series of building line of business applications.  As I expected (and hoped) this article (being predominantly opinion based) is generating some controversy so join in and add your own comments – the designer-developer interaction needs to be argued and discussed widely and I thought I’d get some going by prodding it with a big stick.  This is the only opinion article in this mini-series – don’t worry I’ll be getting to the real stuff soon.  The articles in this series will be released on a weekly basis so expect  part 2 in a week or so.  For these articles I’m still working in Silverlight 2 as Silverlight 3 doesn’t have a go-live license yet (and we have no idea when it will) and many people have been working with my existing framework so I want to keep helping them.  I will be noting new Silverlight 3 features throughout the articles where appropriate though that would allow you to do whatever it is in a better way.

Mix09 News

Well there’s no doubt about it, Microsoft provided masses of news for the blogosphere over the last few days from Mix09.  While (as I tried to prove through my article series) Silverlight 2 was mostly ready for building business applications, Silverlight 3 is practically designed for building business applications (assuming running in a sandboxed environment is practical for your application).  Up until now I was more or less the only person writing about building business applications in Silverlight in depth, but things will be changing – mere hours after the Silverlight 3 news announced there are numerous (and reasonably extensive) articles on implementing the new features.  I am not a believer in reinventing the wheel and writing on topics that have been covered elsewhere unless I have something different to add, so instead I’ll list what I particularly like and link to articles on each:

RIA Data Services – while not Silverlight specific per se, though it does have a tight integration with Silverlight it also has a lot of potential for all other types of applications.  Previously Microsoft has predominantly released technologies which promote a very tight linkage between the presentation layer and the database with 1:1 links between entities / business objects and database tables in a simple 2 tier/layer fashion (I’m guessing partly because it was easy and partly in order to show how easily an application can be developed in their demos), though that has absolutely no place in real-world applications for obvious reasons.  RIA Data Services finally acknowledges this is not an acceptable strategy and provides a path between database and presentation layer which is customisable at each layer, so we can finally have well structured but flexible application designs in a method that is easy to implement.  Despite my initial scepticism, I am incredibly impressed with RIA Data Services – it’s exactly what I have wanted as a business application developer forever, and I believe it is going to be absolutely revolutionary in enabling developers to build scalable, robust solutions in a standard way.  I was afraid it was going to be another “look how easily we can do this” technology we often see which has absolutely no value in major development projects but looks good from a sales/demonstration perspective, but from my first impressions it’s actually fundamentally very well designed.  I’m sure I will have feedback when I have finished incorporating it into my project, but from my initial play I am really happy where it is going and very impressed with it.  Nikhil Kothari has a good overview of the topic here.

DataGrid Update – the DataGrid control now supports grouping! I’ll now be able to swap back to using it instead of the open source DevExpress grid. In addition there is a new DataPager enabling data to be paged in the DataGrid without retrieving the entire set of data at once. With these features the Silverlight DataGrid overtakes all other platforms (WinForms, ASP.NET, and WPF) in functionality required for business applications.

DataForm – this is a means to view and edit details (such as we did in article 5 in my series), I’m guessing similar to the FormView/DetailsView control in ASP.NET. I still need to play with this more to form a full opinion but it’s looking good.

Validation – my field validation control becomes obsolete now with built in validation using per property metadata (attributes on each property in your business objects). I’m yet to see how this goes with more complicated rules other than hard coded data formatting and value ranges so I’ll reserve my opinion right now, but it does look good. Brad Abrams discusses this (and a lot of the other business related improvements) based upon his Mix09 talk here.

Out of Browser / Run on Desktop – this is pretty major – you can now right click on your Silverlight application (if enabled) and select to run the application out of the browser. The application will then be “installed” on your machine with a shortcut in the Start menu, and for all intents and purposes appear like a desktop application. As a part of the application launch it will check to see if the application has been updated and download it if so, and if not simply use the cached version. Very nice. Tim Heuer has blogged about this here.

ComboBox Nightmare – the infamous “ComboBox Nightmare” that I documented in this article with Silverlight 2 has been half fixed in Silverlight 3. Now when you have cascading dropdown lists the dropdown height will be recalculated properly each time. Unfortunately no SelectedValue support as yet which it will need to be ready for business applications. I will be lobbying for this in the final version!

Another thing worth mentioning is that the new version handles a lot of the async issues when making web service calls behind the scenes. I’m also looking forward to the ClearType font rendering promised in the final version. There are numerous other new features worthwhile checking out in addition to the ones listed above. Tim Heuer lists all the new features here.

The only problem with it all is that I have two talks in 2 weeks time (SDNUG on April 2 and Code Camp in Wagga Wagga on April 4) on building Line of Business Applications in Silverlight and this news changes everything!  I am working on new versions of the presentations now, as the vast majority of my subject matter (summary lists, server communication, edit details forms, validation, etc) is now obsolete with better solutions now available in Silverlight 3.  In fact, I think the only major topic they didn’t infringe on was my reporting solution (which Silverlight 4 will do away with if it has printing support)!  Though Silverlight 3 is in beta and doesn’t have a go-live license as yet I see little point presenting my solutions to building business applications in Silverlight 2 and the workarounds I used, as these new features change the entire landscape for developers, and though we don’t know how long it will be until go-live I see little benefit in starting developing new business applications in Silverlight 2. With these updates Silverlight is really heading in the right direction. I might even go so far to say these updates make Silverlight the best platform in their suite for building business applications upon.

Expect a new release of my business application framework for Silverlight coming sometime in the near future!  The next release will have major styling improvements (along with a 7 part article series on styling), including a drop-in DLL that will provide much of the structural framework for your application (note I am still investigating the new navigation framework in Silverlight 3 and maybe working in with that instead).  It will specifically cater for Silverlight 3 projects, providing an additional layer to what has been announced from Mix09.