I attended a Microsoft DevCares event today on SilverLight (Microsoft's answer to Adobe's Flash player for "Rich Internet Applications"). User experiences on the web are becoming more and more important for software vendors to distinguish themselves and Microsoft is trying hard to "Light up the web", as they put it. And, as I put it, it seems they want to take Abobe out of every market they own (for example Microsoft's release of the XPS document format [XML paper specification] in response to Adobe's Mars project for XML PDF documents). NOTE: SilverLight runtime ≠ .NET Framework!!! It's a different runtime. They must have said this at least a dozen times.
Being at the presentation reminded me a lot of watching "The Karate Kid", only, I'm not sure who's Daniel and who's Johnny - and the guy with all the answers, Miyagi, is no where to be found. I think this is how the dialog might have gone in the movie that was playing in my head (I'm not sure if it was a flash movie player or a silverlight runtime though).
Daniel: Hey - you ever have to write user interfaces when you were a developer?
Miyagi: Huh - plenty.
Daniel: Yeah, but it wasn't like the problem I have, right?
Miyagi: Why? Coding coding. Same same.
Daniel: Yeah, but you knew about web development.
Miyagi: Someone always know more.
Daniel: You mean there were times when you were scared to code?
Miyagi: Always scare. Miyagi hate coding.
Daniel: Yeah, but you like developing user interfaces.
Miyagi: So?
Daniel: So, web development's coding. You train to write code.
Miyagi: That what you think?
Daniel: [pondering] No.
Miyagi: Then why train?
Daniel: [thinks] So I won't have to write code.
Miyagi: [laughs] Miyagi have hope for you.
How does SilverLight compare to Flex?
To the end user - there's just about no difference. To the developer - they have only a little in common. SilverLight, like the Flash player is cross-browser and cross-platform and both are great at media delivery (like movies on youTube). Both are based on a declarative XML language (MXML Vs. XAML) and have design tools to help build the mark-up. The reason I say they have only a small portion in common has more to do with each company's approach to the solution.
SilverLight was born from .NET's WPF (Windows Presentation Foundation). WPF was meant for easy development of Windows desktop applications, but as part of the .NET 3.0 runtime and IE7 releases, WPF applications could be downloaded and used as a web application in IE. There were problems with that approach. End users needed to have the .NET 3.0 framework installed and are forced to use Windows and even further IE7! Enter SilverLight. The XML that is used in WPF applications is nearly 100% forward compatible with SilverLight and all that is needed is the SilverLight runtime which runs in any of several popular browsers on Windows or Mac. Flash started out as a web development platform and Adobe is now going the other direction with products like AIR (the Adobe Integrated Runtime). Adobe = Web -> Desktop, Microsoft = Desktop -> Web.
Data and Security
Microsoft is great at hitting it's competitors where it hurts - and they did it again. Kudos Microsoft. Flex struggles with a few things - foremost in my mind are cost, data accessibility, and security. To do anything really really cool with Flex or databases, you pretty much need some type of back end server application (e.g. Live Cycle Data Services, or WebORB [if you do .NET development]) which have costs associated with them. SilverLight 1.1 (Alpha at time of writing) will have LINQ and WCF (Windows Communication Foundation) built into it. And since SilverLight binaries are dll's downloaded over the web (dll's can be securely obfuscated - it's only a matter of time before Flash 9 SWF's can be decompiled) I already feel more secure. Like Flash, SilverLight is also agnostic about how it's content is served - it could be served by an Apache web server, a java web server, or your hacked Nintendo with a web server running on it.
Conclusion
SilverLight isn't ready for business applications yet due to the fact the SilverLight doesn't have any user controls like TextBox or ComboBox yet (included in 1.1 final release). But, keep an eye on this!! If the data connectivity is as good as promised - you'll start to see numerous seriously data enabled SilverLight web apps.
Links
I can't talk about all this without giving some examples.
- Tafiti is pretty neat. It's a "visual" search engine.
- PopFly is a SilverLight tool that lets you make dynamic Mash-Up's with a graphical tool. You can connect to services like Flickr to get GeoTagged images and place them on a map by wiring "Blocks" together. This is by invitation only - it's worth to getting an invitation to.
- This is an emulation of Windows Vista done in SilverLight. Pretty Neat.
- DLR-Console is a application that demonstrates the use of the Dynamic Language Runtime. Developers can now write SilverLight in Ruby, Python, or managed JScript.
Resources
- http://www.microsoft.com/silverlight - SilverLight download
- http://www.silverlight.net/community - Official SilverLight site
- http://www.componentone.com - WPF/SilverLight user controls
- http://blogs.msdn.com/mharsh - Mike Harsh's Blog
- http://blogs.msdn.com/tims - Tim Sneath's Blog
Miyagi: Now, ready?
Daniel: Yeah, I guess so.
Miyagi: [sighs] Daniel-san, must talk.
[they both kneel]
Miyagi: Walk on road, hm? Walk left side, safe. Walk right side, safe. Walk middle, sooner or later
[makes squish gesture]
Miyagi: get squish just like grape. Here, writing code, same thing. Either you develop UI "yes" or develop UI "no." You develop UI "guess so,"
[makes squish gesture]
Miyagi: just like grape. Understand?
Daniel: Yeah, I understand.
Miyagi: Now, ready?
Daniel: Yeah, I'm ready.