Interview With Scott Guthrie
Elden Nelson sits down with the “father” of ASP.NET.
October 30, 2009
Editor's//Comment
Interview With Scott Guthrie
By Elden Nelson
If there's a"father" of ASP.NET, Scott Guthrie may well be it. Guthrie co-founded theASP.NET team six years ago. Back in version 1, he was the key architect,driving the design of the feature set. Today, as Product Unit Manager over theASP.NET and Visual Studio Web Tool Teams at Microsoft, he oversees thedevelopment, testing, and design of ASP.NET. Steve Smith - feature contributorand Technical Director for this special ASP.NET 2.0 issue - and I chattedrecently with Scott to learn a little more about what we can expect in the nextversion of ASP.NET.
Tell us a littleabout the ASP.NET team at Microsoft and how they work to create ASP.NET.
Basically, the team's broken down into three differenttypes of disciplines. First, there's program management, which is responsiblefor figuring out the feature set of the product: What are the features we needto build and how should they work? They work very closely with customers toidentify the common things people do over and over again, and figure outfeatures that address those issues.
Next, there's the development discipline on my team.Developers are responsible for actually implementing the features and designingthe core architecture of the product.
The third discipline on my team is testing. They'reresponsible for testing the product, figuring out the bugs and holes in ourstory and making sure they get addressed.
All in all, it takes us about 14 hours to build theproduct end-to-end on a clean machine. If you count everything that comes fromour team, there's close to 20 million lines of code. It's a fairly big product- lots of moving gears. We do a build basically every single day of the year.We kick off the builds usually in the late evening and have the build out inthe morning. From there, the testing team picks it up, start verifying it, getbugs checked in, and then gets the next build ready for the next night.
This process goes on for a year or two between releases.It's a like a steady, marching machine, where we figure out how to make thebest product possible, build it, test it, and then get it out to our customers.
As we've beendeciding what to include in this special issue of asp.netPRO, we've had to pick and choose from a pretty largefeature set.
Yes, it's a pretty massive release in terms of featureset. I'd say it's as major a release as our version 1 release was. Hopefully,it will take what is state-of-the-art of Web development today and bring itforward. It makes administration and deployment a lot easier. Performance-wise,it's going to scale tremendously. In fact, those are the three core themes wefocused on for ASP.NET 2.0: First and foremost, developer productivity; second,administration and management; and third, speed and performance. If you look atour feature set, you'll find you can put most of the new features into one ofthose three buckets.
What new featuresdo you see as key to supporting those three themes?
Well, for developerproductivity, we talked to a lot of customers and asked ourselves, "Whatare the kinds of things people need to do over and over again within theircode? Is it data access? Role-based security? What are the patterns of thingspeople are having to roll their own solutions for time and time again?" InASP.NET 2.0, you'll see we've component-ized these kinds of features and builtthem into the product. For example, we now support a built-in membership androle management system, so we can store usernames and passwords for you in asafe, secure location, as well as map incoming users into roles you define -without you having to write any code (formore on this topic, see GetPersonal by G. Andrew Duthie. - Ed.).
We've also got Master Pages, which allow you to do UI pageinheritance across a single site, so you can define a single-page template thatdetermines the overall site structure; every page on your site then effectivelyinherits the layout of that template (formore on this topic, see StandardizeYour Site FastWith Master Pages by Paul Wilson. - Ed.).
We have things like a navigation system, which helps youkeep track of links throughout your site. Rather than hardcode links on anyindividual page, you can now define in an XML file or database for the linkstructure of your site. Then, from code, you can quickly figure out what pageyou're on, and what links to other pages you should show.
We have Themes, which allow you to "skin" the UI of yoursite. All these features work well together, so you could, for example, use thepersonalization system to store UI preferences for individual users - whetherthey like the metallic green theme or the wacky blue theme. I can use a themeto dynamically apply a skin to the site, so when that user comes to the site,the appearance is personalized for that person's preferences.
We have Web Parts, which let you do rich portal-stylecustomization of the UI, so that end-users can drag-and-drop bits of the pagewithin the client browser, re-ordering what the page looks like (for more on this topic, see Meetthe Web Part Framework by Stephen Walther. - Ed.).
We augment all these infrastructure features with morethan 40 new server controls out of the box. These enable declarative supportfor data access, security, wizard navigation, cross-page posting, tree views,menus, portals, and more. What would take 100 lines of code today with aDataGrid - paging, sorting, editing, filtering - you can do completelydeclaratively with two lines of code (formore on this topic, see BindYour Data in ASP.NET 2.0 by Steve Smith. - Ed.).
For administrationand management, we're trying to ensure that administrators love ASP.NET asmuch as developers do today. We're focusing on features that enable deployment,management, and the operation of ASP.NET servers. For example, in ASP.NET 2.0,we now have a built-in config management API, so you can programmaticallymodify web.config and machine.config files. This works both locally andremotely.
We also have an NMC admin tool that snaps into the IISadmin tool. Rather than having to write code or work with the XML directly,administrators can directly graphically adjust settings for their Web apps.
We have secure encryption of connection strings insideweb.config files, so it's easier to deploy secrets on your server. We have aprecompilation utility so you can take an app - which is dynamically compiled -and effectively run this utility to generate a pre-compiled version of yoursite, which you then deploy on your server. This lets you find all the errorsup front, and you've got a nicely-packaged unit you can hand off to customersor administrators.
We have new help-monitoring support, so administrators canbe automatically notified when an application on a server has an error. So if,for example, an unhandled exception occurs, we can send the stack trace to theadministrator, as well as a description of all the current server variables andincoming client data for the request that caused the error, so you can identifywhat the problem was.
Lastly, in terms of speedand performance, our benchmarks are getting better. ASP.NET 2.0 will alsobe fully 64-bit enabled for Intel and AMD processors. Basically, this meansyou'll be able to copy over an existing 32-bit ASP.NET application to a 64-bitserver running Windows and that app will automatically run inside a 64-bitaddress space - you can take advantage of much more memory, without having towrite any more code.
We also now include automatic database server cacheinvalidation. This means you can effectively output cache any page UI or cacheany data in the middle tier, then have it automatically be invalidated when thedata changes in the database. You'll hit the database far less often thanbefore - performance will dramatically improve.
What databases doesthis work with?
Out of the box, it works with SQL 7, SQL 2000, and Yukon.It's pluggable, so you could also make it work with any database if you wantedto.
What about IDEchanges?
We have a much richer Web development story in VisualStudio: We no longer require project files; you can now just point at a filesystem directory and we can edit any file within it. We support both inlinecode and code behind, with full IntelliSense and debugging. We have a WYSIWYGpage designer, so that when you're using Master Pages, you can see at designtime what the unified page will look like, with the parts of the Master Pageyou can't edit grayed-out. We now generate XHTML-compliant markup, we now havea validation engine so you can validate your HTML against any option you want.We now have HTML source preservation.
What improvementshave been made to ASP.NET's built-in tracing?
We've unified the tracing models in the .NET Framework sothere's now a single tracing model. When you turn tracing on at the top of thepage, we have a built-in listener inside ASP.NET that will capture all thetrace messages from anything using SystemDiagnostics.Tracing, then output it atthe bottom of the page. You'll also be able to capture trace statements insideyour debugger. So if you're debugging an app and have an output window, yourtrace statements should appear there.
One of the majorsources of pain in ASP.NET 1.x is team development. How is that being addressedin version 2?
First, the source control system is being dramaticallybeefed up. We're making a lot of improvements to SourceSafe in general. Also,by going to a "projectless project" system, we do away with the need to have aproject file that every file in the project has to be listed within. Thiseliminates that single point of contention in a shared development scenariothat can be kind of ugly, frankly, and makes team development that much harder.By doing away with the notion of a project file, that becomes a lot easier. Youcan have a team of developers working on a site, and they can each operate onthe files specific to them, without having them all trying to simultaneouslyupdate the same project file.
You're also nolonger building everything as a single DLL for the Web, right?
Correct. By default, we'll have a dynamic compilationlevel for VS. NET. So - and this isn't true for the Alpha, but will be true forthe Beta - when you press F5, we'll still do a client-side compile check withinyour project, showing you all the errors that will show up. The difference is,rather than persist as a DLL, we also dynamically compile on the server, andthen run it using that approach. So if you just update one file, then pressRefresh on the browser, it will immediately take effect. It will be a loteasier to build and deploy an app - you won't have to constantly be buildingDLLs and worry about getting clobbered by Source Control and so forth.
Once you build your app and are ready to deploy it, youcan also, from within the IDE, use MakeWeb to precompile the app, strip out thesource code, and then deploy a binary into the production directory.
What kind ofporting issues should developers expect as they move from ASP.NET 1.x to 2.0?
Our goal is to be 100% backward-compatible. You should beable to take an existing app, copy it onto version 2.0, and have it work. Thatsaid, we expect that during the Alpha and Beta there will be incompatibilityissues that we haven't discovered to that point. But our goal is to have all ofthose fixed by the time we finally ship. Upgrading should be as seamless asinstalling on the box, going into the admin tool, and saying, "Yep, run thisapp using version 2."
I should also mention that we will continue to be fullyside-by-side compatible with 1.x versions. You can install version 2 on top ofa Win2K server, a Windows XP server, or a Windows Server 2003 box. It runs onthe same version of IIS and on the same operating systems that today's ASP.NETruns on. You can have both installed at the same time and choose which to useon an application-by-application basis. We'll have admin support to enablethat.
What's the timelinefor releasing ASP.NET 2.0?
We're going to release the early tech preview - in otherwords, Alpha - at the October PDC to conference attendees. I should point out,though, that there will be many features that won't be appearing in theAlpha/PDC version that will appear in the final product.
And how about thosewho aren't attending the PDC? When can they look forward to working withASP.NET 2.0 bits?
The first big beta will come out in the first quarter of2004 - probably in the March/April timeframe.
Any advice for asp.netPRO readers as they continuedeveloping with 1.x versions for the next several months?
There are an awful lot of features in ASP.NET 2.0, butthere aren't any significant model changes. The development you're doing rightnow isn't being obviated, but will in many cases be simplified. The same skillsand approaches you've been using today are still valid - there aren't anyfeatures where I'd say, "Oh, don't use that, because it's going away." ASP.NET2.0 is complementary to the development you're doing today.
Elden Nelson is editor-in-chief of asp.netPRO and itscompanion e-newsletter, asp.netNOW.
Learn more about ASP.NET 2.0 Online
For more info and code on ASP.NET 2.0, visit http://www.asp.net/whidbey.
About the Author
You May Also Like