The last year has been busy for the developer division at
Microsoft. We shipped Visual Studio 2010 and .NET 4 with
WPF 4 as well as
Silverlight 4, new versions of Expression Studio
and WCF RIA Services. We recently shipped
Windows Phone 7 and XNA Game Studio 4.0. We also put out betas
of Visual
Studio LightSwitch and WebMatrix.
All of those products were either built using XAML-based UI
technology (WPF and Silverlight) or target XAML-based UI technology
with their output.
At the same time, WPF matured through three framework versions,
and continues to see success in many ISV, business, and Surface
applications.
WPF Inside Microsoft
Visual Studio was given a new WPF-based shell and editor with
the 2010 release. As one of the largest single applications at
Microsoft, the move to WPF was not taken lightly. Visual Studio
2010 is an application I use every single day, and like most of
you, rely on to do my job. I'm really happy with the 2010 release,
and I'm looking forward to what we do with the WPF shell in future
versions.
The Microsoft Expression Suite continues to rely on WPF for the
user interface. Some, like Expression Blend, were built from the
ground-up using WPF. Others, like Expression Design, show the power of integrating WPF with native code to
enable leveraging existing code while providing a modern
interface.
Another great WPF application, currently in beta, is WebMatrix.
WebMatrix is "everything you need to build Web sites using Windows.
It includes IIS Developer Express (a development Web server),
ASP.NET (a Web framework), and SQL Server Compact (an embedded
database). It streamlines Web site development and makes it easy to
start Web sites from popular open-source apps. The skills and code
you develop with WebMatrix transition seamlessly to Visual Studio
and SQL Server."
WebMatrix takes advantage of the great WPF UI capabilities, as
well as interop with other technologies on the desktop, including
incorporation of some pre-existing Windows Forms-based dialogs and
controls.
There are other applications throughout Microsoft (inside and
outside Developer Division) that are being built in WPF and .NET.
You'll see more of them in the future.
Customer WPF Applications
The use of WPF inside Microsoft is exciting and inspiring.
However, it wouldn't be very compelling if Microsoft was the only
company using this technology. In addition to the many
behind-the-firewall applications that are core to the day-to-day
running of businesses, companies like Intuit are creating
shrinkwrapped WPF applications that millions of people rely upon.
TurboTax 2010 is one such WPF application, as you'll see in Rob Relyea's on-demand
PDC Video.
CalMAN is a screen calibration application by SpectraCal. In
September, I interviewed Joel Barsotti, one of the primary
developers of CalMAN, for Channel 9. This is a very cool WPF
app for its interesting visualizations as well as deep Windows
integration for screen calibration data acquisition.
Metrotwit is a very impressive WPF Twitter client, styled in the
Metro style used by Windows Phone 7 and Zune. Kudos to Long Zheng
and the Metrotwit team for delivering this WPF4 application this
past year. You can install Metrotwit via ClickOnce here.
The
Book of WPF lists a lot of WPF applications in the wild as of
2009/2010. There are some seriously cool applications there, so I
encourage you to check it out. Major ISVs and large IT shops have
chosen WPF for its ability to provide rich application UI,
excellent binding, and deep Windows integration.
There are tons of other applications out there and new ones
being built daily. Many are behind-the-firewall business
applications, many are ISV applications. We've seen examples of
plant management, BI, reporting, and much more from companies both
large and small. Rob Relyea covers some of these in his on-demand
PDC 2010 talk.
Planning for the Next Version
Six months ago, in April 2010, we shipped a major new version of
WPF 4 as part of the .NET 4 release. That release contains a ton of new features including:
Visual Studio
2010
WPF Tracing Support
WPF Designer
Text
New Text Rendering Stack
ClearTypeHint
Selection and Caret Customization
Custom Dictionaries API
Graphics
Layout Rounding
Cached Composition
Pixel Shader 3
New Pixel Shader APIs
Easing Functions
Removal of legacy bitmap effects
Controls
DataGrid
Calendar
DatePicker |
Binding
Binding Commands on InputBinding
Bind to Dynamic Objects
Bindable Text Run
Styling and Templating
Visual State Manager
Windows 7
Multi-Touch and Manipulation
Integration with the Shell and Taskbar
General
Improved Client Profile
Managed Extensibility Framework
Parallel Computing
XBAP Script Access
|
We're all very proud of that release; it addressed a number of
top customer requests and improved WPF visuals and the deployment
story. Since that release, we've also shipped two major releases of the WPF Ribbon
Control.
When I was on campus in September of this year, I had the
pleasure of sitting in with the WPF triad during a v.next briefing.
Over in the right-hand Window, Rob and his team had some tentative
assignments for feature teams. You can see there's a ton of stuff
up on that window. I can't wait to see what awesomeness comes with
WPF v.next!
One thing that I was happy to see (and which was no surprise
given all the team's requests for reports) was the use of some of
your top uservoice feature votes in the planning process. There
they were, up on Rob's window, organized by value and cost (shown
is not necessarily the final arrangement).
A few nuggets we can expect to see in the next version of WPF
include:
- Hosting of Silverlight content in the embedded browser, without
airspace issues (the inability to overlap WPF content over native
Windows hWnd content)
- Overall better management of airspace with hosted native
hWnd-based content like the WebBrowser, HwndHost and
WindowsFormsHost
- Enabling binding and change notification
for collections that are created on a background thread
- Better integration with UI virtualization
- Integration of the Ribbon control
- more...
Of course, we're early in the process, so this is
subject to change, and it is by no means a complete list.
However, it shows how the team is thinking about the next version,
and how your top requests have impacted those decisions. Working
with the WPF team is a treat. These are folks who love their work
and believe in their product.
So Where does that Leave WPF?
This all adds up to some key points on WPF:
- WPF is a critical technology for many key Microsoft
applications
- WPF is a technology relied upon by our customers for a large
number of internal and for-sale applications.
- WPF is alive and well, with plans underway for the next
version.
What about Silverlight?
Folks who know me know I'm just as much of a fan of Silverlight
as I am of WPF. This post covered the future of WPF, for the future
of Silverlight, be sure to read the Future of Silverlight post on the Silverlight
team blog. That post does a good job of explaining how Silverlight
fits in to the changing web landscape.
Also, a year ago, I put together a post about the future of Silverlight and WPF. That's still a
good reference when combined with the updates to guidance in this
post.
Our Guidance
Speaking of guidance, I'm often asked for guidance with how to
choose between WPF and Silverlight. Here's what we recommend when
starting a new application:
- If you're just starting out, and there's a question as to which
technology to choose (Silverlight or WPF) then start with
Silverlight. It is generally easier to move up to WPF from
Silverlight than it is to move the other way. Silverlight has a
smaller API, and is therefore generally considered easier to
learn.
- If you need a desktop application with only basic system
integration, consider building a Silverlight Out-of-Browser
application. Silverlight 4 Trusted Applications with IDispatch
support provide access to many system resources previously
unavailable to web technologies.
- If you need deep system integration, excellent multi-touch
support, device access, local resources, and all the other things
that go with a solid desktop application, then consider moving up
to WPF.
- If you're a C++ developer, you can choose to go with C++ and
MFC, or use C++ with WPF on the front end, like the Expression team
did.
No matter what you chose (WPF, Silverlight, Native), rest
assured that you'll be supported in the years to come with enhanced
capabilities and our awesome programming tools.