So now that it's been a week, and "the Gu" and all those dancing flashy lights are no longer influencing my opinion... I'm STILL excited about Silverlight 3. Sadly the development tools can't be run in parallel with Silverlight 2 and we're near the end of our sprint so can't afford the risk. Which is really too bad because one of the things our current application is leveraging is the wcf duplex polling module. A lovely little COMET like implementation for server push. The version of the duplex polling that made it into the Silverlight 2 toolkit was a little more bare than your typical Microsoft module. And while it works pretty well, it leaves a lot of plumbing code in the hands of the programmer, specifically a lot of asynchronous channel handling code that is a bit of pain to deal with. (though a bit educational too) Anyways, this is one of those areas that Microsoft is improving on in Silverlight 3, and one of those things I'm excited about. Right next to the simpler duplex polling usage for me is the introduction of binary serialization for web services (including duplex!). When comparing to Flex and the myriad of tools and options for using AMF Silverlight was really behind the ball on this one. When we eventually decided to build our tool in Silverlight as opposed to Flex we basically committed ourselves to rolling our own binary serialization. I'm very happy we're not going to have to follow through on that. Read more from the web services team :
http://blogs.msdn.com/silverlightws/archive/2009/03/20/what-s-new-with-web-services-in-silverlight-3-beta.aspx
Another great addition in the realm of things-that-were-annoying-but-possible-and-already-in-flex is the new navigation uri support within Silverlight 3. Check out Tim Heuer's typically great post on all the silverlight changes here. (link specifically to the nav)
Lastly to round out my list of really exciting enhancements to SL3 are the network monitoring API, which gives developers events to subscribe to detect when the network is and isn't present - as well as assembly caching which is huge, allowing Silverlight to cache assemblies like the toolkit so that once a user has been exposed to it they don't necessarily have to download it again until a new version is required. This in turns makes XAP's smaller which is always a good thing.
So to summarize, I think the top five features from the slew of enhancements that I'm looking forward to are :
- Binary Serialization
- Duplex polling enhancements
- Network detection API
- Assembly Caching
- Navigation and Deep Linking suport
My perspective on Silverlight is very biased to the needs of our application of course. And our application will live and die on the network, with performance being a top concern in everything we do. Controls are nice but we can buy those from vendors like Telerik, animation and media are cool for demos but likely won't do much for us in the short term. The out of browser story is huge, but again with a SaaS app that relies on the network we don't envision a whole lot of offline work happening in the early versions of our app.
Honorable mentions for features go to GPU acceleration (performance) and the SaveFileDialog (control) and Expression Blend 3. I don't use Blend much myself, but the current version is a huge pain for our team. Maybe more on that in a separate post.