Making sense of WPF and Silverlight

 

Microsoft is releasing technology at the speed of light (Silverlight to be precise). This may or may not be a welcome change from taking 5 years to release an OS but at least you can't say we are boring.

Last fall we released .Net 3.0 which included Windows Presentation Foundation, a managed code library that encapsulates DirectX for user interface rendering and an associated XML based markup language called XAML. Just last month we announced Silverlight 1.0 and Silverlight 1.1 (at the same conference!!!). This post will try to help you sort out what is the same and what is different between these related technologies.

Windows Presentation Foundation (WPF) – https://wpf.netfx3.com

Windows Presentation Foundation is a set of managed code class libraries that encapsulate DirectX and was released as part of .Net 3.0. WPF also introduced an XML based markup language for describing the user interface called XAML (eXtensible Application Markup Language). Since XAML is based in XML it is very toolable so there are a new set of tools coming from Microsoft and others that emit XAML. Expression Blend, Expression Design and Expression Media are from Microsoft and have that ability. There are also 3rd party tools like Zam3D from Electric Rain (https://www.erain.com/products/zam3d/DefaultPDC.asp).

WPF supports 2 deployment models

  1. Traditional Desktop - install using MSI from file share or CD. Application leverages a Rich and/or SmartClient architecture
  2. Click-Once Web Deployment - WPF app is deployed to web server along with an XBAP (XAML Browser Application) file. A URL to the XBAP file is provided to the user. The application downloads to the desktop and runs within the browser and must conform to the browser security model.

In either case, .Net 3.0 is required on the system in order to run the application.

I've got some past blog posts that point you to more information on existing WPF applications and tools.

If your new to XAML you can check out my XAML Primer article:

 

Silverlight 1.0 – https://www.silverlight.net

Silverlight provides the following capabilities:

  • Browser plug in that works in IE, FireFox and Safari on Windows and Mac (similar to Flash deployment model)
  • Browser programming model, i.e. Plug-in renders XAML, developer writes JavaScript to manipulate the XAML (similar to JavaScript HTML DOM) and integrates well with AJAX based applications
  • Supports 2D Vector Graphics
  • Video Streaming up to 720p HD
  • WMA and MP3 Audio Streaming
  • Block Text and Glyphs
  • Animation of XAML objects and their properties (position, color, transform, opacity, etc.)
  • Asynchronous downloader
  • Dynamic XAML (createFromXaml()).

Visit the Silverlight Gallery to see live samples of Silverlight applications.

There are Visual Control companies that are offering add on controls for Silverlight and WPF. Check out what Telerik is offering for add-on controls for Silverlight:

https://www.telerik.com/demos/aspnet/silverlight/Cube/Examples/RoomDesigner/DefaultCS.aspx

Silverlight 1.0 is in beta with a Go Live license and will be released this summer.

Silverlight 1.1 – https://www.silverlight.net

Silverlight 1.1 builds on Silverlight 1.0 by adding a version of the .Net Framework for use on the client in the browser. Instead of Silverlight applications being made up of XAML and JavaScript they are made up of XAML and C# or XAML and VB. A subset of the .Net Framework class libraries are also available to the developer.

Here is an architecture diagram that depicts both the capabilities of 1.0 and 1.1 together. The .Net Framework adds a complete networking stack, additional WPF controls and layouts, LINQ, Generics and support for Dynamic Languages.

Silverlight 1.1 is in alpha which means you can download it and kick the tires.

Visit the Silverlight Gallery to see live samples of Silverlight applications.

The Tools

The tooling for WPF and Silverlight is Microsoft Expression Studio and Visual Studio as well as 3rd party XAML generation tools and visual controls. Visual Studio 2005 or "Orcas" + Expression Blend 2 Preview is the minimal setup I would recommend.