Remarks by Eric Rudder
.NET Briefing Day
July 24, 2002
ANNOUNCER: Ladies and gentlemen, please welcome the Senior Vice President for Developer and Platform Evangelism for the Microsoft Corporation, Eric Rudder
ERIC RUDDER : Well, good afternoon. Thank you for coming to Redmond. More importantly, thank you for coming back from your lunch break.
Bill and Jim talked a lot this morning about these platform waves, and these platform waves are incredibly exciting because they bring new applications and new experiences. And if you think back through the history of our industry, you remember the birth of the PC and DOS and what it was like for you as the user to control the applications that you go to run on your machine, and then the incredible explosion of productivity that we got with graphical user interface and Windows and great applications.
And as we shifted towards the Internet platform, enabling communications and less so about great software titles but more about how content played a key role, and I think we’ve demonstrated that XML Web services really is a new wave, and I think XML Web services key features are really about integrating, tying together applications, systems, people and devices.
Well, it’s really tools that drive the phenomena. If you think about each platform era that we’ve been through, in the DOS era it really was tools like Quick Basic and Turbo Pascal, and to some extent even Lotus 1, 2, 3 macros, that really let developers and users customize their experience, and tools like Visual Basic made a quantum difference in how people were able to create Windows applications. And the same could be said for PowerBuilder for client/server applications, and to Delphi as well.
If you think about the Internet era, think about the content tools we had, they were really new generation tools around HTML and scripting.
And with Web services, the tool that drives the phenomenon really is Visual Studio .NET.
Well, these platform waves are great. These applications, the new experiences and solutions are great, but sometimes it’s hard to actually make the transition. And if you think about what it’s like to be a developer or IT professional, it can be a little bit overwhelming at times, if you think about the new technologies that a developer needs to understand today, GDI, XML, SOAP, UDDI, think about what it’s like to be a system administrator or an IT professional trying to have to deploy some of these things.
Managing a PC network was hard enough, and now think about how new devices play into that matrix, either as a developer trying to write a solution now that supports a variety of different hardware, or deploying it across stuff.
Think about the challenges posed by security. Most of us grew from a heritage of standalone machines, and now everything is connected to everything.
And if you think about the demands that we’ve placed on scalability and reliability, and as we seek to build trustworthy computing into a full 24/7/365 operation, they’re incredible. And of course deployment, right, what developers had to deal with in the past, with the registry and version complex, and how IT professionals need to take their applications and roll it out.
All these great experiences and solutions that developers are creating really don’t mean anything if IT professionals can’t deploy and manage them.
Well, I think there’s hope on the horizon, and it really is the partnership that we’re going to enable between the developers and the IT professionals. And it’s really XML Web services that are going to drive this phenomenon, because IT and developers both benefit from XML Web services. They really enable end-to-end solutions.
And what I’m going to show you today are some ways that Web services and .NET are actually making life simpler for developers and simpler for IT administrators, and how we can all work together to enable these next generation experiences.
Well, Web services are great and I think they’ve really transformed the way developers think about their jobs. In some ways it is a new way of programming, it’s a new paradigm. We’ve gone from method calls to loosely coupled messaging. We’ve gone from operating on a single machine to operating across multiple machines. Standards support is much more important. You won’t be running on one single platform anymore; you might be connecting to multiple platforms.
And when you’re a developer, it’s very important to connect to infrastructure and to people as well, and for developers it’s important to preserve their investments in existing code and to give developers choices about how they take their applications, how they transport data, what protocols they use, how they bind and, again, flexible application topologies, because as an ISV selling packaged software, you may be selling into a small business that operates on one machine, all the way up to large corporations where they might have front-end servers, middle tiers, distributed back-end, really lots of different application topologies that people haven’t seen before.
We think the best tool for developing XML Web services is Visual Studio .NET. And really we’ve tried to combine the best of Windows and the best of the Web into a single tool. We’ve got a great development environment driven by XML with statement completion, great design support, test, debug; but as great as the IDE is itself, it’s really the fact that it’s enhanced by partners that make the toolsets so compelling. We have over 250 add-ins now that enhance the Visual Studio .NET environment.
We did a great job innovating in the language, with not only making it fully object oriented, but making sure that you can just take your methods, annotate them with a little attribute that says Web service, and, boom, you don’t have to learn about UDDI or WSDL or SOAP or any of those things; a great simplification in attributes-based programming.
The tools are enterprise ready. We’ve included modeling, testing, load simulation and enterprise frameworks and templates so that architects can specify how teams of developers can write code in certain architectural patterns.
And, of course, we let you unleash the full power of Windows, because, really, it’s the best user experiences that drive the most customer satisfaction, and for ISVs it’s the best way to make money. The lowest common denominator user interface in the past typically hasn’t been a path to great commercial success, and we remain convinced that the best user experiences, the ones that take advantage of local resources, the ones that work when you’re online and offline, will be the best applications.
Well, I think it’s obvious that developers have changed what they do. They’re now creating applications that expose Web services to both users in their corporations and other businesses, but I think what’s a little bit less clear is that Web services are going to change the development experience itself. We’re actually going to harness the power of Web services to make our tools better, and here to demonstrate that I’d like to welcome Scott ((Guthrie)) to come on out and show us a product that we call Web Matrix.
Web Matrix is a technology demonstration that we’ve put on the Web and we’re letting developers take advantage of it. We have close to 100,000 downloads already. And what we’ve done is we’ve built a nice environment for creating ASP .NET applications and we’ve actually harnessed the power of Web services to make the development experience itself better. And you’ll see these technologies demonstrated today and you’ll see them fed back into Visual Studio as we launch
which is our next generation of Visual Studio, and as we launch VS in the
timeframe and all the way out. I think you’ll continue to see Web services enhancing our product line.
So welcome, Scott.
SCOTT GUTHRIE : Thanks, Eric.
Well, to give you the full Web Matrix experience today we’re literally going to start from the beginning. The machine in front of me right now actually does not have any Web Matrix software installed on it. Instead, what we’re going to go ahead and do is literally download and install it from scratch before you right now.
ERIC RUDDER: Um, Scott, we only have five minutes for the demo. Some of these people actually want to file.
SCOTT GUTHRIE: Well, the good thing is installing Web Matrix is super easy. We’re actually at our public Web site right now. All I need to do is click the download link, enter in my e-mail address, click next twice and click download and away it goes, we’re downloading it literally from scratch right now.
Now, Web Matrix itself is only about a 1.2-megabyte download, which means it will literally fit on a floppy disk. It also means that even over a relatively slow network connection I can go ahead and install it, download it from scratch in about 60 seconds, which is what we’re doing right now.
Now, to complement Web Matrix on the Web site we also have a number of developer tutorials online that people can walk through to see how to use the tool step by step to play with the platform.
What I’m going to go ahead and do right now, given that we just finished installing it, is actually run through a number of those to give you a sense and a flavor of what the tool provides.
So let’s go ahead and kick start it and launch it up.
Now, to begin with what I’m going to go ahead and build is a very simple ASP .NET page, one that’s going to generate dynamic content for any standard HTML browser or device, and to do that I just hit New ASP .NET page and I have a graphical page designer open up in front of me.
Now, the simple scenario I’m going to do is called birthday picker, which is relatively simple but it’s basically going to allow me to pick a birthday or enter my name actually, and to do that I’m just going to drag and drop the text box on the page. I’m going to drop a calendar to select someone’s birthday. I’m going to style it to make it look a little bit more attractive and then we’ll just have a little button here.
And what I want to be able to do is when the user clicks the button just be able to generate right from code to pull out a value from the text box, pull out a value from the calendar and then just format a little message into a label on the page like so.
To do that, all I need to do is double-click on the button. It’s going to dynamically generate a server-side event handler for me and I’m just going to write one line of VB .NET code, which is going to say
to the person’s name out of the text box and just say,
“Hey, your birthday is”
the value out of the calendar. It’s pretty simple stuff; only one line of code.
I’ve built my app. Now it’s time to run it.
To run I simply click the start button here. It’s going to go ahead and deploy this page onto a Web server and launch it within a browser.
ERIC RUDDER: So all it did was it just copied that one file up to the server, and now your application is completely deployed?
SCOTT GUTHRIE: Exactly. That’s all I needed to do. Now I’m running my first .NET application.
I can enter my name, select a date for my birthday, push a button and it spits out a message. It’s fairly easy stuff.
Now, developers by nature are a fairly inquisitive bunch. Once they figure out how to do something simple, they immediately want to explore and do more with the platform. The best way to do that is through a vibrant online developer community, one where I can go, ask questions of others, get answers and once I build up a knowledge base about the platform hopefully contribute and help share my experience with other developers as well.
What we’ve done with Web Matrix is built community hooks directly into the tool to help facilitate this. You can see down here we have a Community tab, so to link off to a community just click the Community tab. There is a number of communities listed here. I’m just going to jump into a getting started one. This is a particular forum that has a couple thousand people that participate each day. You can see there’s a number of questions all from today that people have asked, and we’ll find one, how do I do global items?
Someone poses a question and you can see a whole bunch of people have jumped in.
“Hey, try this, try this. Here’s some code. Here’s some article.”
And finally it says,
“Yeah, there it goes; it solved it.”
I can use these sort of forums to meet groups, participate, get my questions solved and also ultimately form relationships with people all around the world. I might never meet them but hopefully I’ll get to learn these people’s first names and sort of think of them as buddies.
I can obviously contribute in a forum, in a group environment to talk with them. I also obviously want to be able to talk one on one and to help with that we’ve built in instant messaging support into the tool as well.
So, for example, I can have a little buddy list of contacts of people that I’ve met online in the forum system. If I want to go ahead and have a conversation with Bob I can just say,
“Hey, hi, Bob,”
and ask a question of him.
So let’s go ahead and take advantage of this community infrastructure to build another page within the tool.
The scenario I have here is a simple one. I went on a trip recently, took a whole bunch of pictures and I have an XML file right now that has sort of a little photo album of pictures. I have ID, the names of them, pointers to the graphic and also descriptions of who took it and where.
What I want to go ahead and do is I’m going to build a simple photos page. I’ll call it Photos.ASPX. I have a point page here and I’m just going to call it My Photos and it’s fairly easy to colorize it; I know how to do that. The trick now is to figure out well okay how do I take that XML and bind it into UI and display it within my page so I can see my pictures, edit them, add them, delete them, et cetera.
ERIC RUDDER: Well, maybe we can ask someone in the community to help us with our demo.
SCOTT GUTHRIE: Well, that’s good because I’m actually kind of stuck.
So, what we can go ahead and do is go to the community. How do I do this? Well, let’s click off to the XML forum. It seems like a good place to go. I actually asked this question earlier,
“How do I edit sort of XML in a grid,”
and someone jumped in a replied and said,
“Well, built into the platform, there isn’t a direct way to do that without writing some code, but there’s someone in the community that put together a really cool control that does something very similar to what you’re after, and it’s stored on what’s called a control gallery up on the community site.”
And so what I’m going to go ahead and do is go back to my tool and launch our control gallery. This is basically a simple UI that calls some XML Web services out in the community and searches for code and controls that people have written and submitted for others to use.
And so what you’re seeing right here is a whole bunch of categories, and I’m going to search in the data and XML category. And you can see that XML grid that someone suggested shows up. I can pull up details so I’m calling another XML Web service to pull up the details about it. You can see it’s fairly popular. There have been about 5,000 downloads, pretty good reviews. I can even hit a preview to see what the control is going to look like. It looks like it does what I want to do so I’m just going to click the install button. We’re going to go ahead and code download it and install it into my toolbox and now it’s among the palette or sort of control that I can use within my pages and applications.
Drag and drop it on my page, go ahead here and format it a little bit, make it look a little more attractive and then it has an XML file property and I’m just going to go ahead and point it at my XML file on disk.
No code required. Let’s just hit run and see what happens.
And what you can see here is it went against my XML file, pulled out the pictures, displayed them, provided some simple edit functionality so if I wanted to I could go ahead and make changes, click to zoom in and see what they did.
So it’s a fairly easy example but it really shows sort of the power and the ease of use that the tool provides and how addictive it can make sort of playing with the platform is.
As you mentioned, we’ve got about 100,000 downloads in the four weeks that it’s been out. Developers are really going crazy over it. There’s a lot of buzz and excitement. And best of all, all the skills and knowledge that people build up with this tool directly applies into Visual Studio .NET. So once they want to build bigger apps and more professional apps, there’s a very clean skill transfer for them to take.
ERIC RUDDER: Thanks, Scott.
SCOTT GUTHRIE: Anytime.
ERIC RUDDER: So I think you can start to see how, not only in the tools where we’re creating Web services, but this just gives a glimpse of how Web services are going to enhance the developer experience.
We’ve just started to embrace community in terms of looking it up, but if you think about all the things that the IDE understands about your code, how it can auto detect, think about the third party partner opportunities there are for browsing control, sell and compose, trading code snippets, providing counsel and advice. We’re very excited about how Web services is going to enhance the tools themselves.
And that’s good because, again, we have to deal with all these technologies. And I think the first thing that we’ve done in Visual Studio is make sure that you don’t have to learn a whole bunch of technology about Web service. You don’t have to know all of the details about SOAP and packet formats and WSDL and all this other stuff, because the tool natively builds XML Web services. A .NET program is a Web service.
The second thing we’ve done is made sure that we have incredibly broad device support. You can have a single source space that supports PCs, PDAs and phones using our Mobile Internet controls. And when you want to actually execute code on these clients like say an iPAQ or a Jornada or one of that class of device, we actually have a version of the framework, which we call the .NET Compact Framework, which exposes a common programming model on the client as well.
Of course, developers need to deal with security and all this mobile code coming around and the .NET framework delivers a secure environment for managed code.
Reliability and scalability are incredible important. We run Microsoft.com, as a matter of fact, today running Windows .NET Release Candidate 1, we’re using Windows load balancing and transactions, so the amount of scale and stress that we put on it, the amount of reliability we demand and our customers demand for our products is pretty incredible.
And in terms of deployment, Scott showed you installation basically becomes a file copy.
So we think we’ve got a good handle on the developer side bringing these new experiences to the XML Web service platform.
Well, what about the IT professional, right? They’ve got challenges too. And XML Web services transform the lives of IT professionals as much as they transform the lives of developers as well. Just like Web services gives developers a new way to write code, we really are giving IT professionals a new way to manage. And that’s because the services and solutions are defined by XML documents and XML schemas, and we can link what the developer does in its design phase to what the IT professional is doing in their operational and management phase, because we can capture these profiles while we design it and make sure they match while running it. We have continuous self-monitoring and this information is constantly being spit out in XML streams, captured and analyzed.
Of course, for IT administrators it’s just as important that we embrace these open standards, that we’ve got great platform interoperability, and we have broad industry support.
And connection here is equally important. Just like developers want to preserve their investments in existing code, IT professionals want to preserve investments in existing systems. Nobody wants a rip-and-replace strategy. People want to embrace their existing assets, wrap them as a Web service and share them in solutions. We need to worry about deploying to clients or service or both.
And we talked a little bit about security and the challenges there and Bill and Jim both talked about federation. And federation for an IT professional means that you get to choose which business partners you’re going to deal with but trust and what that trust connection is.
So figuring out how all this works together can be quite a challenge.
Of course, we have some products that deal with this today. We have SMS, we have MOM and we have Application Center and they take a view of focusing on both the clients and the servers. For clients we have end-to-end management of end-point PCs and then with SMS with devices as well. We made sure that we safely enact change. You can schedule it. You can set priorities. You can distribute really across the world and we use SMS in how we run the company here as well.
And our server management, we need to manage systems that are both your typical line of business applications inside the firewall, but as you enhance these trading partners and you decide to enter the Web services economy we need to make sure that we can manage the applications that go beyond the firewall as well.
So I’m actually going to show a little demo here with the help of Stewart MacLeod, who’s the architect for our Enterprise Services Group, on how we can use XML Web services to enhance the IT professional’s experience. Welcome, Stewart.
MACLEOD : Hello, Eric. Hi. Thank you.
Management has historically been an afterthought, but now that we’re moving to a new distributed architecture and Web services, we have the opportunity to create a partnership between developers and IT professionals.
Our philosophy is simple: We believe that applications need to be more self-managing. They should be self-monitoring, more robust and easier to diagnose and repair problems.
Now, in order to achieve this, we’re completely changing the rules of the game. Our strategy is to make it easy for developers to add management information to an application while the application is being designed and built rather than as an afterthought and this in turn makes it much easier for IT professionals to deploy and manage those applications.
My team is responsible for the development of the Microsoft Operations Manager and Application Center products, and I’m the architect responsible for our next generation server technology that we announced in May.
And today I’d like to walk you through a very common management scenario using a prototype of the new technology that we’re developing.
Now, let’s assume that I’m the administrator of an HR Web application, and this application allows our employees to manage their 401(k), their health benefits, stock options and vacation time, and the system is being proactively monitored by our new technology, and it’s just sent e-mail to me announcing that there’s been a potential service-level violation because the Web service that manages and calculates the employees’ accrued vacation time is taking too long to execute.
So now I can just go ahead and click and follow the link and this brings up our new management console. And here you see that we have a couple of alerts that have been received, one of them for response time and one of them for CPU utilization.
Now, at the bottom we have what we call knowledge, and knowledge is basically information about what might have caused the problem, what steps the administrator should follow to solve it and it’s really a key asset for us because it’s knowledge that allows the system to get smarter over time and more effectively manage applications and production.
Now, in this case the knowledge is saying that the performance of this particular Web service might degrade due to a very large number of concurrent users. So one of the things though that is really difficult is to troubleshoot and performance tune distributed multi-tier applications. And part of the problem is that typically when application developers build an application they kind of throw it over the wall and IT doesn’t really know what all the components are or what are all the interactions between those components. And in performance tuning, it’s critical, if you want to get the best possible performance of your system, you need to understand how all these components work together as part of the solution.
So let’s jump to our topology view and here we see a complete description of the distributed multi-tier application and some of the information came from the developer and the development tools while the application was being built. So, for example, the application components, configuration, relationships and dependencies, all of that came during the development process.
This information was combined with information from IT as they deployed the application, such as which machines the actual components reside on plus defined their organization’s management policy.
What we did is bring all this information together into a single unified view and then we use it to show the current operational status.
So now we see here that we have an alert at both the presentation tier and our data tier, so I can just click on the alert and I get some more details about the alert and in this case what I’d like to do is actually try to find the root cause of the problem.
So what I’d like to do is take a look at recent performance of the application and here we’re seeing the number of ASP .NET requests per second, and I can see that there hasn’t been a significant increase in the number of concurrent users.
ERIC RUDDER: That looks pretty normal.
MACLEOD: So let’s jump down to our data tier and here we have an alert giving us information saying that CPU utilization on this particular SQL Server is much higher than normal, and so we can jump out and let’s take a look at performance of SQL Server over time and here we see a dramatic change in CPU utilization in green of the SQL Server machine. And typically this is caused by either some kind of hardware failure or some kind of configuration change. And so let’s go and see if there have been any recent changes to the system.
So I’m going to jump to our change log. Customers have told us that one of the most common causes of server down time is either incorrect or unauthorized configuration changes, so we provide very powerful configuration management capabilities.
Now, the developer when they built the application provides information about what the configuration settings are, what settings are actually allowed and even what the recommend configuration of their components are. We use that data to go out and bring the information on a regular basis into a SQL Server database and then we’re able to calculate what all the changes have been to the system over time, and this is just an incredibly useful tool for any kind of troubleshooting.
Now, in this case we see that the SQL Server checkpoint interval had been changed from approximately once every ten minutes to almost three times a second, so clearly this is not a good thing to do. In addition, we see that the auto-tuning capabilities of SQL Server had been disabled.
Now, this is the kind of mis-configurations that are very common by a junior administrator.
And, of course, I could just connect to this individual machine and correct the problem, but what I really want to do is prevent this problem from occurring again in the future anywhere in the data center.
So let’s jump out and take a look at our other production server and here I see a list of all the SQL Servers in my data center, and it’s done a comparison of the current configuration to the recommended configuration from IT and it’s indicating which ones are compliant or not compliant.
Now, of course, I could send e-mail to each of the individual administrators or if I wanted I could also just push out those changes, in this case taking the default recommended by the application developer, and call it make them compliant.
And in this case we create what’s called a management task and the management task will go through and enumerate each of the SQL Servers that I have administrative privileges on, compare the current configuration to the settings that I requested and make the changes necessary, and in some cases it might have to do something like restart the service for that change to take effect.
So we see now that the change has been pushed through to all the servers and if I jump over to the alert view we see that the alert has automatically been resolved.
Now, the reason it’s been resolved is because the root cause of the problem has been addressed and no further IT intervention is required. However, of course, we have the complete record that the incident occurred. And likewise if we jump to the topology view we see that the alerts are no longer showing in either the presentation tier or the data tier.
So hopefully this gives you a quick preview of the direction we’re taking our server management technology. We want to make it easy for customers to deploy, manage and monitor distributed, multi-tier applications and Web services and the key to making that work is creating a new partnership between developers and IT professionals and, of course, like all of the .NET products we’re fully leveraging the ability of XML to share both schema and data so that we can bring information from all facets of the product’s lifecycle together so that we’re able to manage them more effectively.
ERIC RUDDER: Thanks, Stewart.
STEWART MACLEOD: My pleasure, Eric.
ERIC RUDDER: So I think that’s pretty cool. Again, if you think about what IT administrators need to go through today, and the amount of technologies that they need to understand, and the amount of different log formats that exist across database servers, application servers, load balances, we now have a common schema that we can take advantage of through XML, and we can enable a common logging and eventing infrastructure and roll these things up.
Our management software supports PCs, servers and devices with common infrastructure and instrumentation.
We saw in Stewart’s example how we’ve enabled workflow, right? The notification came, Stewart happened to have chosen having e-mail alert, but you can imagine the same list of alerts that Jim had in his system where he could be notified by .NET or an SMS message or your favorite online instant messaging system of choice to alert that, and I think you’ll see other workflow scenarios pervade our management of developer systems as well.
So if you think about an application that’s developed today, maybe it’s an application that deals with an external trading partner and it needs to deal with the firewall, you can think about as the application is developed, managed, you make the decision I need to talk to a partner, mail gets sent out to your administrative staff saying hey, we’re in the process of making this application, we need to open up the firewall, here’s the metadata, here are the specific ports, what are you going to do.
And, of course, it’s important not just to enable the security to work but also to make sure it’s robust and you have the auditing support as well, and all of that will be done using XML technologies.
For reliability and scalability again it’s just as important for an IT administrator and to make sure that we have integrated support for clustering and for caching and that we work well with ISA and, of course, change and configuration management, that’s the heart and soul of IT and admin life, not just in the sense of what you do for your own line of business applications but keeping your infrastructure up to date with things like Windows Update service as well.
Well, I hope I’ve given you a quick preview today of how we’re working to break down the barriers for developers and IT professionals. I think using XML Web services, developers are going to deliver compelling new experiences and applications, and that working in partnership with Web services and IT professionals, we’ll all be able to enjoy them pretty soon.
I think collaboration is going to reach new levels with the technology and really it’s the new generation of tools that are going to drive the phenomenon.