Neil Bostrom: Microsoft TechEd (Thursday)
Asynchronous ASP.NET Programming
It turns out that threads inside ASP.NET worker process are like hot pokers, you don't want to hold them for long!
Using asynchronous programming in ASP.NET, you can free up more time for the worker threads to do other work (like take more requests). The biggest wait times in your system are always external IO (Database calls, web services calls, file writing etc). By moving this kind of work asynchronously, it always so many more requests to be processed by your application.
The three main ways to accomplish asynchronous programming in ASP.NET are:
Asynchronous Pages
By adding asynch=true to the page header, extra event handlers are available on the page to allow you to wire up asynchronous events.
Asynchronous HTTP Handlers
Handlers are ideal for pulling images from databases or doing general file type actions. HTTP handlers are more lightweight than standard aspx pages as they do not need to load the page control tree model.
Asynchronous HTTP Modules
Modules allow you to control any part of a request coming in or going out. This has the same asynchronous model as the handlers.
Internet Information Services 7 (IIS 7)
A new version of IIS has been developed for Windows Vista and "Longhorn". Building on the success of IIS 6 with accounts to Security and Reliability, IIS 7 takes it one step further by splitting out most of the functionality of IIS into modules. This means you only need to load the modules you need. So if you're just hosting html pages, just load the static content module and nothing else. This makes the attack surface of IIS 7 much smaller than any previous version. Microsoft has also given IIS a new interface that integrates into Visual Studio and can also be access remotely. All the settings are stored using the same mechanism as ASP.NET, in .config files. These XML setting files allow settings to be overridden at any level or block them from being overridden. This makes for a flexible configuration model that IIS has been missing for years.
Continuous Builds
Continuous builds is such an important part of Agile programming that a lot of tools are now being released to support this need. We currently use NAnt with a custom tool for continuous integration. During this session we were shown some of the other players and their capabilities. FinalBuilder seems to be a well established tool with good support for all the common tasks. It has a small licence fee but nothing compared to the huge cost of Team System Foundation Server (TSFS).
Team System Foundation Server is a new Microsoft offering. It's probably one of less complete products but it is trying to do a lot of jobs (Unit Testing, Build, Code Coverage, Source Control, Document Versioning, Bug Tracking and Project management features). Saying TSFS is big is an understatement. The optimal configuration for TSFS is like 4 seperate servers. This is a big expense, let alone the licencing costs.
Labels: .NET, Bostrom, IIS7, TechEd 2006, TSFS
0 Comments:
Post a Comment
<< Home