There was a lot of great information shared this morning at the first of the #MIX09 keynotes. As I reflect on it, it seems that most of it seemed to be centered around Silverlight 3, but there were a few gems tucked away in some other parts of the keynote.
First, Bill Buxton from Microsoft Research started off the keynote with a super-high energy talk on how important UX is, and how now is a really good time to be focused on experience. He compared today’s experience designers to the industrial designers of the late 1920’s. The folks that designed the first telephones, cars, the Coca-Cola bottle, Kodak cameras and more have taught us how to be successful in design over the long haul.
After what was way too short of an opening (GREAT JOB BILL!), Bill transitioned to Scott Guthrie who took over the rest of the keynote. Gu’s message was split into 3 main sections – Standards-based Web, Media and RIA. Most of them had to do, at least in some part, with the announcement that the Silverlight 3 Developer Preview was made available today. There are a TON of very compelling reasons to start looking at Silverlight 3 today – here’s my rundown:
Expression Web 3
Expression Web 3 was announced this morning, but it doesn’t look like there is a beta available yet. Scott did mention a bunch of new features that they’re targeting for EW3 including
- Standards based Web Authoring – big push at Microsoft around standards-based web development and support
- Improved CSS Diagnostics – the tools today are awesome… I wonder how much better they’re going to get?
- Multi-Language Targeting – really important feature often requested by the community
- SuperPreview – This actually has a beta available now. When I saw this, I was really impressed. Basically what it provides is a way for developers to look at their web sites and compare how they’ll render across multiple browser types. It can use the locally installed browsers (IE8, FF3, etc) for rendering where installed, but uses an innovative cloud service to create renderings for non-installed browsers. This eliminates the need for us to set up complex test environments that include a bunch of VMs or spare machines to test our web apps against multiple versions of multiple browsers. Killer feature? Shows a side-by-side comparison of your site as well as “onion skin” mode where it can stack one version on top of another. Although SuperPreview will be included within EW3, Scott also announced that SuperPreview will ship as a free, stand-alone component outside EW3 for those that don’t have EW3. Very nice
ASP.NET MVC Framework
Big news for ASP.NET MVC fans – ASP.NET MVC 1.0 ships today! I didn’t hear anything about changes between the last RC and this version, but I bet any news will soon get posted to the MVC Forums on ASP.NET.
Web Platform Installer 2 and the Windows Web App Gallery
This update to the Web Platform Installer, supported on Windows XP, Vista Windows Server 2003 and Windows Server 2008, is designed to make it very easy to set up a development or production web server. The Windows Web App Gallery adds additional value on top of the WPI by providing a way to install some of the most popular .NET and PHP applications out there today including DotNetNuke, Drupal, WordPress, DasBlog and BlogEngine.NET. What I love about this is that it provides a SINGLE tool do download, install and configure applications in a SIMPLE way. I also love that the installer will automatically bring down any necessary dependencies – including PHP – if the application requires it.
More great news on the Azure front. Although it hasn’t been out in the public for that long, the Azure team is really listening to community feedback. What caught my ear was that Azure now supports FastCGI – this means that PHP applications as well as NET applications can run in the cloud. Couple that with the WPI and the App Gallery, and you have a simple, quick and powerful application platform combination. Other items of note are that Azure will support .NET Full Trust applications, and that SQL Data Services will provide raw ADO.NET support, which means that SQL Data Services will become a true relational database!
The big news here was around some new features in Silverlight 3:
- Silverlight smooth streaming (sometimes referred to as adaptive streaming) – automatically cycle through bitrates based on computer capabilities and network bandwidth availability making for a much smoother (i.e. less choppy) experience over slow connections
- GPU hardware support during playback
- New audio and video codec support, which enables you to roll your own codecs in managed code if you need to
- logging support for media analytics to help people better monitize their media streams
- Edge caching – push videos out as far as possible out on the edge for enhanced performance
- Web playlists
- Bit-rate throttling
NBC came out and said that their experience with Silverlight 2 for the 2008 Bejing Olympics was so amazing, that they’ve chosen to go with Silverlight 3 and adaptive streaming for the Vancouver Winter Olympics! It was also announced that a new rev of the Worldwide Telescope is being released in Silverlight 3 as well as a new Virtual Earth Mapping SDK.
For me, as a developer, this was the most anticipated part of the keynote. We would finally get to see the Gu produce some code while he showed off some of the great new features of Silverlight 3. It would take me all night to write all of it up, so I’m going to hit only the high points:
- Hardware-based (GPU) Acceleration
- Perspective 3D support
- Pixel shader effects
- Bitmap & Pixel API
- Deep linking, navigation and SEO support
- Accessibility support – I heard today that Silverlight already had Accessibility support, but I’ve never been able to find information about it. I attended a session today that specifically talked about Accessibility in Silverlight 3.
- Improved text quality with ClearType (not in the beta, but will be in the RTM)
- Multi-touch Support
- Downloaded library (dll) caching support
- Eclipse support on Windows and Mac for building Silverlight Applications
Expression Blend 3 Preview (download available today)
- SketchFlow – rapid prototyping tool inside Blend 3 for quickly putting together prototypes for customers. I have been hearing some rumblings in my community around the need for more prototyping tools, so I hope that this is something that they can find useful. I especially love the “squggly lines” it uses to draw window shapes…
- Import artifacts directly from Photoshop and Illustrator (huge response from the designer community on that one)
- Behaviors – these allow the Blend user to create actions that engage UI elements. I’m not sure yet the difference between these and triggers, but I think the difference is going to be subtle and involve the words “instead of writing code”.
- Source Code Control Support – this is probably the #1 requested feature I’ve heard from developers. This one is huge!
- XAML, C# and VB.NET Intellisense support – another huge thing for developers who don’t want to have to switch between Blend and VS as often as they do today.
I also noticed some changes in the overall layout and behavior of the UI which includes things like the ability to resize the tool windows (finally) and dock/undock toolbars.
- Control-to-Control binding – finally! We had a work-around for this using an intermediary class, but that was a real pain to have to set up. I’m glad to see this is now part of the standard binding syntax.
- Validation Error Templates – this makes it really easy to
- Binary XML Networking support for optimized network transmissions. This is a great addition to the REST and RSS support available in SL2.
- .NET RIA Services (a.k.a. Multi-tier REST data support) – this one is still a little fuzzy for me. I met a guy today who works on this team, and he explained it to me as a layer between the Silverlight application and the ADO.NET Data Services that makes it really easy to manage things like “dirty” objects, validation, object updates, etc. It wires up services exposed by the ASP.NET web site hosting the Silverlight control automatically to make these services easily accessible. Here’s a quote from the .NET RIA Services forums site:
“Microsoft .NET RIA Services simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms. The RIA Services provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations. It also provides end-to-end support for common tasks such as data validation, authentication and roles by integrating with Silverlight components on the client and ASP.NET on the mid-tier.”
Silverlight Outside the Browser
We got a little bit of this with the latest Mesh Developer release, but this release creates a full OOB experience for Silverlight. To enable the OOB experience for your SL3 application, it’s as simple as adding some configuration to the app manifest file. Once the configuration is made, you can effect a local install by either right-clicking on the app and choosing “Install On This Computer” or by writing some of your own code to start the installation (note that this code-oriented version has to be initiated by the user so as to prevent applications from installing themselves). Part of the OOB experience involves an offline component – there are APIs, in the form of application events and properties, that the developer can use to track whether the app is online of offline. Another part is application updating. With an online app, it’s easy to update – just throw out a new version, and the next time the app is run, the update is applied. With an OOB experience, sometimes the app is run from the desktop instead of the browser, so it needs some way to check for updates. Luckily, this is super easy in SL3. The updates are automatically checked, asynchronously, and are (from what I heard today) designed to be optional to the end user, but I bet there’s an easy way to force the update. Too many companies deploying applications throughout their enterprise are going to want to “force” updates on Silverlight applications for security, data consistency and other reasons.
I hope to have some more blog posts about the OOB experience up real soon.
All in all, day one was very informative – I can’t wait for day 2!