What I've Been Up To Lately OR "Assembly Hell Redux"
The .NET Framework still has some serious issues to work out RE: versioning. It's not so much that the versioning scheme doesn't work... it's that Microsoft has not put forth a single document on build versioning recommendations, and how to version your assemblies to be easily identified with different .NET runtimes, so the whole .NET distribution infrastructure is extremely fractured. Anyway, over the past several months, I've experienced a problem that has taken DLL Hell to a whole new level, and so I thought I'd share it today.
Several months ago, LonghornBlogs.com started having a serious problem with comment spam. This was the major impetus for creating CommentSpam.org (still offline) and the REST-based services for syndicating comment spammers. I investigated several solutions, all had their flaws. Miguel Jimenez's solution was very poorly architected IMO, and with the site getting such a high volume of traffic, I couldn't afford to slow down the site any more than it already was.
I decided to go with XHEO|FormGuard, which was a clean and well-architected solution, save for the fact that the validation itself wasn't incapsulated it it's own control. So, when I went to implement it, I found out that it couldn't be used with my .Text configuration. Basically, I was using a wildcard mapping to have ASP.NET handle all the requests, so that I didn't have to have directories for every blogger. Unfortunately, with the way .Text handled requests, the Postback architecture somehow shortcircuited (still don't know exactly how to fix THAT problem, but I digress).
So, I had to take that solution out of the picture. Unfortunately, when I installed the XHEO product, it installed another version of their Base Library in my GAC. Well, that version decided to interfere with all the other XHEO products I was using across all my sites. Suddenly, the templating solution stopped working on the new product support site I was building for Interscape, which also used an alpha version of XHEO's object persistence framework, which used a different version of the Base Library than the skinning solution. Oh yeah, and it killed the existing product store we had as well.
Binding redirects, publisher policy files, unregistering from the GAC, specifying probing paths.... none of these solutions worked. I spent days re-creating IIS sites, setting up virtual machines with duplicate configurations... all to no avail. At that point, my only concern was that LonghornBlogs.com stay running. But my problems were about to get worse.
About the same time, I had noticed that Explorer would often become unresponsive when browing files on the hard drive. I kept an eye on the error logs, and after a week or so, I started getting hard drive timeout errors. I started doing weekly backups of the server, and downloading them to my local machine.
Well, last month ServerBeach moved to a new datacenter, taking my servers with them. Unfortunately, my web server didn't make the trip well, and started crashing on a regular basis. So I had to order a new web server. I was able to get a screamin machine with a really fast connection, so we decided to play musical chairs with the servers, and make the new server the database server, and the existing database server the web server. Simple, right? Ha.
Well, the new server had a 100MB net card, and the still-functioning server only had a 10MB connection. So, after moving the data around, and reformatting the old database server's hard drive, I wanted to get the card upgraded. Well, the couldn't, so I had to get another new server, shuffle all the data around again, and re-configure everything.
After a couple of days, I had the new network set up and ready to go. I had everything locked down using the next to last Windows Server 2003 SP1 drop, and the faster connection gave me insane server-to-server VPN speeds. So I was able to start rebuilding my web server. Now, my old web server had about 55 active web applications on it, so I knew it was going to be a headache.
I got LonghornBlogs.com back up and running first. Gave it a new design (thanks to Jaxon Rice, "gostango" in the CommunityServer Forums), and converted the site over with a new build of CSverter that took me a week to refactor. Then I attempted to unravel the mess that was several dozen different backups of interscapeusa.com. Because of all the experimenting I was doing in my attempt to fix the DLL Hell problem, I cannot find clean versions of many of the sites. I did so many things to try to get the darn things working again, I lost track of the original copy.
Long story short - many of the sites are still down. Interscape's product sales and development has been suspended indefinitely, until we can build a new infrastructure. The MasterPages feature of ASP.NET 2.0 is the most like the XHEO|WebSkin templating solution we were using, so after VS2005 Beta 2 is done next week, I'll begin the process of rewriting the corporate sites. But it's still going to be a while before that is done.
In the meantime, the bulk of my focus has been on adding features to CommunityServer. Last week I launched LonghornBlogs.com Mobile Edition, which I created with tips from Bink.nu's webmaster. What you may not be aware of is that the Mobile Edition is a prototype of a version of CommunityServer specifically targeted at devices, which Interscape will release at some point in the near future. I have several other add-ons that are nearly finished, and I'll be able to talk about them soon.
Heh, I didn't realize this was going to be a novel. At any rate, the "Downloads" portion of InterscapeUSA.com are back up and running. so anyone looking for the MSBuild Toolkit or CSverter can go back and grab it. I'll have a new version of CSverter online sometime next week. Got a few more mini-utilities I'll be putting out next week too.
That's it for me. Head on over to LonghornBlogs.com to find out what I'll be up to at WinHEC this year.