<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://unitedblogs.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">James Musson's blog</title><subtitle type="html" /><id>http://unitedblogs.com/blogs/james/atom.aspx</id><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/default.aspx" /><link rel="self" type="application/atom+xml" href="http://unitedblogs.com/blogs/james/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.60809.935">Community Server</generator><updated>2004-04-20T14:30:00Z</updated><entry><title>What makes a good framework?</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2006/02/21/What-makes-a-good-framework_3F00_.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2006/02/21/What-makes-a-good-framework_3F00_.aspx</id><published>2006-02-21T13:52:00Z</published><updated>2006-02-21T13:52:00Z</updated><content type="html">&lt;p&gt;
One of the things that I commonly see in my job as a development consultant is customers that spend a great deal of time 
and effort on building frameworks for their development projects.  Martin&lt;small&gt;&lt;sup&gt;&lt;a 
href="#WhatMakesAGoodFramework1"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/small&gt; and I were chatting about this the other day and based on our 
experience the average framework seems to have the following requirements:
&lt;ul&gt;
&lt;li&gt;It should be expensive and time consuming to build&lt;/li&gt;
&lt;li&gt;It should be come with little or no useful guidance, only minutely detailed API reference&lt;/li&gt;
&lt;li&gt;It should ensure that any product built on it contains a large number of bugs and performance issues&lt;/li&gt;
&lt;li&gt;It should be configurable to the n&lt;sup&gt;th&lt;/sup&gt; degree preferably allowing the location of object instance creation 
to be changed at runtime&lt;/li&gt;
&lt;/ul&gt;
I could probably go on, but you get the idea.  Often the reason cited for needing a framework is to enable the product 
to be developed by "stupid" developers by using "smart" developers to create an environment in which the "stupid" 
developers can't hurt themselves with the sharp stuff.  Now I daresay there are instances where this has worked and 
there are also some excellent general purpose frameworks around, but the majority of examples that I see do not fall 
into either of these categories (and often, it seems, you can switch "smart" and "dumb").
&lt;/p&gt;
&lt;p&gt;
So what makes a good framework?  Firstly I should preface this description with the assumption that I am talking about 
.NET Framework applications.  So in this case I think that a framework should really be little more than some utility 
code (I can think of some common examples that I might post later) and guidance on how to use the .NET Framework to 
achieve a particular class of task in a consistent manner.  'Consistent manner' here is defined as the pattern(s) that 
an architect/designer has chosen as being optimal for a given situation having made decisions about the potential 
tradeoffs involved.
&lt;/p&gt;
&lt;p&gt;
What a good framework isn't is a large, super-configurable behemoth that mandates that developers have to write code in 
a particular way and enables anyone with notepad and a basic knowledge of XML to render all of the assumptions made 
during the development of the code invalid.
&lt;/p&gt;
&lt;small&gt;
&lt;p&gt;
&lt;strong&gt;References:&lt;/strong&gt;
&lt;ol&gt;
&lt;a name="WhatMakesAGoodFramework1"&gt;&lt;li&gt;Martin Parry - &lt;a 
href="http://www.cooboogler.co.uk"&gt;http://www.cooboogler.co.uk&lt;/a&gt;&lt;/li&gt;&lt;/a&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;/small&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=187" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>MSBuild task for .NET assembly versioning (part 1)</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2006/02/07/MSBuild-task-for-.NET-assembly-versioning-_2800_part-1_2900_.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2006/02/07/MSBuild-task-for-.NET-assembly-versioning-_2800_part-1_2900_.aspx</id><published>2006-02-07T09:19:00Z</published><updated>2006-02-07T09:19:00Z</updated><content type="html">&lt;P&gt;
I have been looking at the build process for Visual Studio 2005 projects recently and this obviously includes playing with MSBuild. Firstly it's great to finally have a robust, extensible build tool that doesn't have to rely on Visual Studio but I'll let others wax lyrical on the benefits of MSBuild. Instead I'd like to take a minute to jot down some thoughts on the task I have just built. 
&lt;/P&gt;
&lt;P&gt;
I wanted to create a taks that would manage the version stamps on the assemblies in my solution. The currently accepted wisdom for managing versions says that assembly version ('AV' from now on) should be used as the externally facing indication of the version of your product and that file version ('FV' from now on) should be used both for internal identification of exactly what build of an assembly you are working with and also to distinguish external releases that are compatible (service packs for example). 
&lt;/P&gt;
&lt;P&gt;
So I suggest the following logic should be applied in when building a new version of your assemblies during the normal development cycle: 
&lt;UL&gt;
&lt;LI&gt;If the AV Major/Minor is greater than the FV Major/Minor, change the FV Major/Minor to match the AV and set FV Build/Revision to 0.  Actually in theory this should never happen unless someone has messed up the FV.&lt;/li&gt; 
&lt;LI&gt;If the AV and FV Major/Minors match and this is the first build of the day, increment the Build and set the Revision to 0.&lt;/li&gt;
&lt;LI&gt;If the AV and FV Major/Minors match and this is not the first build of the day, increment the Revision.&lt;/LI&gt;
&lt;/UL&gt;
When you get to Release Candidate ('RC') status for an external build then things change a bit. It is now time to freeze the Build and update the AV accordingly. From this point until the release ships, the revision on both the AV and FV should be incremented together. After the build ships the source tree is branched, the AV and FV Major/Minor should be reset to the next version of the product, the Build/Revision should be reset to 0 and the normal development cycle resumes. 
&lt;/P&gt;
&lt;P&gt;
In the meantime, some maintenance may be required on a released version of the product. The changes should be made in the correct branch of the source tree whilst the AV is kept constant. The FV Build/Revision will continue to increment as per the normal development cycle, but the RC version freeze is ignored this time so that the AV remains the same for the service pack as for the original release. The patched assemblies can be identified by their FV. Now this assumes that you don't actually make a breaking change to the service pack, if you do that then it would probably be better to increment the AV Build, but I haven't specifically handled that particular scenario in my task. 
&lt;/P&gt;
&lt;P&gt;
I will post my MSBuild completed task once I have ironed out the wrinkles...
&lt;/P&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=184" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Blog guilt</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2006/02/07/Blog-guilt.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2006/02/07/Blog-guilt.aspx</id><published>2006-02-07T09:16:00Z</published><updated>2006-02-07T09:16:00Z</updated><content type="html">&lt;p&gt;
Oh dear - this blog is showing serious signs of neglect.  Not only is there a lack of content recently, I am also overrun with feedback-weed.  Kind of reminds me of the 'red-weed' in War of the Worlds (which we watched recently, pretty dire by the way).
&lt;/p&gt;
&lt;p&gt;
So does anyone have some .Text compatible T-SQL that will get rid of all of the Poker and Viagra ads that plague me?  Any contributions welcome...
&lt;/p&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=183" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Videogame character</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2005/05/31/Videogame-character.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2005/05/31/Videogame-character.aspx</id><published>2005-05-31T12:24:00Z</published><updated>2005-05-31T12:24:00Z</updated><content type="html">&lt;TABLE BORDER=0&gt;&lt;TR&gt;&lt;TD&gt;
&lt;A HREF="http://quiz.ravenblack.net/videogame.pl"&gt;&lt;IMG BORDER=0 ALIGN="LEFT" WIDTH=150 HEIGHT=80 SRC="http://quiz.ravenblack.net/videogame/3.png" ALT="What Video Game Character Are You? I am a Thrust-ship." /&gt;&lt;/A&gt;I am &lt;B&gt;a Thrust-ship&lt;/B&gt;.&lt;BR /&gt;&lt;BR /&gt;
I am small and tricky - where you think I am, I probably am not. I can work very fast, but I tend to go about things in a round about way, which often leaves me effectively standing still. I hate rocks. Bloody rocks. &lt;A HREF="http://quiz.ravenblack.net/videogame.pl"&gt;What Video Game Character Are You?&lt;/A&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=181" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Unusual motorcycle</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2005/05/19/Unusual-motorcycle.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2005/05/19/Unusual-motorcycle.aspx</id><published>2005-05-19T13:55:00Z</published><updated>2005-05-19T13:55:00Z</updated><content type="html">&lt;P&gt;Driving on a dual carriageway somewhere around Cambridge the other day I am sure that something very like &lt;A href="http://www.motorcyclefunerals.com/bikes.htm" target="_blank"&gt;this&lt;/A&gt; came past me on a low loader travelling in the opposite direction. &lt;/P&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=175" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Forza motorsport</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2005/05/17/Forza-motorsport.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2005/05/17/Forza-motorsport.aspx</id><published>2005-05-17T15:13:00Z</published><updated>2005-05-17T15:13:00Z</updated><content type="html">&lt;p&gt;
I am up in one of our offices in Cambridge on a workshop a the moment.  In the main foyer, there is a pod demonstrating a new Xbox game, &lt;a href="http://www.forzamotorsport.net/" target="_blank" title="Forza motorsport"&gt;Forza motorsport&lt;/a&gt;.  It seems to be a really good game (not that I am any kind of expert you understand) but what makes this installation particularly cool is that there is a (undocumented, I think) feature that allows Forza to use up to four extra Xbox units as rendering engines (communicating over the network) and here they have it configured with three screens that wrap around you showing the view to the sides as well as dead ahead.  Obviously the input in this case is via a sterring wheel and a set of pedals, but there is also a racing seat that is fitted with actuators to feedback bumps and crashes.  
&lt;/p&gt;
&lt;p&gt;
Awesome!  I just need to get the &lt;a href="http://karen.unitedblogs.com" title="Karen" target="_blank"&gt;finance director&lt;/a&gt; to sign off two more Xboxes and three LCD screens...&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=171" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Windows Server 2003 - COM+ 1.5</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2005/03/24/Windows-Server-2003-_2D00_-COM_2B00_-1.5.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2005/03/24/Windows-Server-2003-_2D00_-COM_2B00_-1.5.aspx</id><published>2005-03-24T10:42:00Z</published><updated>2005-03-24T10:42:00Z</updated><content type="html">&lt;p&gt;
COM+ 1.5 forms an integral part of Windows Server 2003 and has been much improved over the version that shipped with Windows 2000 Server. Features designed to increase the abilities (scalability, availability and manageability) of COM+ applications have been added. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;COM+ Partitions&lt;/strong&gt;&lt;br&gt;
In this release, COM+ introduces support for COM+ partitions, a feature that allows multiple versions of COM+ applications to be installed and configured on the same machine. This feature can save cost and time-consuming effort of using multiple servers to manage different versions of an application or building services into the application to handle different versions of components. On a single machine, each partition acts, in effect, as a virtual server. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;COM+ Services Without Components&lt;/strong&gt;&lt;br&gt;
With COM+ 1.5, you can use the services provided by COM+ without needing to build a component to contain the methods that call those services. This greatly benefits developers who do not normally use components but want to use COM+ services such as transactions or the COM+ Tracker. By using COM+ services without components, developers can avoid the overhead of creating a component that is used to access only the COM+ services that are required.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Application Recycling&lt;/strong&gt;&lt;br&gt;
Application recycling significantly increases the overall stability of COM+ applications. Because the performance of most applications can degrade over time due to factors such as memory leaks, reliance on third-party code, and non-scalable resource usage, COM+ application recycling provides a simple solution to gracefully shut down a process associated with an application and restart it. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Process Dumping&lt;/strong&gt;&lt;br&gt;
Troubleshooting applications in a production environment can be very difficult without disturbing the running processes. COM+ now provides a solution through its new process dump feature. This feature allows the system administrator to dump the entire state of a process without terminating it. 
&lt;/p&gt;
&lt;p&gt;
References:
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/library/en-us/cossdk/htm/complusportal_9o9x.asp?frame=true" title="COM+"&gt;COM+&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgservices_serviceswithoutcomponents_7u5v.asp" title="COM+ Services Without Components"&gt;COM+ Services Without Components&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=170" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Windows Server 2003 - Security</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2005/03/24/Windows-Server-2003-_2D00_-Security.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2005/03/24/Windows-Server-2003-_2D00_-Security.aspx</id><published>2005-03-24T10:12:00Z</published><updated>2005-03-24T10:12:00Z</updated><content type="html">&lt;P&gt;As part of its commitment to reliability security and dependable computing, Microsoft has reviewed every line of code underlying its Windows Server family as part of its enhanced effort to identify possible fail points and exploitable weaknesses. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Increased Web Server Security&lt;/STRONG&gt;&lt;BR&gt;The new basic security features of IIS 6.0 have already been discussed, but there are also some advanced security features in IIS 6.0 that include: selectable cryptographic services, advanced digest authentication, and configurable access control of processes. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SSL Client Authentication Improvements&lt;/STRONG&gt;&lt;BR&gt;In Windows Server 2003 the SSL session cache can be shared by multiple processes. This reduces the number of times a user has to re-authenticate with applications, and reduces CPU cycles on the application server. This leads to a performance improvement of over 35 percent when using the secure sockets layer (SSL). &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Active Directory Application Mode (ADAM)&lt;/STRONG&gt;&lt;BR&gt;ADAM is an independent mode of Active Directory that provides dedicated directory services for applications. Although ADAM independently provides directory storage and access for applications, ADAM uses the same standard application programming interfaces (APIs) as Active Directory to manage and access the application data. The resulting conceptual and programming compatibility makes ADAM ideal for applications that require directory services, but do not require the complete infrastructure features of Active Directory. ADAM does not ship with Windows Server 2003 but it is available as a free download from Microsoft. &lt;/P&gt;
&lt;p&gt;
References:
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsserver2003/evaluation/overview/technologies/security.mspx" title="What's New in Windows Server 2003 Security"&gt;What's New in Windows Server 2003 Security&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsserver2003/techinfo/overview/security.mspx" title="Technical Overview of Windows Server 2003 Security Services"&gt;Technical Overview of Windows Server 2003 Security Services&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/library/en-us/adam/adam/active_directory_application_mode.asp?frame=true" title="Active Directory Application Mode (ADAM)"&gt;Active Directory Application Mode (ADAM)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=169" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Windows Server 2003 - IIS 6.0</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2005/03/24/Windows-Server-2003-_2D00_-IIS-6.0.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2005/03/24/Windows-Server-2003-_2D00_-IIS-6.0.aspx</id><published>2005-03-24T09:56:00Z</published><updated>2005-03-24T09:56:00Z</updated><content type="html">&lt;p&gt;
IIS 6.0 is a ground up rewrite of the previous incarnation of IIS, version 5.0. IIS has been redesigned to improve aspects of all the main feature areas: reliability, availability, manageability, scalability and performance.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Fault-tolerant process architecture&lt;/strong&gt;&lt;br&gt;
The IIS 6.0 fault-tolerant process architecture isolates Web sites and applications into self-contained units called application pools. Application pools provide a convenient way to administer a set of Web sites and applications and increase reliability, because errors in one application pool cannot cause another application pool, or the server itself, to fail.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Health monitoring&lt;/strong&gt;&lt;br&gt;
IIS 6.0 periodically checks the status of an application pool with automatic restart on failure of the Web sites and applications within that application pool, increasing application availability. IIS 6.0 protects the server, and other applications, by automatically disabling Web sites and applications that fail too often within a short amount of time.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Automatic process recycling&lt;/strong&gt;&lt;br&gt;
IIS 6.0 automatically stops and restarts faulty Web sites and applications based on a flexible set of criteria, including CPU utilization and memory consumption, while queuing requests. IIS 6.0 also maintains the client TCP/IP connection when a worker process is being recycled, isolating Web services client applications from back-end Web application instability.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Rapid-fail protection&lt;/strong&gt;&lt;br&gt;
If an application fails too often within a short amount of time, IIS 6.0 will automatically disable it and return a "503 Service Unavailable" error message to any new or queued requests to the application. Custom actions, for example, a debugging action or administrator notification, can also be triggered. Rapid-fail protection can protect a Web server against denial of service attacks.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;XML-based configuration file&lt;/strong&gt;&lt;br&gt;
The XML-formatted, plain text metabase in IIS 6.0 provides improved backup and restore capabilities for servers that experience critical failures. It also provides improved troubleshooting and metabase corruption recovery. Direct editing, using common text editing tools, provides greater manageability.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Edit-while-running&lt;/strong&gt;&lt;br&gt;
IIS 6.0 gives administrators the important capability to change the server configuration while the server continues running. For example, this feature can be used to add a new site, create virtual directories, or change the configuration of application pools and worker processes&amp;#8212;all while IIS 6.0 continues to process requests&amp;#8212;with no recompilation or restart required.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Command-line and script-based administration&lt;/strong&gt;&lt;br&gt;
IIS 6.0 administrators can use the Windows Server 2003 command-line to accomplish many common management tasks. With a single command, administrators can manage multiple local or remote computers. IIS 6.0 also features a complete scripting environment for automating common system administration tasks from the command-line without having to use a graphical user interface.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Support for WMI&lt;/strong&gt;&lt;br&gt;
IIS 6.0 provides full support for Windows Management Instrumentation (WMI), giving Web administrators access to important system management data, such as performance counters and configuration files. The WMI interfaces, similar in nature to the Active Directory Service Interfaces (ADSI) that are still supported, are used in administration scripts and can also be used to modify the XML-based configuration metabase.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Server Consolidation&lt;/strong&gt;&lt;br&gt;
IIS 6.0 performance has increased dramatically over previous versions of the server, with a single server able to host many more sites and applications.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Site scalability&lt;/strong&gt;&lt;br&gt;
IIS 6.0 has improved the way the operating system uses internal resources. For example, IIS 6.0 does not pre-allocate resources at initialization time. Many more sites can be hosted on a single server running IIS 6.0, and a larger number of worker processes can be concurrently active. Starting up and shutting down a server is faster, compared with earlier versions of IIS. All of these improvements contribute to increased site scalability with IIS 6.0.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;New kernel-mode driver, HTTP.sys&lt;/strong&gt;&lt;br&gt;
Windows Server 2003 introduces a new kernel-mode driver, HTTP protocol stack (HTTP.sys), for HTTP parsing and caching, providing increased scalability and performance. IIS 6.0 is built on top of HTTP.sys and is specifically tuned to increase Web server throughput.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Web gardens&lt;/strong&gt;&lt;br&gt;
IIS 6.0 worker process isolation mode also enables multiple worker processes to be configured to service requests for a given application pool, a configuration known as a Web garden.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Processor affinity&lt;/strong&gt;&lt;br&gt;
Processor affinity, when set, enables IIS 6.0 worker processes to run on specific microprocessors or CPUs. Processor affinity can also be used with Web gardens that run on multiprocessor computers where clusters of CPUs have been dedicated to specific application pools.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Increased Security&lt;/strong&gt;&lt;br&gt;
IIS 6.0 is far more secure than IIS 4x or IIS 5x, with many new features designed to increase the security of the Web infrastructure. IIS 6.0 is also "locked down" out of the box with the strongest time-outs and content limits set by default.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Locked-down server&lt;/strong&gt;&lt;br&gt;
IIS 6.0 provides significantly improved security. To reduce the attack surface of systems, IIS 6.0 is not installed by default on Windows Server 2003&amp;#8212;administrators must explicitly select and install it. IIS 6.0 ships in a locked-down state, serving only static content. Using the Web service extension node, Web site administrators can enable or disable IIS functionality based on the individual needs of the organization. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Web service extensions list&lt;/strong&gt;&lt;br&gt;
The default installation of IIS will not compile, execute, nor serve files with dynamic extensions. In order to have them served, each acceptable file extension must be added to the Web service extensions list. This requirement prevents anyone from calling a page with a dynamic extension that has not been secured.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Default low-privilege account&lt;/strong&gt;&lt;br&gt;
All IIS 6.0 worker processes&amp;#8212;by default&amp;#8212;run as Network Service user accounts, a new, built-in account type with limited operating system privileges, on Windows Server 2003. All ASP built-in functions always run as low-privileged accounts (anonymous user).
&lt;/p&gt;
&lt;p&gt;
References:
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsserver2003/evaluation/whyupgrade/top10iis6.mspx" title="Top 10 Benefits Microsoft.com Realized by Using IIS 6.0"&gt;Top 10 Benefits Microsoft.com Realized by Using IIS 6.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsserver2003/evaluation/overview/technologies/iis.mspx " title="What's New in Internet Information Services 6.0"&gt;What's New in Internet Information Services 6.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsserver2003/techinfo/overview/iis.mspx" title="Technical Overview of Internet Information Services (IIS) 6.0"&gt;Technical Overview of Internet Information Services (IIS) 6.0&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=168" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Windows Server 2003 - Core enhancements</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2005/03/24/Windows-Server-2003-_2D00_-Core-enhancements.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2005/03/24/Windows-Server-2003-_2D00_-Core-enhancements.aspx</id><published>2005-03-24T09:47:00Z</published><updated>2005-03-24T09:47:00Z</updated><content type="html">&lt;p&gt;
In the development for Windows Server 2003, much work was done to improve the scalability of the kernel (the core set of functionality that the entire operating system relies on). Detailed analysis, with both software and hardware tools on systems with up to 32 processors, resulted in the improvements being made in the following key areas:
&lt;ul&gt;
&lt;li&gt;Scheduling&lt;/li&gt;
&lt;li&gt;Memory management&lt;/li&gt;
&lt;li&gt;Kernel spinlocks&lt;/li&gt;
&lt;li&gt;Heap&lt;/li&gt;
&lt;li&gt;Processes, threads, handles, objects, and named pipes&lt;/li&gt;
&lt;/ul&gt;
Given that all other Windows application server components (such as Active Directory, IIS, COM+ etc) and all third party applications make use of these features extensively, the scalability and efficiency benefits are felt throughout the entire application environment.
In addition to making great scalability improvements, the changes to the kernel have also had a large impact on performance of the operating system and this is a benefit that can be dramatic even on single processor machines. VeriTest, an independent test lab, has found that Windows Server 2003 outperforms Windows 2000 Server by a dramatic margin&amp;#8212;typically performing two to three times faster on the same hardware.
&lt;/p&gt;
&lt;p&gt;
Compared to Windows 2000 Server, Windows Server 2003 is:
&lt;ul&gt;
&lt;li&gt;Half as fast again as a file server.&lt;/li&gt;
&lt;li&gt;Three times faster serving dynamic Web content.&lt;/li&gt;
&lt;li&gt;Three times faster serving static Web content.&lt;/li&gt;
&lt;li&gt;Three times faster performing LDAP operations.&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;(Averages taken between a single processor and an eight processor machine)&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
References:&lt;/i&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsserver2003/evaluation/performance/scaling.mspx" title="Windows Server 2003 Kernel Scaling Improvements"&gt;Windows Server 2003 Kernel Scaling Improvements&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsserver2003/evaluation/performance/etest.mspx" title="Lab Report: Windows Server 2003 Outperforms Predecessors"&gt;Lab Report: Windows Server 2003 Outperforms Predecessors&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsserver2003/evaluation/performance/benchmarks/default.mspx" title="Windows Server 2003 Benchmarks"&gt;Windows Server 2003 Benchmarks&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=167" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Reasons to migrate to Windows Server 2003</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2005/03/24/Reasons-to-migrate-to-Windows-Server-2003.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2005/03/24/Reasons-to-migrate-to-Windows-Server-2003.aspx</id><published>2005-03-24T09:37:00Z</published><updated>2005-03-24T09:37:00Z</updated><content type="html">&lt;p&gt;
I realise that this is a bit late for many people, but I have been helping one of my customers with a justification to move to Windows Server 2003 from Windows 2000 Server. It is specifically targeted at the main application that they develop which is a .NET Framework 1.1 based smart client app that talks, via Web Services, to a server side app also written for .NET 1.1 (this stores data in a set of SQL Server 2000 databases). I will post a series of articles extracted from this justification. 
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Please note:&lt;/em&gt; this is &lt;strong&gt;not&lt;/strong&gt; an exhaustive list - it is simply the features that are of interest for this particular application. 
&lt;/p&gt;
&lt;p&gt;
But if you are going through a similar process at the moment it might be useful to paste this information into a document for the perusal of the powers that be.
&lt;/p&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=166" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>Once Were Warriors</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2004/05/07/Once-Were-Warriors.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2004/05/07/Once-Were-Warriors.aspx</id><published>2004-05-07T19:47:00Z</published><updated>2004-05-07T19:47:00Z</updated><content type="html">&lt;table&gt;
&lt;tr&gt;
&lt;td border="0" cellpadding="1"&gt;
&lt;p&gt;Well I haven't posted for a while, been a bit busy with catching up on work etc.  Thought I would catch up on a few things that we have been up to.&lt;/p&gt;
&lt;p&gt;The other day we watched &lt;A HREF="http://www.amazon.co.uk/exec/obidos/ASIN/B00004RCKI/unitedblogs-21"&gt;Once Were Warriors&lt;/A&gt; over a nice pasty at my Mum's (thanks Mum).  Wow, powerful stuff (the film, not the pasty).  I felt like I needed a few days to recover.  The film is about a very dysfunctional Maori family living in a run down area of some town in New Zealand (Auckland?).  The husband is a very bitter, very hard and very fearsome man who is not afraid to take his fists to anyone (including his wife).  Definitely worth a watch, but don't expect to feel good afterwards.&lt;/p&gt;
&lt;/td&gt;
&lt;td border="0" cellpadding="1" align="right"&gt;
&lt;A HREF="http://www.amazon.co.uk/exec/obidos/ASIN/B00004RCKI/unitedblogs-21"&gt;&lt;IMG src="/jamesmus/files/film_oncewerewarriors.jpg" border="0" alt="cover" hspace="3" vspace="3"&gt;&lt;/A&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=163" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>DRC web accessibility report</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2004/04/22/DRC-web-accessibility-report.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2004/04/22/DRC-web-accessibility-report.aspx</id><published>2004-04-22T12:34:00Z</published><updated>2004-04-22T12:34:00Z</updated><content type="html">&lt;P&gt;The UK Disability Rights Commission released a &lt;A title="DRC web accessibility report" href="http://www.drc-gb.org/publicationsandreports/report.asp"&gt;formal report&lt;/A&gt; on the accessibilty of 1000 UK web sites the other day (14th April). Not surprisingly the results were not good. Some of the findings:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;QUOTE&gt;Most websites (81%) fail to satisfy the most basic Web Accessibility Initiative category.&lt;/QUOTE&gt; 
&lt;LI&gt;&lt;QUOTE&gt;All categories of disabled user consider that site designs take insufficient account of their specific needs.&lt;/QUOTE&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;QUOTE&gt;Although many of those commissioning websites state that they are alert to the needs of disabled people, there is very little evidence of such awareness being translated into effective usability for disabled people.&lt;/QUOTE&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;QUOTE&gt;Website designers have an inadequate understanding of the needs of disabled users and of how to create accessible websites, and would welcome clearer guidance.&lt;/QUOTE&gt; &lt;/LI&gt;
&lt;/ul&gt;
&lt;P&gt;When I think of disabled people using web sites, I must confess that I normally think in terms of visual impairment (in fact blindness). An interesting point I picked up in the report is around cognitive impairment. The report recommends that web sites should provide what it calls "Easy Read" sections or versions. The example given (the report itself in "Easy Read") is like a child's book; using very simple language and lots of pictures.&lt;/P&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=162" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>CSS woes already!</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2004/04/22/CSS-woes-already_2100_.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2004/04/22/CSS-woes-already_2100_.aspx</id><published>2004-04-22T09:35:00Z</published><updated>2004-04-22T09:35:00Z</updated><content type="html">&lt;p&gt;I was starting to build up the CSS for my cleansed XHTML blog page last night and I thought I must have misunderstood some of the CSS selectors (although they are not that complex).  Having had another look this morning, it turns out that IE doesn't support adjacent and child selectors :-(&lt;/p&gt;
&lt;p&gt;More information can be found &lt;a title="Browser CSS selectors compatibility chart" href="http://www.westciv.com/style_master/academy/browser_support/selectors.html"&gt;here&lt;/a&gt; and &lt;a title="Browser CSS selectors compatibility tests" href="http://www.meyerweb.com/eric/css/tests/css2/sec05-07.htm"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=161" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry><entry><title>CSS and XHTML</title><link rel="alternate" type="text/html" href="http://unitedblogs.com/blogs/james/archive/2004/04/20/CSS-and-XHTML.aspx" /><id>http://unitedblogs.com/blogs/james/archive/2004/04/20/CSS-and-XHTML.aspx</id><published>2004-04-20T21:30:00Z</published><updated>2004-04-20T21:30:00Z</updated><content type="html">&lt;p&gt;For years now one of my main jobs has been persuading people to separate their business logic code from their presentation code in their applications.  It's really a no brainer as far as I am concerned, but it constantly amazes me how many applications I see where the developers and designers seem to have been unable to achieve this even at a fairly simple level.  Now I come from a middle tier background; I am not particularly good with UI technologies.  That is I know the theory but my UIs still always look like crap.  For that reason, I guess, I don't tend to get too involved in what I would consider to be the 'far-left' of the diagram (as I always draw it!), i.e. the pure presentation technology.  A question I am often asked is how to create 'skinnable' sites with ASP.NET.  My normal answer to this is to use a combination of CSS and user (or web) controls to create a site that can be presented in many different ways.  Another common way to achieve this is to use an XML/XSL framework and this enables you to 'simply' deploy a new set of XSL stylesheets for a new look/layout.  I say simply in inverted commas because in my experience XSL development is not necessarily straightforward (mainly due to the lack of tool support, ease of debugging etc).  This approach can often lead to performance issues as well unless you are pretty careful about designing your XPath selectors and stylesheet caching strategy.&lt;/p&gt;
&lt;p&gt;Anyway as I mentioned earlier, I am not always on top of the latest UI related standards and XHTML kind of passed me by (actually more acurately I couldn't really be bothered to check it out until now).  Well I have looked at it now and I like what I have seen so far.  Firstly it removes one of my biggest gripes with HTML and that is that it is not generally well formed and this leads to sloppy code.  XHTML even specifies that for a document to be valid all elements and attributes must be in lower case.  Good - not only does this make the HTML cleaner, but it also means that I can process an XHTML page with my favourite XML technologies.  The thing that surprised me was that the specification actually enforces a separation of document structure and formatting/markup; I wasn't expecting this.  This is really good because it means that a document is not valid XHTML if you stick font tags or (b)s or (i)s in it.  And this leads nicely onto CSS.  CSS is one of those technologies that I have never really got to grips with because I considered it to be the designer's job.  Unfortunately this has led me to ignore some of the possibilities it opens up (although to be fair to myself widespread, consistent CSS support hasn't been around for long even if you consider that it is there now).  What I really like about the combination of these technologies is that the idea of separating data and structure from presentation is pushed even further up the stack and it becomes much easier to write your presentation components to simply worry about producing structured output and then have the formatting taken care of afterwards.&lt;/p&gt;
&lt;p&gt;So I am going to redesign this blog to be pure, valid XHTML and CSS with no table based layout (which is bad for accessibility because complex table structures confuse screen readers) over the next few weeks.  I guess I should point out that .Text (or at least the skin I have applied) makes reasonable use of CSS already, but I want to go further.  I have made a start by creating a &lt;a title="simple static XHTML version of my blog page" HREF="/jamesmus/redesign/jamesmus.html"&gt;simple static XHTML stripped down page&lt;/a&gt; (also available in &lt;a title="simple static XML version of my blog page" HREF="/jamesmus/redesign/jamesmus.xml"&gt;xml format&lt;/a&gt;) that I have validated with the &lt;a href="http://validator.w3.org/" title="W3C online XHTML validator"&gt;W3C's validator&lt;/a&gt; (as you can see by the natty new logo at the bottom of it!)  Watch this space for my journey through the world of design with XHTML and CSS...&lt;/p&gt;&lt;img src="http://unitedblogs.com/aggbug.aspx?PostID=160" width="1" height="1"&gt;</content><author><name>james</name><uri>http://unitedblogs.com/members/james.aspx</uri></author></entry></feed>