Remarks by Scott Guthrie, Corporate Vice President, .NET Developer Platform
Las Vegas, Nevada
April 13, 2010
ANNOUNCER: Ladies and gentlemen, please welcome Corporate Vice President, Developer Division for Microsoft, Scott Guthrie. (Applause.)
SCOTT GUTHRIE: Thank you. (Applause.) Well, good morning and welcome to Dev Connections. This is a big week for developers. Yesterday, we launched Visual Studio 2010 and .NET 4.0. And today, I’m excited to announce we’re launching Silverlight 4.0.
This is the fourth of Silverlight that we’ve done in the last two and a half years, and our approach throughout this time has been to ship fast, focused releases. With Silverlight 1.0, we focused on enabling great media scenarios. With Silverlight 2.0, we added .NET support and made it possible to build rich Internet applications. Silverlight 3.0 added new graphical capabilities, including full hardware-based acceleration, and today with Silverlight 4.0, we’re delivering a bunch of new features that make it possible to build great applications for business as well as to enable you to build applications that go outside the browser and run on the desktop.
Silverlight’s now in use in hundreds of thousands of different sites around the world, and it powers some of the largest experiences on the Web, to include experiences like Netflix, Sunday Night Football, the Winter Olympics, last week’s March Madness, and a variety of other great scenarios and sites.
As more and more great Silverlight applications and sites go live, we’re continuing to see Silverlight deployment around the world accelerate. At the PDC last November, we announced that Silverlight was installed on 45 percent of all Internet-connected devices around the world. Today, that number is approaching 60 percent and accelerating rapidly.
We saw a bunch of great momentum around Silverlight and a quick preview of some of the sites that are already built with it. What we’re going to do is spend the rest of today’s keynote diving deep into Silverlight 4.0 and talking about some of the new capabilities and things that are possible with it.
So with Silverlight 4.0, as I mentioned earlier, we’re focusing really on three major scenarios: The first is further defining media capabilities and building the richest possible media experiences. The second is really focusing on enabling you to build great business applications, and then thirdly, moving beyond the browser allowing you to build applications that run not just on the browser, but on the desktop and on a variety of different devices.
So, first, we’re going to talk a little bit about media and some of the new things that are coming with this release. Silverlight 4.0 adds a bunch of new media capabilities. It adds webcam and microphone support. So, you can now, as developers, programmatically get access to the webcam or camera or microphone within your applications, and take advantage of that on the client.
It adds multicached streaming support, which makes it possible for you to deliver HD video inside a network or inside an enterprise without saturating your overall network.
Silverlight 4.0 adds full output protection, as well as offline DRM support, which allows you to deliver premium studio-grade content and enable a variety of different business models.
How many of you have multiple monitors at home or at work? A number of people do. Yesterday with the Visual Studio launch, we talked about how we’re enabling Visual Studio to be used across multiple monitors, with Silverlight 4.0, we’re also now enabling you to stream video and maintain a full-screen video in one screen while working in another. And so you can use this both at home and at work and enable you to kind of have the richest media experiences for high-quality things on the Web.
Our goal with Silverlight is to enable it everywhere, not just on the desktop but also on phone devices as well as in the living room. Last month, we shipped the first preview of Silverlight running on phones, specifically with Windows Phone 7 as well as Nokia Symbian-based devices. You can download and use that today, start building Silverlight-based mobile applications.
Yesterday in Bob’s keynote, then, you saw a great demo of how you can build a Silverlight application for Windows Phone and some of the things that that enables.
This week, we’re excited to be able to start talking about Silverlight running not just on phones, but also in the home, and specifically being able to run Silverlight on TVs, DVDs, as well as set-top boxes, like cable boxes for the first time ever.
Now this doesn’t mean that you’re plugging in a PC. This actually means that you can now run Silverlight actually on the embedded hardware within your home. And so you can plug in your DVD, you can plug in your TV or set-top box, and you can now be able to play both Silverlight media as well as be able to run applications, things like games and apps that connect with your overall social network. We think this is going to enable kind of an even broader use of Silverlight and really light up a whole bunch of scenarios.
And to show that off for the very first time ever, I’d like to invite Larry Olson from my team on stage to show off Silverlight running not on a computer, but on a set-top box and some of the great things you can do with it. So, here’s Larry.
LARRY OLSON: Thanks very much, Scott. (Applause.) Good morning, everyone. So, you’ve all seen Silverlight running on the desktop, you’ve also seen Silverlight running on a mobile device, and as of today, you’re now the first people outside of Microsoft to actually see Silverlight running on an embedded device. So, what I mean by an embedded device, like Scott just said, is a DVD player, a Blu-Ray device, or even the cable box that your cable company may be providing you with.
So all the skills that you’ve learned working with Silverlight over the last few years, you’re going to be able to take not just the desktops, not just the mobile, but you’re also going to be able to take it straight into people’s living rooms. So, what I have here is an actual demo of Silverlight running on a very small set-top box, and the set-top box is about half the size of the keyboard.
And what you see is a fairly typical kind of set-top box experience. You’ve got, you know, your time and some anchors up in the upper-right-hand corner to kind of let you know what’s going on in the world. You’ve got maybe some on-demand sports on the left — sorry, your right side of the screen. Below that, we’ve got some games that you can go and play, we’ve also got integration with Windows Live Photo Gallery, so you can go and see what photos your friends are posting, and then we also have integration with social networking. But, of course, this is a set-top box, so the most important thing I want to see is I want to see actual TV running.
So what this is is Silverlight is actually taking advantage of the hardware on the set-top box to decode and play back 1080p high-def, H.264 video content.
But this is Silverlight, it’s not just video. We can actually bring in a guide. And I don’t know about your set-top boxes at home, but mine, the guide doesn’t look anything like that. So, I can go through to watch something different, maybe I’ve seen Get me to the Greeks maybe I want to go watch some Macgruber instead and see some SNL skit work. Or maybe, you know, I just realized, oh, Ellen Degeneres is on, and I’m missing Ellen, so maybe I want to go record Ellen and set that up, or any number of things.
So there’s a lot of experiences that we imagine that you can build with Silverlight running on a set-top box now.
But Silverlight isn’t just about the rich audio-video experience, although that is a key part of what we’re enabling. We’re also enabling applications. So, one of the applications that I’d like to show you is just a quick little game. So, I’ve been using a remote for this whole demo, and two games that just happen to lend themselves pretty darn well to remote controls are Sudoku and trivia.
So I can actually take this box home tonight, sit down with my wife, and I can actually play through this trivia game about spring break, even though I don’t think my wife or I ever went to spring break and don’t know much of anything about it, although I did get that one.
And beyond that, you know, Silverlight is a Web-enabled platform. So, integrating your set-top box with your friends network — Twitter, Facebook, and other things — is also a key story that we think we can enable. So, here is actually an example of some, but not all of the developer team’s status for the folks that actually helped make this demo a reality.
So the last thing that I think is really cool about that is we actually build this entire demo using the same tools that you’re using right now. We’re using Expression Blend, we’re using Visual Studio. We built this demo on the desktop, and we were actually able to take this and run it directly on the set-top box without any changes. And we’ve been working with our partners at Broadcom and Intel to make that happen. Thank you very much, and I hope you enjoy this. (Applause.)
SCOTT GUTHRIE: Well, Silverlight is not just about media, but it’s also about business applications. And this is even more true with Silverlight 4.0. With Silverlight 4.0, we’re adding a bunch of new capabilities for application development. This includes new capabilities like printing support, rich text editing, programmatic clipboard access, right-click context menu support as well as mouse wheel integration.
Running new features like implicit style so you can create a style once and apply it to multiple controls within your application. Writing drag-drop support both within your app, but also so you can drag and drop things from the desktop into the browser and get programmatic access to it.
We’re adding richer language support. So, we now support bi-di, right-to-left languages, as well as new Indic languages. Which means you can build your apps in Arabic, Hebrew, Thai, or any Indian-based language and have them work great.
We’re supporting HTML hosting support, so you can actually now use HTML as a control within your Silverlight-based applications and integrate that content within it.
We’re adding more advanced features like commanding and model view, view model support. This is kind of conceptually similar to a model view controller approach that we use on the server, and allows you kind of a better separation between your code and your view within your application. And we’re shipping a lot more controls to allow you to build apps even faster.
We’re significantly enhancing the data and networking support with Silverlight 4.0. This includes rich networking options like UDP, WRST, lots of improvements to WCF as well as a new capability we call WCF RIA services. What this allows you to do is very easily retrieve data from the server. You can then operate it on the client, and then bind it back — bind it to any UI, perform validation, and then be able to save changes back to the server. And what’s really great about this is you can write your validation rules once using any .NET language that you want, and they can now run both on the server and on the client seamlessly within your application, allows you great business apps, as you’ll see in a moment.
So we’re pretty excited about some of these capabilities from a raw features perspective. What I’d like to do is just spend a little bit of time now showing off first some of the great applications that you can build with them and the types of scenarios that we think are possible. And to begin with, I’d like to invite Franck from Ormetis on stage to show off a really great Silverlight 4.0 data application that his company is building and shipping. So, here’s Franck.
FRANCK JEANNIN: Good morning. (Applause.) So I’m with Ormetis, and what we do at Ormetis is we make data transformation and migration really easy. And to illustrate that today, I’m going to show you one example where we take data from HR, we combine it with data from accounting, and we create data for CRM.
So let’s start with HR. So, the company we’re working with today has actually four HR departments. And I asked them to give me a list of their sales people. So, because there are four HR departments in four regions, I get four lists. And because it’s done by different people and they use sometimes different systems, those lists are similar, but they’re not identical.
So let’s look at two of them. So, as you would recognize, they are CIV style, so that’s a very easy format. I mean, that’s a format you would find everywhere. The problem is, it’s not very well defined.
So, for instance, I notice here that the first file is comma delimited, the other one is semicolon delimited. The columns are not in the same order. This is the kind of difference I can spot right on, but there may be more subtle differences. So, that should be relatively difficult to incorporate or to integrate those two files.
With Ormetis on top of Silverlight 4.0, and that’s currently running in the browser. Let’s take the first file. OK, so that’s my first list of sales people. That’s 59 of them. And now I want to integrate the rest of them. I’m going to take the other file and just drop them on top of it. OK, so you see now 233 sales people. So, I’ve combined all the files together.
That was really easy, but that’s running in the browser. So, what happens if I don’t have an Internet connection? Well, sometimes you want to do stuff offline because there may be places where you don’t have an Internet connection. That’s possible in Silverlight 4.0 as well. So, we just right-click on the application and say install. And this is going to install the application, and from now on, that’s going to be the application, although it’s the same code, it’s the same Silverlight application, and it’s not even Windows specific, it would work great on Mac as well, that’s exactly the same thing.
OK, let’s go back to those files. So, I’ve shown you already how to combine four text files. Now I’m going to show you another way to do it, same thing, but different method. Instead of dropping the files, I’m actually going to drop the folder that contains the files. And if I get that, I get a slightly different result. I get four slices, it’s kind of a three-dimensional view. I get four slices, each slice being a style, OK? So if I want to get the same results as before, I need to ungroup that so I get a flat view of my file.
OK, that’s still 233, that’s reassuring. So, there’s too much information there. Now, columns I want to get rid of. So, I’m just going to select them. So, for instance, first name, last name, start date, I don’t really need that. So, I’m just going to delete that. OK. And right now, I notice that the structure is wrong — maybe wrong is too strong a word, but it’s not what I want. I want one industry column. So, if Bob is selling to two different industries, I want Bob to appear twice in that list. If Kate is selling to three different industries, I want Kate to appear three times in that list. So, it’s a fairly complex transformation of the file, but I need that in order to merge that file with the rest of the information I have.
So let’s try to do it. I’m going to group on the bits that don’t change, the bits that belong to every salesperson in the company, e-mail and state. And I’m going to group on that. What I have now are slices, so they are bits of information, and here it’s only one role each time for each sales person on the list, and the list of industries on the right.
But that’s not what I want. I really want columns, so it sounds like a rotation kind of thing to me. So, let’s take that and rotate it. OK, so now I have a column for each salesperson and the list of industries he or she is selling to. And while I’m at it, I might as well as remove the empty rows. OK, so now we’re at what I want, for each salesperson, I have a slice of information with the list of industries. So, it’s as before, I’m just going to ungroup that, and I’m done with that file. Bob Smith is there twice because he’s selling to two different industries, Kate is selling to three different industries, so Kate is there three times, et cetera.
OK, let’s put that aside for a minute and let’s focus on the customers. So, I have an Excel file here, which is actually quite big, so it’s going to take a few seconds to open. And that file contains all my customers. So, it’s actually 10 spreadsheets, so one per industry, but for each industry, I have a list of all my customers. So, what I need to do here is declare the first row as header and then as before, I’m just going to ungroup. And here we are. You probably can’t read that, but that’s 81,436 customers. That’s quite a few customers. They’re all there.
Again, there are columns that I don’t really need for my transformation today, so I’m going to get rid of them and give us a bit more space. Delete. Here we are. And now what I want to do — and I know I have a very technical audience here, so you’re probably going to recognize less inner joined, but we find it too complicated. What I want to do is for each company on the left, I want to assign one salesperson on the right. And that’s based on the composite key, that’s based on state plus industry.
So that’s a fairly large file, fairly complex transformation, let’s see how long it takes. Done. That wasn’t very long. And that, in effect, is the reason why we decided to do it with Silverlight and not with Flash. I’m not going to criticize Flash, I mean, Steve Jobs is already doing it full time (laughter). But my point here is last time I checked, in Flash you couldn’t create new threads. So, that means if you have a multicore CPU, your application is only ever going to use a fraction of that CPU, and clearly that wasn’t an option for us. In order to have the most responsive, the really sleek application working with big files, we needed to use all the power we could get out of the CPU. So, in the end, choosing Silverlight 4.0 was really a very easy decision to make. Thank you very much for your attention, enjoy the rest of the keynote. (Applause.)
SCOTT GUTHRIE: So Franck just showed a really great example of taking advantage of all those new Silverlight 4.0 capabilities to build a business application that lets you work with data in a very textural-based format way. And you saw the great power of performance that Silverlight 4.0 gives you with that.
This next demo, I want to show off a new capability that we’re adding to Silverlight 4.0 that we call pivot. Pivot basically allows you to work with data that’s visual and, again, takes advantage of the full hardware-accelerated graphics support within Silverlight to allow you to kind of sift, view, analyze data in a very rich way. And so to show off pivot, I’d like to invite Jay on stage to show us a demo of it. (Applause.)
JAY GIROTTO: Thanks a lot, Scott. Pivot is a new way to actually experience and explore information, and it’s only available in Silverlight 4.0. It provides users with the ability to transverse thousands of items, to pivot by facets, zoom in on a group of objects or a single item, to be able to see the forest, the groves, as well as the trees all within a single Web page.
There are many benefits for consumers and enterprises, and I’m going to show us one here to start with. So, what we’re looking at here is the Sports Illustrated vault, all the covers ever published by Sports Illustrated, running in a Web page.
We can easily search across this information. So, we’ll look for a famous sports figure here, take a look at Michael Jordan. Now, it’s going to bring up Michael Jordan’s covers, there are all set up by the time period, in terms of the timeline view. Now, we can drill in here, we see he was more popular in 1998, they probably won the championship there, and let’s go grab a specific cover here and take a look at it. Once we drill in and focus in on this, now we’re looking at one item. We can quickly back up and take a look at all Sports Illustrated covers that related to basketball.
This is a great example from the content publishing industry, but there are also applications on the enterprise side of things.
So here’s one from Zumiez. Zumiez is a mall-based retailer of action sportswear. They had a problem in terms of actually thinking about how they do assortment across their different SKUs in their different stores.
So here we have a representation of all the SKUs that they actually show. Let’s say they were worried about their beanie assortment. So, we’re going to focus in here on their beanie assortment, and we want to take a look at the ones that have really high sales volume. So, let’s grab the high ones, and then we’ll grab the medium ones as well and we’ll take a look on this particular beanie. And maybe we want to see how this beanie actually performs in one particular store. And so then we can take a look at the assortment of all the products that are in that particular store.
This is a relatively simple process to actually build these collections and drive this information. So, I’m going to switch over now to actually show us how easy and straightforward it is by building a collection that relates to new cars.
Pivot requires really only two inputs: One is a set of images and the second is the data, the fastness of the information that are related to those images. So, I probably have an image directory here, we’ll have a bunch of images of new cars. I built a simple info graphic that actually combines the car information along with other information around the — including fuel economy as well as estimated fuel costs and MSRP.
So now I pulled in all of the facet information into an Excel file. We have a simple Excel tool that’s available to developers, we’re going to have another set of more sophisticated command-line tools that will be coming out. And here, I’ve associated this specific image with a set of body styles, make, MSRP, lowest reported by average fuel economy and such.
I take this particular collection, I publish it out. I did this backstage because it takes a few minutes and we’re pressed for time. And the output of this, the process of publishing, are two things as well. One is a set of image tiles using the existing Deep Zoom capabilities of Silverlight. So, these are the image tile directory here. I’ll go ahead and grab an image tile to show you that they’re there. This will be a corner of a particular image. There we go. Car logo image there. And the other output is an XML file that transforms all the data associated with the various images so that the pivot Silverlight control can process it. We see our things like average fuel economy, body style, experts’ ratings, MSRP within here.
The next step is simply to fire up a Web page, which you have running here in any browser, I chose IE today. We put on here the pivot Silverlight control that’s available in Silverlight 4.0. We have the destination for the XML file. And when I load this file, all it’s going to do is pull images and XML data across a Web server and display it here in this Web page. Nothing more complicated than that. So, I hit load, it goes and grabs the data, and up comes my collection of new cars.
Now I wanted to go in here — let’s say I want a car that has decent fuel economy, but I want a nonpractical body style, I want a sports car. And let’s say I want to take a look at — let’s say some more exotic sports cars like a Lotus or a Porsche, right?
I go and grab one of these particular Lotuses, and I can go and take a look at this. We have the full functionality of Deep Zoom that you guys are familiar with with previous releases of Silverlight that’s actually in here.
So we look forward to working with all of you to help build great applications like this, also consumer Web experiences as well as within the enterprise driving business intelligence decisions. Thank you. (Applause.)
SCOTT GUTHRIE: So one of the things that we think is critical in terms of building great applications is having great tools that help you be successful with them and make it easy. And I think, you know, in Jay’s talk there, you just saw kind of a glimpse in terms of kind of some of the productivity type of improvements that we’re looking to enable, and literally make it easy so if you have images, you can load up Excel, you can basically very quickly create a pivot collection, drop a control on a page, and you have a great visualization experience on top of it. That type of productivity is what we’re trying to look to enable for all types of scenarios with Silverlight.
And to do that, we have two great tools that enable you to do that. One is Visual Studio 2010, which we shipped yesterday, which now provides a rich development experience for Silverlight. This includes a WYSIWYG designer with full UI support not just for dragging and dropping control, but for deploying styles, for doing layout, and for writing code obviously against it, as we’ll do in data binding. We also support full Intellisense and full debugging support as well within it.
We’re also then shipping a new version of Expression we call Expression Blend 4, which will take full advantage of Silverlight 4.0’s feature set, and provides a great experience for designers as well as for interactive developers to be able to work on applications. And our strategy with these two tools is to allow you to actually work on the same project with both of them so they share the same project file format. You can create an app with one tool and open it in the other and vice versa. And if you’re an MSDN premium customer, both tools are actually included as part of your MSDN subscription.
So to show off how kind of how you can take advantage of Visual Studio 2010 with Silverlight 4.0, I’d like to invite John Papa on stage to show off a great data scenario with it. So, thanks, John.
JOHN PAPA: Thanks, Scott. (Applause.) Hey, everybody. So, Scott mentioned Silverlight allows you to build very feature-rich business applications rather quickly and easily. So, we’re going to talk a little bit about what we’re trying to build first here, and I’m going to build an application for you in my time slot.
So this is an application that I’ve got up on screen. This is a screenshot of what I’m trying to build. I’m going to build an online bookstore to rival the big boys, all in five minutes.
So here we can use a tool to do that. We’ve got a book club application with categories, a book of the day that we can try to sell in our store, and in the middle we’ve got a list of our books that we’re trying to sell as well, and we can do paging and sorting, and here you can see a book sold by John Papa.
So in this application, we’re going to switch over to Visual Studio tools and we’re going to start off by talking about what do we have to build this application. And we’ve got Visual Studio, we’ve got WCF RIA services, and we have Silverlight. These are the tools that are going to help us build here. And to start off, I’ve already got a database with a bunch of books in it. So, we’ve got our book products, and here we’ve got a data model we’re looking at with books, a book of the day to sell, and some categories because each book is in a set of categories like technology or science.
So we have our database and then on top of our database, we’ve got an entity framework model. In this case, we’ve got — using Entity Framework 4.0, and we’ve got the model up here which is mapping to that particular database. So, I want to expose this model from my service side to the client side so Silverlight can consume it.
So to get there, I’m going to need to take that model and any business tools or logic it has and expose that using WCF RIA services. To do that, we’re going to use the tools to come down and create a new RIA service, and we’re going to name that domain service a book club service.
So here I’m going to type in a book club service. And automatically, the application is going to say RIA services notices I have an entity framework model. If there were other models in here, I could pull it down from the pull-down list, or create a new one. And here I want to expose the book, the book of the day, and the category. I’m not going to do any metadata at this time, but I do want to allow editing of books because like any good online bookstore, as you know, it allows the consumer to change information about the book on the Web site.
So we’re going to go ahead and generate the service. Work with me, people. So, we’ve got this here. It’s our new domain service, and automatically generates ad query on the server side that’s going to be exposed to WCF RIA services to the client.
Now, by default, it’s exposing all the books, but I don’t just want the books. I want to get the books in a specific sequence. So, I’m going to use the syntax here with the Intellisense casing of Visual Studio to do an order-by statement, say give me all the books sorted by book ID. And there are some categories here. Let’s list those by category order using the same syntax. And it will list them by category name.
So I’ve got some order buys. Now, I can also change or add new services if I want to. So, the book of the day, in my model, you remember you notice I had a book of the day which relates to another object called book. Now, by default, you’re only going to get the book of the day if I return these book of the day objects, but I want them to return their child object as a book. So, I have to do an include statement and tell it to include any books. And then I can build my WCF RIA service and then I can switch over to my client side and actually start consuming this service once the code is compiled.
So over on the client side, I’ve got a couple new windows that I’ve got to take a look at, and all of this is inside Visual Studio’s new design surface. Here’s my application, which a designer has graciously helped me put together and I’m using implicit styling. So, as soon as I put my controls on this page, they’re automatically going to assume, using implicit styling, the look and feel of my application.
So first, I want to go ahead and use the new data sources window and see what appears in here. And for the data sources, it’s going to look and see what RIA services has exposed. Now, it should have exposed books, the book of the day, and the category, using those three services that I just edited.
So up here, you can see, here’s a book. And you can see all the attributes about that book. Now, I can drag down using this ticker the list box, the data grid, details, or using customize, you can go in and choose another control that you might want to use for this, and you can set the default control, which in this case is a list box.
So here, I want to drag my categories and put them over inside of this region, and use a new feature in Visual Studio to reset the layout so it snaps in to consume all that space. Now, I can do the same thing for the book of the day and reset that layout, and then pull over my books over into the center stage.
So once I rest all of these, now I’ve got all my data, and this is automatically going to create a list box in each of those control areas. It’s going to call my domain data service, which RIA services exposes, using a domain context in the client for Exchange tracking. Down through WCF RIA services to my server side. But I want to get more than just the data. I might have 100 books, I might have a million books. I want to be able to do paging, filtering and sorting.
So what I can do is I’ve got this pager control on the bottom and I want to drag the book list box from the data source window onto my pager. That tells the application that now I’ve got two things down to the same set of — same service. And by doing that, whenever I page the items through, it’s going to page through and change the list that I have on the page.
So that’s not all I want, though. I want to do filtering and sorting. So, when I type in something in the text box, I want to change who the author is and only show books by a particular author or maybe by a particular title.
So to do that, like all good developers, I have written code ahead of time. Since you really don’t want to watch me typing XAML. And I could use the designer to do this, and here we go dragging over some filters and sorting. What I’ve done is created a filter descriptor syntax, and there’s two filter descriptors. Basically, the first one right here is basically saying anytime you type in something in a text box, filter out any books for that particular category chosen in the category list box and then the one above it says based upon what the user has selected in the combo box, author or title, go ahead and select the value that they have typed into the text box. And that’s going to filter those out.
And then there’s a sort descriptor, which is going to sort the data in that list box based upon whatever they choose in the combo box. So, I click on the application, but right now I’m just only reading data. And as we know, we want to be able to write data too.
So the next thing I want to do is I want to link in the details about my individual books. As the user selects the books in the list box, I’ve got a book control over here which is set up to be data bound to something. So, what I have to do is use another feature in Visual Studio and the property theme for that book control, I’m going to use the binding picker. This binding picker, I can select the list box and go down to selected item for the book and I choose that. Now, my list box, my book list is now bound to my book detail. So, all the data is bound and wired up. I can also bind in using commanding, my submit button so I can bind it directly to the submit changes method on my domain data source control as well.
So all this works together. And if we run the application now, we should see our online bookstore, and in five minutes, we can now compete with the big boys.
So the application wires up here. We should be hitting the domain service. We see a list of book categories over on the left. Here’s our business categories, travel, here’s our book of the day. And then we select the technology, you can see the list in the middle changes. If I want to find books by a particular author, like Papa, you’ll see there’s a book by a gentleman, looks like a good one. And then you can change the sort order by title, now down here you can see the paging changes as well.
So let’s do some changes. Let’s change in here — type Silverlight or just “silver” and now we can see there are three books written on Silverlight. Well, I do want to allow editing of the books because maybe I want them to change the price on me — well, maybe not that. So, then here I’ve got the edit button, which is disabled. I have a rule in my application that if you’re not logged in, I don’t want to allow you to edit the book.
So another thing that RIA services allows me to do is by default, it pulls in a lot of authentication and logic and code. And this view pops up for me for logging in.
Now, if I haven’t registered yet, and this logic is all built in as well, I can type in a user name, I can type in some kind of an e-mail, and if there’s something wrong, RIA services tells me, hey, the e-mail address is supposed to match a particular regular expression that I’ve defined. It’s not a valid e-mail, so you must type it correctly.
Now, I have already registered, so I’m going to go back to the login page, and I’m going to try to login. Please turn around, don’t watch my password. So, once I login, I should be able to edit my books. I click my edit page, I can now change something. And I don’t like this at all, this should be this great comprehensive book. I press “OK” it’s now saved to the main data source; if I press submit, it will commit the changes through the data source down through WCF RIA services back to the back end, and into the database.
So in summary, you can see that it’s rather easy and quick to put together with Visual Studio 2010, with Silverlight, with WCF RIA services and the design interface that we have using the data binding stickers, you can use sorting, filtering, we’ve got paging, we’ve got all sorts of great controls and implicit styles and commanding all built in here, rather quickly. You can create a great business application. Thank you all very much. (Applause.)
SCOTT GUTHRIE: So John just showed you kind of some of the productivity wins that you get with Silverlight 4.0 and with Visual Studio 2010. We really think we’re building great business applications, really dramatically simplifies the process and allows you to hopefully focus on what really matters, which is your application and make it successful.
John was showing kind of a new project and some of the — how you went about sort of taking advantage of the new features from kind of a new project perspective. What I’d like to do is actually invite someone on stage who’s been working on a Silverlight project for quite a while, actually, using our previous release. And he’s going to talk about how does Silverlight scale from a giant project perspective where you have tons of projects and thousands of files and how easy it is to bring to VS 2010. So, I’d like to invite Ward on stage, who actually has a better shirt than me, to talk about it. So, thanks, Ward. Here’s Ward.
WARD: Hello, Vegas. (Applause.) Good to see you. Good to see you. Yeah, that was a great demonstration. But what if you have a live production application? What if you’re the UFC and you’re running your business on a forms over data application written in .NET 3.5, WPF, and Silverlight and you’re using it to recruit new members, school fitness classes, operate your club, it’s your business.
Well, you’ve got a lot of assets there. You’ve been working on — you’ve got 117,000 lines and 1,000 files, almost 1,000 classes, more than 150 screens, can you make the move to 2010? You’ve got to bring those assets into the future. The answer is: Yes, you can, and it’s remarkably easy.
So I did this little home video. Watch that timer in the top, because it keeps me honest, and I drag my solution over from 2008 and I drop it into 2010. And the conversion wizard spins up, and we’re going to let that do that a little bit, tick tock, and you see that, and you know everything’s good. So, you can step away and come back in four minutes and it’s converted. And we see that it converted completely. No drips, no errors, no mistakes, that’s looking great.
Now I’m a cowboy. What am I going to do? I’m going to press F5. I’m going to build it. I’m going to build it and run it, and you know what? It works every time on the video. (Laughter.) Here it comes. Woo! Let’s make sure it goes in there, I’m logging in, you have six minutes now and I’m already actually running. So, that’s great.
Now I’m in 2010, wasn’t that hard, but was it worth doing? There’d better be some business value there. And I think there is. There are two things that I am going to show you. The first is that I, in those days, 2008, I designed this in raw XAML, and now I get to see it. Not very helpful, though, I mean, it’s more helpful because I’ve got a feel for it, it’s a list box, but what’s in there, I’ve got no clue.
However, the good news is if I know how to hit these keys, I can get rid of that grid statement. I can uncomment this, which is going to give me design time data, and I’ve got a little class that I spun up using my own objects from the application, and when I do that, chug, chug, chug, ta-dah, I actually know what I’m going to get. And I can actually edit in here and make it look right instead of having to keep running the application to find out whether it’s going to work.
So I’ll save that, I’ll close that, and now I am going to run and tell you about my second favorite feature that you don’t know anything about until now called Intellitrace, it’s the historical debugger. And let me tell you what you need that for. You know, if you’ve got a substantial code base like I do and you’re using some advanced architectures, dependency injection, pub sub, things are flying in from all over the place, and it’s kind of mysterious. Right? And you can try and step through it with a debugger, but what’s that going to be like? You get to a certain part and then you say, oops, how did I get here?
What you want is a tape. You want a tape of the whole show, and you want to be able to play it backwards and forwards. So, what I’ve done is I’ve spun this up, right, but behind the scenes, Intellitrace is watching. So, I will press as admin here and login and maybe I’ll make it so that you can all see it. And this is a multitenant app, runs many different kinds, so we’ll drill in. And I’ll go to the class thing because what we’re going to do is we’re going to try and go to that view that we were just looking at. It’s under classes, so I can maintain classes. There’s the view, oh, I can drill in on a particular class. OK. So, we get the idea. So, now I shut that down and yeah, my session has stopped. I could have been debugging in there. But why would I do that? I do this so much that I keep a little favorite place right here. And I’m going to drag this trace log that was accumulating all that time right onto the canvas.
All right, and look at this, I’ve got all of these threads. I can see what happened, and it’s a timeline of what happened. I can also see I’ve got a whole heck of a lot of exceptions here that maybe I didn’t even know were going on. So, I’m actually kicking off the debugging session, it took me right into the middle of my code, and over here I can see all these throw and catch, throw and catch. We’ll I’ve got to come back to that some day, but right now, I really want to get to what’s happening in my application I was originally interested in. And you can see I’ve got all the gestures, all the buttons I clicked, right there.
I’m actually really interested in how this particular view was created. And so I have this here. And what I’m going to do, nice feature of Intellitrace, see this search for this method in the trace log? I’ll do that and it finds where in that timeline that actually happened, and it takes me right to the constructor. Now I pretend I’m in a debugger live. I’m not, but it looks like I am. So, if I F10, what should happen? I should step in. F11? What should happen? I should go into load combo boxes and I do.
Better yet, this is something you can’t do, well, I’ve got to step back out, I’ve got to get back out to that constructor, right? I’ve got a call stack down here, I can navigate to some other part and see how all of my views were composed. I can see autos, I can see locals, local variables, all — not real time, but playing it back and forth so I can move back and forth.
So what do you take away from this? Well, I’ll tell you what I take away from this. I really can move a big honkin’ application from 2008 right into 2010. I have these great features so that when I design my screens, I can actually see what I’m doing and save time doing that. And when life gets mysterious, I have Intellitrace to help me walk back and forth and see what’s really going on, who’s doing what to whom under the hood. Thank you very much, enjoy the conference. (Applause.)
SCOTT GUTHRIE: Thanks. Cool. So, all the demos we’ve seen so far of business applications have been running in the browser for the most part. I want to talk a little bit now about running Silverlight beyond the browser and so you can build kind of a more immersive experience that’s persistent beyond the browser. Can be saved on your desktop, can work offline, and enable you both from a consumer perspective to have richer experiences with your end users and from enterprise line-of-business perspective, to have more productive employees.
With Silverlight 3.0, we first introduced some basic out-of-browser support, and we enabled kind of a sandbox mode where you could take applications outside the browser and do a limited set of things.
With Silverlight 4.0, we’re adding to that sandbox. So, we now have richer windowing APIs that you can take advantage of. We have notification pop-up support, so you can do kind of the toaster-style pop-up that you commonly see with clients like Outlook and other applications, even if the application’s minimized. With HTML supports, you can host HTML within your application, and we have drag-drop target support, so you can drag things from the desktop into your app and programmatically take advantage of it.
With Silverlight 4.0, we’ve been also enabling a mode without a browser we call “trusted application.” And this allows you to go even further. This gives you the ability to customize the window and chrome of your application so that you can have whatever stylized look you want around the window you display. Gives you local file system access so you can read and write to the file system. We give you cross-site networking support so that you can call multiple services both within the Internet and on your intranet.
We have full-screen support with keyboard access so that you can take over the entire screen and do rich things. Much richer hardware device support, so you can actually take advantage of a machine’s local system. And on Windows, we’re also enabling COM automation support so you can programmatically create COM objects whether they’re Office objects or any other COM automation object installed on your box.
The combination really lets you do some pretty powerful things. And so to show off a really great Silverlight 4.0 out-of-browser application that’s going to be live shortly from eBay, I’d like to invite Dave Wolf on stage to show off the application and talk about how he built it. So, here’s Dave. (Applause.)
DAVE WOLF: Thanks, Scott. Good morning, Synergy is a software product concept design and development agency. We help customers like eBay to build incredible software products. And eBay came to us with a pretty incredible challenge. They wanted us to help them imagine a new software product targeted at one of their most diverse communities, not just sellers, but the occasional sellers, folks like all of us, right? They wanted us to design how their users would experience and interact with that, and then they wanted to develop it into a cross-platform desktop product and, oh, by the way, you have eight weeks, begin.
I’m really excited to show off to you guys the fruits of that labor here with the eBay simple lister. This runs as a Silverlight 4.0 out-of-browser application. Let’s take a look and let’s list a product.
Now, one of the most important things, as we all know, first impressions matter, right? eBay wanted the first impression of what it was like to install and get this application onto your desktop to be as deadpan simple as they could. So, we’ll notice a few things. First, you guys remember that Scott had said that Silverlight 4.0 had 60 percent penetration around the world. That made Silverlight 4.0 the broadest-deployed technology for getting an application onto the desktop and it made the choice of Silverlight 4.0 really simple.
Not only does it mean that there’s no separate runtime installed, which you won’t see, but let’s install this app and see how quick it is. It pops up, I’m prompted to install the product. And in about two seconds, we’re done. You’ll notice this is a real desktop application. I have a shortcut on the menu here. It’s running here in my task bar. I’m going to actually minimize up the browser. Bring that back up. I could pin it to the task bar, et cetera. Really, really simple.
Now, if we’re going to go simple from there, let’s make it really simple to list a product. Visual Studio 2010 launched yesterday, right? How about we list a copy right here? What we’re going to do is — the simplest way to do this is just start typing it in. So, I can type in Visual Studio — there’s a good book — once I start typing 2010, we’ll see it’s found the product in the catalog. Now, if this is right, I could just click “yes” and just get off and start listing the product.
If for some reason I didn’t find it, I can actually search through all of their standard categories. You’ll notice we were really intelligent about the way we did this. We made a pretty good guess it’s a developer tool for doing development.
But you know what? We can make this even simpler than that. Let’s go ahead and use the Webcam. So, what I can do is click OK here. Remember, Silverlight 4.0 has Webcam support. So, I’m going to sit this just like this and take a picture of it. It’s going to go search the eBay catalog for that barcode, and it’s going to find Visual Studio 2010. (Applause.) And it’s found a whole lot of other information about the product, including what you see here, the average price.
You know, one of the frustrating things for listers is getting the details wrong. So, you’ll notice even when I do something like select condition of the product, I am literally now one click away from listing this product on eBay. What’s that been? Like 30 seconds, right?
You’ll notice we have the price and the shipping. We even have item description populated for you automatically out of the catalog. Except we’re going to go a little further. This version of Visual Studio 2010 is a little bit different. Last night, I got Scott to sign it. So, let’s go ahead and add a picture of the signature that we took when he did that.
We’ll come up and choose to edit the photos on this listing. We’ll see those here. I have a photo here on the desktop. All I have to do is grab it and drag it in. That’s a huge improvement. We know eBay listers use all kinds of cameras from camera phones to desktop cameras to built-in Webcams, but more than that, they end up having to edit these products a lot. So, let’s come in, and we’re going to choose to take this picture and crop it. I care most about the signature part at the top there. We’ll apply that crop. Awesome, save it. We can even come in and muck with the contrast. Let’s make that look a little bit better, much better. Save it, done editing, use it for my listing, and we’re nearly done.
We’ll real quickly jump through to see that we populated everything for you automatically. And you know what? This listing is for — this listing is to be a little bit different. We’re actually going to list this product for charity live on eBay to benefit all the relief efforts going on worldwide with the Red Cross. So, I’m going to change that price to 99 cents. Click next. List it. And we’re done. Live in about two minutes with photo editing.
Now, let’s remember as I said before, this product was conceived, designed and developed in only eight weeks. I want to show you how we did that. And to do that, let’s go through all of those steps from concept to design to development in about the next three or four minutes.
What I’m going to do is use Expression Blend and Sketch Flow to do exactly that. Now, when we kicked this project off with eBay, we actually did it by sitting side by side with them and sketching out, by hand, the designer using something like a digitizer in this case, actually sketching out the app.
Now, in the past, we would click through a lot of these click-through comps and try to give people a feeling for what the product is going to look like. But we also know at Synergy it’s a lot more important not just how something looks, but how something works. So, we wanted to show them how it works, and that’s where Sketch Flow is pretty awesome.
What I’m going to do is bring up Sketch Flow inside of Blend. And we’ll see this here. And what I can do is take those original Photoshop files that we had and import them in. We import them in, we import the entire file and all of the layer information that was included inside of that. What’s awesome about that is I can now use all these individual layers inside the Sketch Flow.
So you’ll see here on the right, I have a slider control. This is a standard old slider control. What I did, though, was style it up using all the sketch parts from the imported Photoshop file. And what that means now is like a real slider control, I can search for the value property, there it is, and I can simply change the value property and actually show this slider control animating like a real control. Pretty cool.
We could also then use the exact same tool, though, in the design phase. So, you notice here, not the sketchy sketches we just looked at, but a pixel-perfect comp of exactly what the product’s going to look like. And then finally, let’s jump into the most fun part of all of this, let’s look at how we were able to develop this.
Now, you remember at the end when we listed the product, a toast pops up. Inside of that toast was information. The product had been listed. We actually use this toast for a variety of things, and I want to show you how we developed the toast that talks about the success of your listing.
Now, the first thing is if you’re going to design a toast that pops up, you probably want to wait for people to close it down. So, you’ll see here, we have this little X in the corner. In the past, this is purely a developer’s task. We’d hand it to the developer inside Visual Studio 2010 and they would wire that up. But what’s great is I’ve got a lot of built-in behaviors inside of blend, including the call method action.
What I can do is take the call method action, simply drag it onto the X, and we’ll see this pops up. I’m going to select the method name out of some data bindings I already have. Here’s the view model. I have a close toast method on the view model, and I’m done, all wired up and hooked together.
Now, the next thing I need to do is get all the information that’s going to be inside of this, all the messages it’s going to give. Silverlight 4.0 has a great new control called the past list box. So, this here is actually just a list box, but instead of laying out all the elements in a list box in a list, I can lay those elements out along any task that I want. In this case, I have a circular path.
So what I’ll do is let’s take the list box and the first thing we need to do is bind some data to it. So, let’s get the item source. We’ll pull it out of the same data bindings. In the data field, want to have a toast data source, and the notification messages, there we go, they’re all bound up. Now, they’re not laying out along a path, so let’s do that. They’re just in the list box now. What I can do is assign the layout path just like that. And now all the elements in that list box are laying out along the circle. Except two strings — not exactly the design aesthetic we tend to strive for at Synergy. Let’s see if we can make that look a little nicer.
What I’m going to do is find the item template. The really great part about these tools is how they all work together. So, these are actually — this is actually a template that is kept as a local resource that was used during the Sketch Flow work. I apply that, boom, that looks a lot better, right?
One thing left to do. What I want to do is make these animate in and out. You’ll notice I’m cropping on the top and left, so I’ve got some on-screen/off-screen paning. What I can do is just kind of rotate these guys in. So, I’m going to choose a storyboard like move right, and I’m going to drop a marker here and I’m going to drop a marker here. And then what I’m going to do is just set a property, which is the start position. In this case, we’ll do 67, and let’s check it out. Pretty nice, right? Templated data bound to a list box, laid out in a path, and animating right in.
But you know, I think I can make that look even nicer — my math is never so good at it, but I want to add an easing function, circle is a pretty nice one for this use. Let’s make it look even smoother, and there we go. In, what, a couple of minutes, we’re able to build the entire toast that’s part of the product.
The speed of innovation of the Silverlight platform and the tools that come along with it have been incredible. They let us do what we do best, and they let us work the way that we work. On behalf of the entire strategy design development team at Synergy, and our incredible partner, eBay, we’re really excited to get this product out to you, and we’re really excited to see you bid up this product, the Visual Studio 2010 for the American Red Cross. So, pay attention to Twitter, I’ll be getting you guys the location to this, and we’re looking forward to getting this in the hands of all of you guys in just a couple of weeks. Thanks a lot. (Applause.)
SCOTT GUTHRIE: I think this is a pretty cool app, and again, it shows you some of the kind of productivity and consumer richness you can do with Silverlight, and it’s really exciting to see eBay go live with this shortly.
The Silverlight out-of-browser support and the capabilities that it enables are useful not just for consumer-based applications, though. Obviously, you can do great enterprise applications with them as well. And to show off a really great enterprise scenario, I’d like to invite someone from National Instruments, one of the largest — probably the largest scientific and engineering software firm in the world. So, I’d like to invite Christopher to show off some great stuff they’re doing with Silverlight 4.0.
CHRISTOPHER: Thanks, Scott. (Applause.) National Instruments creates hardware and software products for measurement and automation systems. For example, during the Beijing Olympics, compact systems like the one I have here were used to monitor the structural health of the Bird’s Nest Stadium.
To build these systems, we created the LabVIEW development environment, which utilizes a graphical programming language that is very natural for our customers to use.
Today, our customers want to create Web-based front ends for these systems, which are deployed in the field. They want to be able to remotely monitor and control these systems from anywhere. Using Silverlight, we have been able to bring our graphical programming language to the Web and have enabled these customers to create these remote monitoring and control applications. Let me show you the LabVIEW Web UI builder.
The first example I kind of want to show you is just kind of an introduction to our system. What we’re going to do is create a simple charting application. The first thing we have is a virtual instrument, or VI. A VI in our system is the fundamental building block for your program. It consists of a front panel, which you see here, which is in the Web version, essentially an XAML panel, and then there’s a block diagram, which is your program code.
Here, I have a Y-loop, which is configured to run continuously, I have some masks generating a random number, which then multiples the value by 10, and then I have some timing code, which will force this loop to run every 100 milliseconds.
To finish up this application, all I have to do is bind the result of this multipler to our front panel. In our system, all you do is you drag a terminal that we created for you onto your diagram and then wire it up.
When we wire these terminals, we will automatically create a data binding from our program code to your front panel. In this case, we’re going to data bind to the property value — to the value property of the chart.
Let’s go ahead and run it and see what happens. There you see now we’re charting random data. So, we’ve just completed our first Silverlight application written in Silverlight.
The next thing I want to show you is the control of this system here. This system is set up to simulate a temperature monitoring control application. It consists of a thermal couple to measure the current temperature, and then it has a heat lamp and a fan to regulate the temperature of this chamber.
The first thing I want to do is install our application as a trusted application. We’ll just do that from the welcome window. With Silverlight 4.0, we’ve been able to customize the window style to kind of meet what you’d expect for a ribbon application. To get this application started, I’m going to open a project. I’m going to open it from your “my documents” folder. So, see here, now all the VIs that are in this project, we have direct access to, and we can open them without having to prompt the user.
I need to add one more file to this project. I’ll just drag it in. And this is the user interface now of our monitoring and control application.
Let’s go ahead and finish up the program. All I need to do is wire in a VI that will communicate over Web services to this device to read the temperature back and tell it our desired temperature.
I will drag from our project window onto our diagram, and just like before, I will wire our desired temperature into this sub-VI, and then I will wire the current temperature out to the rest of our programs.
This program is now ready to run. Let’s go ahead and run it and see what happens. We are now communicating with this device, reading the current temperature, which is currently 29 degrees and rising. We have our current set point set at 37 degrees. Once the set point is reached, the system will automatically use the heat lamp and the fan to monitor — to control that temperature. You can see the light kind of turning on and off to regulate the temperature of the system.
We can also use this as a remote monitoring solution. For instance, we have a maximum temperature that we don’t want the system to reach, and we can notify the operator if the situation occurs. By sliding this slider lower, we will lower the maximum temperature that’s allowed, and then we can notify the operator. With Silverlight 4.0, we can use the notification window to do that.
OK, we’ve gone out of range, and we’ve notified the operator. We can go ahead and stop our application now. So, again, from Silverlight, we’ve built a Silverlight application we can now build this into that file, put it onto our remote system, and then have remote control access of this from anywhere.
We might want to do some other things. We have some data acquired, we may want to now save this data off for further analysis or recordkeeping. With Silverlight 4.0, we have several options to do that. We can print the panel out, we can copy the values to the clipboard and paste them somewhere else, or using the new COM automation features, we can export this data directly to Excel.
See Excel come up, and we’ve imported our desired set point and the history of temperatures and charted it for the user. They can now do some further analysis or save this for archival purposes.
With Silverlight 4.0, we have many new features available in our applications, and we are very excited about this is going to bring for our customers. Thank you. (Applause.)
SCOTT GUTHRIE: So we’ve added a lot of great features with Silverlight 4.0, enabled a bunch of new capabilities. We’ve also been very focused with this release on the fundamentals in terms of quality and performance.
With Silverlight 4.0, we’ve introduced a new JITr. It gives you about twice as fast performance on your application code than we did before. So, now you can build the richest possible apps as fast as possible, faster than anything else out there.
We’ve also focused on startup, and with this release, we’re about 30 percent faster to startup when you first launch an application while making it really responsive. We’re also adding new profiling APIs so that you can use profilers like Visual Studio or other tools to be able to monitor your applications, identify hot spots and easily fix them.
And what’s great is all the features we’ve talked about today, all the capabilities inside the browser and outside the browser are all built into the core Silverlight 4.0 runtime. That runtime doesn’t require anything else to be installed on the system, works on multiple platforms, works in all browsers. It still takes less than 10 seconds to install on a new machine.
So with 60 percent of machines on the Internet that already have Silverlight installed, shortly after we ship, we’ll start upgrading automatically to Silverlight 4.0, and so all of these features and all of these capabilities, you’ll be able to take advantage of and have a huge audience base that already has the platform installed to do it.
So when is everything shipping? We started the Silverlight 4.0 process in November at our PDC conference when we shipped the first beta of it. We shipped the release candidate here in Vegas, actually, last month at our MIX conference. And we’re excited to announce that we’re shipping the final release of it this week. You’ll be able to download the final Silverlight 4.0 bits along with the Visual Studio 2010 tooling support for those bits starting this Thursday, April 15. And basically, everything you’ve seen here today, all of the scenarios that we’ve walked through, you’ll be able to take advantage of, you’ll be able to build these exact same applications, and you’ll be able to start deploying them to your customers.
You can go to Silverlight.net to learn more. We have a lot of great sessions here at the conference this week, and we’re really looking forward to seeing all the applications and scenarios that you build with it. We’re really looking forward to seeing what you create with it. Thanks a bunch, hope you have a great conference, and enjoy the rest of the week. Thanks a bunch. (Applause.)