Lately, IIS7 has taken a disproportionate amount of my attention, so now that the milestone has been reached, I finally have a chance to unwind my mind. My thoughts are going to be a bit random for a while (at least to me it seems so). But, do not be surprised if I still ooze a bit of IIS7-related information here and there...

To WOW64 or not to WOW64...

While working on x64 and issues surrounding WOW64 support IIS7, it made me realize that regardless of the fact that WOW64 support is considered "App Compat" and support was added to IIS6 in Windows Server 2003 SP1 it is going to be there indefinitely because 32bit code will hang around for a long, long time. So, despite how "icky" and "bizarre" WOW64 looks, it has to work well on IIS7 and likely beyond. Yea, talk about legacy!

The amusing thing to me is that what the IIS product team considers "legacy" right now is probably what users will consider "state of the art" several years from now, when your IT procurement process actually allows Windows Server 2003 SP1 to be installed and supported. And how many web applications/components are YOU going to recompile to move onto an x64 system iat that time? How long are those components going to last? And how many native components will you be developing? Uh-huh...

Sigh... I suspect the current lull of questions about WOW64 is either because people are going pure 64bit all the way, or people simply have not adopted 64bit yet... and I think the latter is more realistic.

And that approach is perfectly fine... though you will certainly be missing out on a couple of performance gems as far as IIS6 is concerned:

  • x64 is a more scalable platform than x86 because you can handle more simultaneous connections than ever possible on x86 - the OS-limit on Non-Paged Pool no longer exists for HTTP.SYS.
  • Larger address space = more cache memory for HTTP.SYS to take advantage of.

More WOW64

Here are some more WOW64 on x64 thoughts to chew on:

  • For Windows binaries, 64bit binaries are in System32, and 32bit binaries are in Syswow64
  • For .Net Framework binaries, 64bit binaries are in Framework64, and 32bit binaries are in Framework.
  • Even more interesting is that the above directories that contain Windows system binaries has WOW64 FileSystem redirection applied for 32bit processes, but NOT the .Net Framework binaries. So, can you tell me WHICH aspnet_regiis.exe should be run for registration with IIS, and for what IIS w3wp.exe bitness?
  • And how should existing and future x86 applications figure out how to install on x64 in WOW64 mode AND deal with the fact that IIS can change its w3wp.exe to be either 32bit or 64bit. I can see the wheels spinning and the eyes glazing over already...

It is all crystal clear, right? Yeah... as clear as a foggy crystal ball...

Hmm, this sounds like a good future blog topic to me... deciding if WOW64 is the right choice (remember, it is supposed to be App Compat), and if so, the Ins/Outs of how to configure/work with it on IIS6 and beyond.

There are a couple of KB articles about WOW64 and IIS6, but "technical editing" and "publication" processes seem to botch up my message in one way or another. Well, no longer. I can now write and publish that information with the exact details and wording that I want, direct from me to you, and no middle man filters. :-) One thing I like about blogging...

Yeah, yeah... I will get back to technical articles eventually. A couple of you have been persistently pinging me about some interesting topics... to be disclosed shortly. I will probably get back to the usual "featured programming" after this weekend.

//David.