I’ve been looking at RIA Services for a long time now. I had the lucky pleasure of being given early access to the bits for what was then called “Alexandria”. As most readers of this blog have read, I have had some issues with how RIA Services works. In the mean time Brad Abrams and the team have certainly responded and have made changes to the way that RIA Services works and much of it is for the better. I can see pretty simply how you can use RIA Services to build applications that are really architected well, with true separation of concerns. But there is blood in the water.
I recently had a chance to look at Brad Abrams’ PDC video on Building Amazing Applications with RIA Services and Silverlight 4 (CL21). I am perplexed by some of the decisions on the usage patterns of RIA Services implied by the video. I know that there were other RIA Services talks, but since this was by the head of the team, I think this will be used as the exemplar of what developers should write. And that’s unfortunate.
For those of you who didn’t see the video, the examples he walks through use the DataSources window in Visual Studio to drag-n-drop RIA Services data onto Silverlight controls. While this is interesting functionality, I think its misplaced. Don’t get me wrong, I know there are many companies that need a quick drag-n-drop experience, but in the big picture building applications this way can cost a company a lot of money. My main complaint is that the drag-n-drop experience inserts DomainDataSource objects into the XAML. That means the data logic and UI code are intermingled. That means you’re starting with a tightly-coupled app by default. The refactoring experience to change that to a loosely-coupled application is not trivial.
By viewing the video, you might be tempted to create your apps in this way but I think for most non-prototype applications, that the overall impact on the cost of building and maintaining the application is going to be much higher than a well-architected application. In some ways it seems like RIA Services is attempting to become the VB6 of Silverlight. While the development environment of drag-n-dropping in VB4-6 helped people make application quickly, it did not help people engineer good applications. Microsoft should not hide good architectural advice inside of Patterns and Practices group, but make it the default way it presents development. Showing off the splashy demo that implies that “its just that easy” makes the presentations feel like an Infomercial instead of real learning.
As I’ve said for a long time now (in general, not *just* about RIA Services), “Just say no to Data Source controls.”