Silverlight 2 - Finally a version that can change the world!
Yes, folks - that title is not a joke. Silverlight can completely change how we think about the web.
We're not writing activeX controls anymore, we're not coding "ActionScript" on a "Timeline" - we're talking about something revolutionary here.
If you look at the underlying premises of Asp.Net - Markup with Code-behind, and how well it has been received by the developer community, then the same paradigm in the WFP world has been waiting for Silverlight 2 to explode onto the scene.
Why will it succeed? We've had 1.0 for awhile now, and it hasn't "changed the world." What gives?
This version brings "everything else" that 1.0 forgot.
- We have actual layout managers
- like StackPanel and Grid - we won't talk about how the Grid layout manager is compared to table, but is really quite a different of a table than HTML.
- and a ton of Controls to work with and extend.
- We have real language support -
- C#, boys and girls. Go play.
- And some other languages too. Whatever.
- Cross Domain Network requests use the same policy file as Flash
- Here's where being just like Flash actually matters - since so many people have this policy file in place to allow for cross-domain requests, using it in Silverlight really makes sense.
- These networks requests can be truly asynchronous. Not "fake" asynchronous like JavaScript.
- This doesn't compete with AJAX - it is just way better.
- LINQ support.
- This is becoming a staple of .Net development. I have stopped bothering to follow ActionScript, but I am fairly sure it can't do LINQ. If you are a Flash developer, and you want to do "real" developer, look long and hard at Silverlight 2.
- This is demonstrated by Scott Guthrie in his blog tutorial on Silverlight 2.
- We have actual TOOL SUPPORT (I'm getting more excited as I write this - calm down, man. Calm down.)
- The Visual Studio 2008 add-in works like a charm. No problems reported from me except for a few Intellisense quirks. This is a far cry from the crashy crappiness that saw me flounder around with the 1.0 tools for about an hour before I decided to wait for 2.0 to get serious about Silverlight development.
- The designer tools allow designers to be designers and developers to be.... developers
- The code-behind model is supplemented with the style-templating mechansim that is not too dissimilar to Asp.Net skins, except it allow more declarative control over how and when certain properties (whether they be style related or Content related) can be set.
Download the add-on for Visual Studio 2008 here - you need SP1 for this, so get that first.
Scott's tutorial post series is here. Read this first. Then read it again and think about what it all MEANS.
My final thoughts:
- This is the big chance for WPF development to finally supplant Windows Forms and take us out of the Visual Basic style of UI forever.
- This means that all of the crappy-looking corporate apps that people argue bring so much legacy value to desktop, can finally be re-written in a way that doesn't stink, and in a way that doesn't exclude non-Windows machines.
- We can "sort of" share code between Silverlight and WPF Applications.
- Make this easier, Microsoft.
- Go back in time and do this yesterday, then tell me how I missed this in the documentation.
- Don't follow the examples when you see declarative event binding
- This is my worst pet peave of Asp.Net and I have started seeing it in virtually every XAML demo app out there.
- Declare your events in the code-behind, not the XAML markup, folks. Think about how hard it will be maintain code that has a ton of this event bindings - you'll insane with the ctrl-F to locate where your events are referencing, and then you'll wish you'd listened to me.
- I'm guessing the exception to this is where a control that you want to bind an event to is inside a data-bound template. Then you're allowed to bind the event in the markup. I guess.
When will it take over the world?
In my opinion, as soon as everyone else realizes that the absolute BEST video streaming technology just got paired with the absolute BEST programming support is available in an a cross platform browser extension, this thing will take off big time.
I'll be putting it into my apps as soon as I can.
Rock on - joel.