Since the Silverlight 1.1 was released I and my colleagues started using it in a commercial business applications for some small tasks, where the benefits were obvious. Even the fact the Expression Blend crashes and the lack of controls at that time didn't stop us. We were impressed of the tempo of the improvement and we expected to see reliable and ready for business use platform when the final is released.
So, now the final is a fact, but is it really ready for real-world business application?
Shortly - no. Not yet.
There are several reasons for my "No".
Lack of productivity
Each new technology should solve some problems or give a solution of existing ones in a new, more efficient way. Yes, now with Silverlight you are able to make beautiful UI, full with animations and effects using the power of the .NET platform. But using it in common scenarios like editing data is a hell of a job. (If you are asking yourself why we want to use Silverlight for CRUD I'll tell you - because we have some specific logic, because we have the business objects already created and because we have other parts written in Silverlight and we want to use one platform instead of many.)
In our real world application, 80 percent of the functionality is about editing records - selecting a record, editing the data, saving or canceling the changes. Until now, the BindingSource gives us all we need and editing is nothing more than calling AddNew()/EndEdit()/CancelEdit().
Now, in our beloved Silverlight 2, nothing like BindingSource is available and handling this scenario involves implementing some custom solution. Here you might say "Hey, there is IEditableObject where you can handle this!". Indeed! But hey, now I need to change all my business objects, just because the Silverlight miss something like BindingSource? Moreover - we are using these business objects not only for Silverlight but also for our WinForms and ASP.NET applications. And why should I need to change the business logic to solve UI problem?
As a result, the time spent for implementing add/edit/delete functionality is irrelevant: it takes MUCH more time than making it in WinForms or ASP.NET.
Lack of Security
Supporting only basic HTTP binding in WCF makes the picture even worse. The only way to secure is to use certificates. Well, does it means we have to pay for issuing certificates?
What about obfuscation?
Keep the flow
Before WPF and Silverlight the developers were able to build and design applications in one consistent manner - all in one IDE. Of course, design made by programmers is something... hm... controversy, but the application were built faster. So, following some well known design principles gives the companies the option to save some costs for designers and to keep the productivity. Especially using third party components (Telerik, DevExpress, ComponentOne or other) drastically reduce the need of a designer. Now, the integrated designer for WPF and Silverlight is awful, and even for some really simple tasks you have to switch between Expression Blend and VisualStudio.
Tooling
So, leaving the design to the designers has one more consequence - now you have to pay for the designer's tools. It is not enough to buy VisualStudio, oh no! You will need to take some of the Expression's. This means you have to pay more to do the same as before!
Conclusion
As a conclusion I would like to say, that I really like Silverlight and I really want to see it used in the real world, in a real business applications. I'm tired of tons of demos, video players and some other well designed but useless examples. What I really need, is to see Silverlight behind rich business application, full with interactivity and easy to use. I also want to keep the productivity and the design concepts known from .NET in Silverlight. "Minimum learning curve" - That's what they say, right? I like to use what I have in Silverlight with minimum changes.
So, please, except this as constructive criticism!
Your comments are welcome.