Silverlight 3 - Where is Silverlight Mobile?
Update 2/18/2010: Silverlight Mobile is coming in beta form during the MIX 2010 conference in March 2010. This will include a Silverlight SDK for the new Windows Phone 7 platform. Look for Silverlight mobile to be announced for Symbian, BlackBerry and Droid in the near future as well.
This article was written March 2009...what is funny is how I was right that Silverlight mobile would be around the Visual Studio 2010 CTP/RTM. Go me :)
During MIX 2009, Microsoft announced many new features that will be coming as part of the Silverlight 3 framework. One feature that was suprisingly missing was Silverlight support for mobile devices. Not only was this surprising, but it was really disappointing as I was really sure that this feature would be released as part of Silverlight 3.
Why the surprise?
Did you know that mobile support for Silverlight was announced a while ago? Do you know when? End of 2008? Beginning of 2008? Try the beginning of 2007! Silverlight support for mobile devices was shown publicly during the MIX 2007 conference when Silverlight Alpha 1.1 was announced. Over two years ago we had a demo of Silverlight on a mobile device, yet we still don't have a public beta or release of the product (Note: There are private demos of this out there).
"Microsoft probably just shifted strategies and you are making a big deal about something two years ago, right?"
Actually NO. At MIX 2008, Amit Chopra (the program manager for Silverlight mobile) during his Mobile Devices and Microsoft Silverlight presentation showed off Silvelight on the mobile. So one year later Microsoft reported progress on the Silverlight mobile platform. Furthermore, they stated that they would also be releasing Silverlight 1.0 for Mobile shortly after the conference for Windows Mobile 6.x. (Check out the video linked above for the false promises).
Some real basic demos of Silverlight mobile at MIX 2008 (Yeah, it was shown that dark.)
Well, has there been any more announced from Microsoft relating to Silverlight mobile? Believe it or not, again at the PDC 2008 conference (October 2008), Amit Chopra during his talk Silverlight 2 for Mobile showed Silverlight 2 running on a mobile emulator and mobile device. Furthermore, we were also told that Silverlight Mobile would NOT be like Flash Lite. You would get about 99% of the SDK on the web and mobile in one shot (Note: Things like video brushes would not be supported on SL mobile). Sounded really promising, right?
Silverlight 2 Mobile Environment. Silverlight 2 debugging on a Mobile emulator. Too bad it never was made came public.
Fast forward to MIX 2009. Surprisingly we were showed nothing about Silverlight 2 or 3 on a mobile device. There was some chatter on Twitter with someone who talked to Amit Chopra and he stated that Silverlight mobile is about a year away! That was apparently true since there is nothing in the Silverlight 3 SDK related to mobile devices.
It is not like Microsoft couldn't accomplish Silverlight on a mobile in two years. Look what has happened to the evolution of Silverlight in two years. From March 2007 to March 2009, we have gone from Silverlight 1.1 Alpha -> Silverlight 2 Beta 1 -> Silverlight 2 Beta 2 -> Silverlight 2 RC -> Silverlight 2 RTW -> Silverlight 3 Beta 1. Two years is an eternity for an immature platform like Silverlight.
"The fact that Silverlight for mobile has been announced two years ago and we don't have a public beta is surprising. But what is more surprising is that Silverlight mobile is over a year away!"
It's obvious that Microsoft has hit some snags with Silverlight mobile. I don't know the exact details but it looks like performance had a big part of it. Furthermore, Silverlight did not support the features that next generation mobile devices currently support. For example, the iPhone has 3D transitions, multi-touch support, clearer text. Silverlight obviously needed to catch up in order to be competitive when it was released. Microsoft decided to add the features into the core framework first and then leverage them in the Silverlight mobile framework. A lot of people on forums are asking why Silverlight went with some features like 3D support, multi-touch, clear fonts, etc., instead of printing. As you can see, these features make a little more sense now.
The second part of the story is that Silverlight mobile needs to fit into Microsoft's higher mobile strategy. Microsoft has announced in pieces its Windows Mobile 7 strategy. I think it is essentially going to be a Microsoft version of the iPhone with a major twist: the Silverlight App Store and Silverlight will be powering a lot of the extensions. More on that in another post.
Has Microsoft given up on Silverlight mobile?
Obviousy, the answer to that is no. Microsoft wants to get Silverlight for mobile devices right. I think it will power the Windows Mobile 7 strategy and it needs to be "as good" as Apple's iPhone/iPod. Microsoft can't afford another Zune vs. iPod debacle. If Silverlight is done right, it could be really powerful and blow Apple's framework away. I will take .NET over Apple's Objective-C any day. Furthermore, Silverlight allows you to target mobile, web and the desktop all at the same time. The iPhone framework (as of now) only supports the mobile platform. As you can see, Silverlight mobile is key to the strategy at Microsoft.
When will we see Silverlight 3 mobile?
The best estimate we heard was a tweet from MIX (I heard from someone who talked to Amit Chopra) that Silverlight mobile is about a year away. This makes Silverlight mobile being released in line with the Windows 7 mobile platform. I am hoping we see a beta/CTP around the Visual Studio 2010 release.
Silverlight 3 Beta - Downloads You May Have Missed
Everyone that is interested in Silverlight 3 Beta development has probably checked out all of the core items in the release: Silverlight 3 SDK, Silverlight 3 Tools for Visual Studio 2008, Blend 3 Preview, Silverlight Control Toolkit (March 2009 version). There have been several other releases that are related to Silverlight 3 you may have missed and are a little less obvious if you are new to Silverlight development. This blog post deals with the items that are a little less obvious but important to know about. Not all of these downloads are targeted for Silverlight 3; however, they should work with Silverlight 3 Beta.
"There have been a ton of tools released
with Silverlight 3. Did you miss any of them?"
Silverlight includes several different ways to consume data (most of them being via services). There have been three new updates to the data service frameworks available for Silverlight released recently:
- .NET RIA Services - This is a new n-tier design framework released during the MIX 2009 Conference. This framework allows you to factor more of the work into the service tier for business logic, validation, errors, querying, etc. This framework is new to the Silverlight 3 Beta.
- ADO.NET Data Services 1.5 CTP1 - This is a preview version of the upcoming update to ADO.NET Data Services which provides client and server enhancements for Silverlight developers who create service applications. It is very similar to .NET RIA Services (In fact, many people think these are the same; however, these are DIFFERENT frameworks)
- WCF REST Starter Kit Preview 2 - Yet another data access framework from Microsoft. This framework targets WCF and applies REST architectual patterns for service access. In my opinion, WCF with REST gives you the most flexibility and control when creating data aware applications with Silverlight. Using interceptors, you can control every aspect of message headers, creation, caching across the channel stack. The WCF REST Starter Kit will be included with .NET 4.0/Visual Studio 2010.
- IdeaBlade DevForce - This is a 3rd party framework that works along the same lines as ADO.NET Data Services and .NET RIA Services. They have some additional tools that take away some of the hassle of developing data access layers with Silverlight. However, they are not FREE and they are a 3rd party framework. They do have positive reviews. The biggest difference between them and WCF REST, ADO.NET Data Services 1.5 and RIA .NET Services is that their product is out now and ready to be used. If you want a Line of Business framework that is ready for production, give them a look.
- IdeaBlade web site
Architectural Pattern Frameworks
Silverlight is a plug-in that allows you to do a mix of web/winforms development. However, its similarities lend itself to the same UI patterns that are well documented in WPF. Furthermore, Silverlight as a plug-in needs to be hosted in a web environment. Architecting the data flow from the host to the plug-in is also important. This is where the MVVM and MVC architecture patterns apply.
- ASP.NET MVC 1.0 - If you are working on the web, you have to host your Silverlight application somewhere. ASP.NET MVC 1.0 allows you to build Model-View-Controller architected applications inside ASP.NET. If you are implementing REST access or URL routing navigation inside your Silverlight application, ASP.NET MVC will wrap like a glove around your Silverlight XAP files.
- Composite Application Guidance (also known as Prism v2) - This is a composite framework for Silverlight and WPF applications. Microsoft provides guidance for enterprise development using the MVVM pattern and implement Commanding for Silverlight. This framework also includes a complete StockTrader example.
- Microsoft Azure (March 2009 CTP) - Visual Studio 2008 Tools have been updated if you want to write applications in the "Microsoft Cloud". Mesh Enabled Web Applications allow you to use Silverlight as the front-end for Microsoft data services.
Media Streaming with IIS 7.0
Silverlight 3 enhances the multimedia experience by providing true 720p HD streaming in full screen, hardware accelerated video processing and smooth streaming. Many of these features were pioneered during the 2008 Olympics broadcast in NBC. Microsoft has made this technology available to anyone who wants to host a Silverlight experience using IIS 7.0
- IIS Media Services - Allows IIS 7.0 to be turned into a web server that can stream HD quality Silverlight media streams with smooth streaming technology that powered the NBC Olympics 2008 Site.
- UX Media Simulator - This is a media player that allows you to graphically tune and visualize what happens when your Internet bandwith drops and Silverlight smooth streaming kicks in. Pretty good tool to use to debug your content if smooth streaming is important to you.
Silverlight's unique ability to run on the client while hosted on the web has provided it with many interesting capabilities that were previously hard to achieve. Here are some tools that make our lives easier for developing in Silverlight:
- Virtual Earth Silverlight CTP - This set of assemblies allow you to expose and control Microsoft Virtual Earth Maps via Silverlight. It is a very cool add-on for Silverlight if your applications require maps.
- Silverlight Spy 3 - This is an absolute MUST HAVE for any Silverlight developer. Think of it as Fiddler/.NET Reflector for Silverlight applications. It has been recently updated for Silverlight 3 Beta.
Add-Ons and Code Examples
Microsoft has made a lot of the features really extensible in Silverlight 3. Microsoft showed off many features in Silverlight 3 that can extend the features provided.
- Expression Web SuperPreview for Internet Explorer - This tool allows you to test/debug your applications in IE 6, 7 and 8. It is very cool and a must for any online compatibility testing with IE. Most Silverlight applications remain web hosted so this applies to Silverlight as well.
- Expression Blend 3 Sample Behaviors - Expression Blend 3 includes something called behaviors. This gives designers the ability to drag and drop and add "triggers/events" to the design objects and have them "behave" in certain ways. During MIX 2009, Microsoft showed off some real cool behaviors like adding physics to object by simply dragging and dropping it on top of a control.
- Silverlight 3 Pixel Shaders - Silverlight 3 now supports Pixel Shader 2.0. This allows you to write very interesting and powerful screen manipulation using HLSL. For example, some of the nice Windows Aero Effects in Vista are done using pixel shaders. There will no doubt be a CodePlex project created for Silverlight Pixel Shaders. For now, many of the existing WPF pixel shaders can be made to work in Silverlight 3.
- Slidentity Silverlight 3 Application - Slidentity is a cool Silverlight 3 Beta application that shows off many of the new features. It is an end to end example with source code.
As you can see, there has been a lot of stuff released around Silverlight 3 that is well beyond the "core release". It can be very easy to get lost with the amount of tools/frameworks/apps out there. If I have missed any obvious ones, please e-mail me and I will add it to the list.
Silverlight 3 Release Date (RTW) Surprise
Update 07/08/2009: Silverlight 3 RTW has been released. Please visit my blog post here for all the download links:
Update 05/28/2009: Scott Guthrie during his online talk yesterday mentioned that Silverlight 3 is close to being finished up and will be released "soon". I remember when he mentioned that during Silverlight 2 Beta 2/RC0 and Silverlight 2 RTW was out within a few weeks. The release is REAL close now! Expression Blend 3 is also getting some updates in RTW. Also note the July 10, 2009 invitation to talk about Silverlight 3...http://arstechnica.com/microsoft/news/2009/05/silverlight-3-and-expression-studio-3-launching-july-10.ars
Silverlight 3 Beta 1 was released last week during the MIX 2009 conference. This version of Silverlight includes many enhancements that many developers want to incorporate into their RIA projects now. The first question that comes to mind to many architectes or development decision makers is, when is the framework going to be released so they can plan their product development schedule. Unfrotunately, during the conference, Microsoft did not provide clear guidance on when to expect Silverlight 3 RTW. This article tries to gauge when Silverlight 3 will be released and why.
Based on the public knowledge available Microsoft released a few days ago, we can deduce when Silverlight 3 will be released. What does it mean when we talk about the "Silverlight 3 release date"?
"Silverlight 3 is now much more than just
simply installing the SDK and the runtime."
At its core, the "Silverlight 3 release" includes several key dependent tools and technologies that need to be released together:
As you can see, this list has grown from when Silverlight 1.0 or 2.0 was released. When Silverlight 1.0 was released, only Blend, the SDK and the tools were released. Furthermore, the list of tools will no doubt grow when mobile support is added to the Silverlight runtime. With all of these dependencies, it obviously will take longer for a Silverlight release and that has to be considered when predicting when the release will happen.
Past Silverlight Release Cycles
Let's take a look at the past release cycles of Silverlight 1.0 and Silverlight 2.0 of the major betas and releases:
Silverlight 1.0 (about 2 years between first public alpha/beta -> RTM/RTW)
- WPF /E (several betas internal and external in 2006)
- Silverlight 1.0 Beta (March 2007)
- Silverlight 1.0 RC1 (July 2007)
- Silverlight 1.0 RTW (September 2007)
Silverlight 2.0 (about 1.5 years between first public alpha/beta -> RTM/RTW)
- Silverlight 1.1 Alpha (March 2007)
- Silverlight 2.0 Beta 1 (March 2008)
- Silverlight 2.0 Beta 2 (June 2008)
- Silverlight 2.0 RC1 (October 2008)
- Silverlight 2.0 RTW (October 2008)
As you can see, both Silverlight 1 and Silverlight 2 have had pretty long development cycles between public betas to when they were finally released. If I were a betting man based on the past information, I would bet that Silverlight 3 RTW would be a long way away (at least 5-6 months away). Furthermore, Silverlight 1.0 has had three "beta" releases and Silverlight 2 had four "beta" releases. I even posted my thoughts on this in the Silverlight forums, based on my assumption that Silverlight 3 would be out around when VS 2010 is released later this year.
Silverlight 3 Release Date Hints
After watching some more of the videos from MIX 2009, more information has come out to make my assumption of a release in the 6-9 month timeframe incorrect.
PowerPoint Slide from MIX 2009 - Deep Dive into Microsoft Silverlight Graphics
From the slide above, we can see that Microsoft is actually planning a release in the Summer of 2009! That would mean it would be about a 3-6 month release cycle from the first beta to RTW. This is pretty surprising when comparing it to the Silverlight 1 and Silverlight 2 release cycles which were over 18 months. This information was reiterated in a Scott Guthrie interview recently that only one beta of Silverlight 3 was planned.
Possible reasons for a shorter release cycle
Based on the information above, we can safely assume that Microsoft is going to deliver Silverlight 3 in one of the quickest release cycles for Silverlight. How is Microsoft accomplishing this? I can only speculate (based on public information), but I think it has to do with a few key reasons:
- Silverlight 3 is like .NET 3.0 as Silverlight 2 is to .NET 2.0. .NET 3.0 added WCF, WPF, WF and Cardspace to .NET 2.0; however, the core framework did not change. Silverlight 2 uses .NET 3.5/Visual Studio 2008 and Silverlight 3 does the same. I think that Silverlight 3 essentially builds upon the CLR with additional assemblies and doesn't change the core of Silverlight 2 much (I could be dead wrong here).
- Silverlight Mobile is conspicuously missing from Silverlight 3. Silverlight Mobile was demo'ed way back in April 2007. Microsoft showed off Silverlight 2 on mobile devices in October 2008. Silverlight 3 obviously does not include any mobile support. I think Microsoft cut this feature out as they re-thought their mobile strategy focusing it towards Windows 7 Mobile (out in 2010). Cutting this major feature out allowed Microsoft to push up the date by several months.
- Silverlight 3 is essentially going to have tool support both in Visual Studio 2008 and Visual Studio 2010. Visual Studio 2010 will add a rich designer for Silverlight 3 where developers will be able to interact with the XAML/designer much like they are able to now with Blend. However, this support is NOT being added into Visual Studio 2008 (even though in Scott Guthrie's Silverlight 3 glimpse in November 2008 it looked like it would be added to VS2008). So what? I think that the Silverlight 3 could come in parts and all of the tools won't be released until the end of 2009. We got another hint of that with Expression Blend 3 Beta not having all of the features being present (i.e., Sketchflow). For example, .NET RIA Services might not be released RTW with Silverlight 3 in the Summer of 2009.
- Silverlight 3 is a key part to Microsoft's UI strategy and it really catches up to a majority of Adobe's Flash/Flex features. Silverlight still has some features missing that Flash/Flex technology has (i.e., printing, microphone, web cam.) However, Silverlight 3 adds and builds upon several key features that Flash/Flex simply still don't have on their radar (line of business framework, enterprise integration, multithreading). The Silverlight 3 feature set will roughly equate to the Flash/Flex feature set.
What about Visual Studio 2010
Update note: Visual Studio 2010 Beta 1 public release is "in a matter of months now" according to Mark Wilson (http://videos.visitmix.com/MIX09/T73M). Maybe VS 2010 Beta 1 will be released when Silverlight 3 RTW is released in the summer? Remember Silverlight 3 is NOT dependent on VS 2010 and will work in VS 2008 and VS 2010. Microsoft very well might release Silverlight 3 in the summer. VS 2010 support and add-ons such as .NET RIA Services might come later.
In conculsion, it is a pleasant surprise that Microsoft is planning on releasing Silverlight 3 in the Summer of 2009. This would make Silverlight 3 have the shortest release cycle out of all of the previous Silverlight releases. This release packs a lot of features and has excellent tool additions which can benefit many RIA developers. However, I think that Microsoft may have dropped certain features (i.e., mobile support) from the release. Furthermore, the full Silverlight 3 developer experience may not be fully realized until Visual Studio 2010 is released. This might hurt the release in the long run. Personally, I am excited about the early Silverlight 3 release date. The early date allows me to start architecting on the new framework with confidence that my application will not be waiting for months on Microsoft for Silverlight 3 RTW.
Windows Server 2008 Web Edition - Ready For Primetime
Windows Server 2008 Web Edition is not the Web Edition we knew from theSever 2003 platform. Microsoft has removed the big limitation ofinstalling some enterprise applications on the OS (i.e., SQL Server).Furthermore, IIS 7.0 is now the core web server and it can take advantage ofhardware specs similar to Standard Edition. With these changes andmore, Windows Server 2008 Web Edition is now a viable/affordableupgrade path from Windows Server 2003 Standard.
Are you getting ready for all the good stuff Visual Studio 2010 will bring? Visual Studio 2010 will bring a lot of great features for ASP.NET enterprise services and tons of great features. Some key features like ASP.NET, ASP.NET MVC, Silverlight 2/3, WCF/WF 4.0 will all run faster and better on the IIS 7.0 platform because of its key architecture features. Platforms like Silverlight 2/3 or ASP.NET MVC will be easier to deploy on the IIS 7.0 web server. Lastly, some features of WCF 4.0/WF 4.0 will require IIS 7.0 to utilize all of their respective features (WAS in IIS 7.0).
IIS 7.0 is not a decoupled application you can install on any OS. Currently the IIS web server is coupled to the Vista/Windows 7 workstation OSes and the Windows 2008 server OS. Therefore, if you want to use IIS 7.0 in production, you need the Windows Server 2008 Operating System. I have a couple of projects coming up that I am developing and wanted to utilize some of IIS 7.0's features. Furthermore, having the projects ready to take advantage of future .NET enhancements is another added bonus. I decided to upgrade my server with the new OS.
I have a dedicated server that I lease through softlayer.com and I looked at my upgrade options. I was currently running Windows 2003 Standard so upgrading to Windows 2008 Standard made perfect sense. As part of my hosting package, I was not being charged extra for my OS; however, upgrading to Windows 2008 Standard was an extra $70/month. That is over $800/year just to upgrade to the "equivalent" version of Windows 2008 Server. I did notice that Windows 2008 Web Edition was being offered at the same rate as my current OS. However, I was really apprehensive about upgrading/downgrading to a "web edition" of an OS.
Windows 2003 Server Web Edition is really limited in what it was licensed to do. Essentially it limited you to using the server as a web server. By not allowing you to run any of the server services, it prevented you from installing enterprise applications and limited the hardware specifications. The biggest limitation was the inability to install SQL Server. If you ran Windows 2003 Server Web Edition, you were limited to SQL Server Express (unless you wanted to install an open source alternative or hack the OS). I think Microsoft dropped the ball big time, as any web applications worth its weight requires some kind of database backend. Most web sites (even ones that get a decent amount of traffic: top 20,000 worldwide) can be run from a single server. Furthermore, any web application worth its weight usually is dynamic and has some kind of backend database. If Windows 2008 Server Web Edition were the same, then this was obviously not an option for me.
Windows 2008 Server Web Edition is different than its 2003 counterpart. While the 2008 Web Edition still had the hardware/service limitations, the OS did eliminate the big limitation of not being able to install SQL Server on the OS (SQL Server Enterprise editions still do require a higher version of Windows 2008 Server). The Windows 2008 Server Web Edition does support a decent amount of RAM (32 Gig on x64 hardware) and allows you to run on a max of 4 processors (which is definitely a beefy server) which is equivalent to the Windows 2008 Server Standard Edition. Therefore, Windows 2008 Server Web Edition is actually a pretty good equivalent to Windows 2003 Server Standard as a web server.
Why upgrade to Windows Server 2008
There are a lot of neat features in Windows Server 2008; however, IIS 7.0 for me is the biggest. I mentioned performance, Silverlight and ASP.NET as my big reasons as to why I decided to upgrade. Let's look at it a little deeper.
What makes IIS 7.0 great (my main reasons for going to it. I know there are several others not mentioned below.):
- Modular Web Server Architecture allows you to turn features off and on like components. Apache has allowed you to do this for a while now. IIS has finally caught up and this improves performance as you do not need to install/run services that you do not use.
- Easy Dynamic Caching & Compression. This is finally built into IIS and allows you to quickly configure these settings. IIS 6.0 was a pain in the butt to do this. There are third party add-ons that do a very good job at this; however, it's free in IIS 7.0.
- Windows Process Activation Services (WPAS or WAS)
- Before IIS 7.0 if you wanted to host your Windows Communication Foundation (WCF) services, you had two choices: http or self-hosting. Both choices have their pros and cons. One coupled you to http via IIS and the other you were responsible for writing your own hosting module. With WAS you can now host your WCF services and they can actually activate/deactivate themselves via listeners. For example, imagine having a web site that is not turned on, taking any hardware resources and is ONLY activated when a request is made. Most WCF experts recommend WAS hosting because of its many features.
- Smooth Streaming
- If you want to deliver rich media experiences in Silverlight like nbcolympics.com, you will need this feature. This allows you to stream video content and it automatically throttles the quality of the stream if the network latency/connection is poor on the client's end. This is very cool as even stable Internet connections can slow down for a few seconds. You may receive a few frames at lower quality; however, your media will continue to play. This is especially important for larger streams where the buffering is determined at the initial connection.
- Writing custom handlers/modules and deploying them to IIS has never been easier. Several months ago, I showed how one could write an http handler for a dynamic clientaccesspolicy.xml file rather than placing an XML file on root of the web server and it is a lot simpler in IIS 7.0 than IIS 6.0.
- Microsoft has a download page where the community has made several extensions that you can drop into IIS 7.0. This of course was available in IIS 6.0; however, the management and deployment of this wasn't 100% there.
- Ease of use for current and future applications (These are minor but make my life easier.)
- Silverlight 2 hosting does not require additional MIME types (like it does in IIS 6.0)
- ASP.NET MVC does not require wildcard mapping (like it does in IIS 6.0)
- Want to create a clean REST service URLs (removing the .svc)? Just as in ASP.NET MVC; there is no wildcard mapping required.
After doing the research over the last couple of days, I decided to bite the bullet and upgrade the OS to Windows 2008 Server Web Edition on Sunday (lowest bandwidth for my websites). I installed SQL Server 2005 Standard, restored my databases and upgraded my web sites to IIS 7.0 and everything worked out great. Having upgraded to Windows 2008 Server, I am really looking forward to using the IIS 7.0 features for my future projects and I will be ready for everything that .NET 4.0 and Visual Studio 2010 has to offer.