Q&A: Microsoft's Scott Guthrie Breaks Down Silverlight 3 for Enterprise Developers
In one of its milestone launches of the summer, Microsoft on Friday officially released Silverlight 3, the latest version of its rapidly-evolving media client/rich interactive application development platform.
With the latest iteration, Silverlight gains outside-the-browser capabilities, which observers say could provide some serious competition for the nearly ubiquitous Adobe Flash/AIR technologies. (Coverage of Friday's launch can be found here.)
Scott Guthrie, corporate VP of Microsoft's .NET Developer Platform group, sat down with contributing editor John K. Waters. Guthrie answered wide-ranging questions ranging from how to debug Silverlight apps, to its the role of .NET RIA Services at the data access layer, to Silverlight's security model, among other topics.Why should enterprise developers care about Silverlight 3?
One of the growing trends that we see is people wanting Web-based deployment of apps. In other words, they want the TCO of a thin client, but at the same time want to deliver the end-user productivity from the traditional desktop-based applications. Where I think Silverlight is interesting for enterprise shops is that it can provide this blend of Web-based TCO and deployment with all the end user capabilities of a thin client app.
|Scott Guthrie, corporate vp of Microsoft's .NET Developer Platform Group|
Can you point to a particular change in this release that would make it appealing to enterprises?
When you think about visualizing data -- or displaying and interacting with it -- Silverlight 3 offers significantly richer capabilities than we had in VB 6 or WinForms, or the traditional line-of-business forms packages. We have about 100 controls in Silverlight 3, and those controls are much richer than we’ve had in the past, and that’s how you get that user productivity benefit. Having rich APIs, rich UI controls, and rich networking support that just does all that work for you means that you, as a developer, can focus on your business.
If you had to point to one thing that separates Silverlight 3 from the competition, what would that be?
For enterprises in particular, the ability to write .NET code -- server side, middle tier, and now client side-inside the browser, and getting Web-based deployment -- that’s something that no one else has. If you look at Ajax you have this impedance mismatch of languages. If you look at [Adobe] Flash and Flex, you might be using .NET or Java on the server and end up having to map it. The ability now to do business rules once, to do validation logic once, and then to have it run on both the client and the server -- and then have those clients be any type of device or operating system… well that’s going to impact enterprise productivity. That’s the promise of Silverlight, that ability to take .NET everywhere.
We’ve heard concerns from enterprise developers who say that Silverlight’s security sandbox inhibits its use for enterprise apps/intranets. What is Microsoft doing about the restriction to Internet security zones?
When you’re running client code in Silverlight, by default we restrict that code from accessing your file system or doing anything that could hurt your machine. For Internet-based apps, that’s critical. You don’t want to visit a site and have it access your documents without your permission. So, with Silverlight 3, both our in-browser and out-of-the-browser models both support a sandbox mode like that. But let’s say I do want to have local file system access, because it’s a sales app inside the firewall. With Silverlight we allow you now to open files locally, but it still requires user permission. One of the things we’re looking at for future releases is an option, especially for enterprise apps, that allows an administrator to grant permissions.
Is that something that’s in the works at Microsoft now?
The truth is, people who want to use Silverlight for enterprise full-trust apps still represent a relatively small portion of the market. It’s something that we haven’t built yet, but it’s something that we are considering.
Among the biggest changes in this release is the new out-of-browser capability. It puts you in head-to-head competition with Adobe, which has Flash for inside the browser and AIR for apps that run outside. Why did you add this capability?
It was the next logical step in the evolution of Silverlight.
Weren’t you worried that it would break your security model?
Especially for this first release of that capability, we tried to nail the user-experience model and the security model, so that people will trust it. You often hear people say that inside the browser is safe; outside isn’t. We’ve really tried to change that perception with Silverlight 3. That way you don’t have to worry about that app accessing your private data or leaving something behind that could junk up your system.
The popular TweetDeck Twitter client, which is an Adobe AIR application that lives on the desktop, but acts like a Web app, is often pointed to as the quintessential out-of-the-browser application. What types of apps make sense for Silverlight outside the browser?
I think we’ll be seeing a lot of data-snacking apps (gadgets and widgets), extended off-line media scenarios make sense, and companion apps for your Web site. In future releases, I’m sure that Silverlight will enable even richer out-of-the-browser capabilities. But for this release, these are the sweet spots.
Are we looking at birth of a bifurcated world split between .NET-with- Silverlight and Adobe-with- Java?
For enterprise RIAs and line-of-business apps, certainly if you’re a .NET shop, Silverlight is a no-brainer. But we’ve gotten to the point now in the development of our stack where we can talk to Java shops or people on other platforms. There’s nothing like Silverlight in the Java world today. There’s JavaFX, but it doesn’t do all the stuff we can do, and it doesn’t have the tooling support.
How can developers debug Silverlight 3 apps? Is Microsoft enhancing its Silverlight test framework?
Because we’re .NET based, you can set a break point in Visual Studio, and it just works. So, the same way you can debug a WinForms app, you can debug a Silverlight 3 app. That said, Visual Studio 2010 will have a fully interactive WYSYG Silverlight designer and much better testing and test-driven-development support. You’ll see a lot more support for Silverlight with that. (For more a complete analysis of Microsoft’s forthcoming Visual Studio 2010, see IDE Evolution)
It seems as though you’re cannibalizing WPF for Silverlight. What’s the latest on Silverlight’s parity with WPF? How close are these technologies at this point? What can developers expect going forward?
WPF plays a very important role for us. It’s sort of like the big brother of Silverlight. Part of the reason we were able to do as much as we have in the past nine months, is that Silverlight is built in WPF. We’re building tools that let you target Silverlight and WPF in WPF.
But what should developers know about the status of WPF in relation to Silverlight?
We are really trying to make sure that we maintain compatibility between the two. You can build XAML in one and use it in the other. Now you can write controls once now and use them in both places. That means that there’s a spectrum of how you can use your skills. Silverlight is great for many things, but if you want to build the richest possible Windows app, WPF is the high end. And it’s not going away.
Is .NET RIA Services going to be preferred over ADO.NET DataServices for Silverlight Data Access?
No. The bits that are being released today for RIA Services, actually build on top of ADO.NET DataServices. So you can think of ADO.NET DataServices as providing a kind of lower layer RAW/REST API, and then RIA Services as a layer on top. We definitely think that there are scenarios where you would want to have a pure REST service model. And then the .NET RIA Services gives you things like the validation, cross-tiering, and higher-level services on top. We’ve worked hard to layer them nicely, so that RIA Services isn’t a competitive technology, but actually just builds on top of ADO.NET Data Services.
When are the plans for Webcam audio support? Right now many developers have to use Flash and Silverlight in the same app to support this functionality.
We’ll be adding Webcam microphone support natively to Silverlight in the future. That’s a feature that’s definitely coming.
Is the new "save file dialog" Microsoft’s answer to print support? When will Silverlight support reporting and printing?
"Save file dialog" now lets you save things locally, which sounds like an obvious thing, but Ajax doesn’t support that today. And there are a lot of things you want to do when you’re implementing that to make sure you’re doing it securely. That’s why we waited until Silverlight 3 to add it. It’s now built in.
Do you have a native print API in Silverlight today?
No. What people typically do is to generate the content on the server, and the Silverlight app would open a window and pull a file from the server—it might be a PDF file, HTML, a Word doc, or Excel. And you can then use print within that particular file. A direct print API that allows you to construct your document on the client side entirely is something we’re looking at for the future.