Let’s set the stage for this post. It is late May, 2009. The .com bubble has come and gone. The promise of Java driving the Internet never really materialized. It’s out there, but in its own little niche area. But there are two major players in the server-side web market: Microsoft’s ASP.NET and PHP.
I’m a Windows developer. I jump on the Microsoft bandwagon for almost everything and herald their technologies, because that’s where I’ve chosen to throw my alliances. Then one day Microsoft goes out and does something strange. IIS has been the main host for ASP.NET since ASP.NET was introduced. Everything else was supported to some extent, but not as fully as ASP.NET. Then Microsoft releases Windows Vista and Windows Server 2008 with IIS 7 in all of it’s shining glory. (Pause for dramatic effect.) But on the same day that they release Windows Server 2008, what do they also release for IIS 7 in both Windows Server 2008 and Windows Vista? Microsoft released an upgrade with this shiny little technology called FastCGI. And why is FastCGI important? Because Microsoft has been working with the PHP community to develop this little technology that will result in far superior performance for the PHP platform than has been achievable in the past. Fast forward a few months and what else do we see? Microsoft’s new jewel on the horizon, Windows Azure, the Microsoft cloud computing initiative, adds support for PHP in Microsoft’s cloud!!! What does this mean to the Microsoft ASP.NET world?
As a developer, I’ve built my fair share of Windows applications since the .NET framework was first introduced. I’ve built Windows applications and I’ve built ASP.NET web applications. I’ve even built a few web sites using ASP.NET. While I love ASP.NET as a web application platform and will always recommend it for applications, it just hasn’t had the same shine for me when using it to build web sites. I don’t know if it’s the programming model or what. But over time I’ve had less use for things such as the ASP.NET controls that I use for applications when using the controls on web sites. Instead, I find myself moving more to the client and finding out that I’ve had struggles with the client-side model of ASP.NET. A lot of my complaints, such as assigning client-level identifiers, are going to be fixed in ASP.NET 4.0, but still, my experience is that it hasn’t been as easy to develop a content-driven site in ASP.NET.
But then again, this could just be the way that I program or a result of mistakes that I’m making. With all of the problems with ASP.NET, there are also several good things in it such as it’s globalization support and themes. The ASP.NET themes engine is probably one of the better engines that I’ve seen. It’s globalization support is top-of-the-line.
I’ve always held off on learning PHP because I’ve been firmly in ASP.NET’s corner. But as I become more comfortable with the level of support that Microsoft is throwing to PHP, I’m starting to thaw on that and am taking a serious look at the platform. PHP has a huge open-source support base. And they have excellent applications such as phpBB for online forums and Joomla for content management, among others. PHP also can claim the king of all blogging platforms, WordPress.
There are a lot of great web sites and other applications that are being built using PHP. And with FastCGI, there’s no longer any reason for Windows developers to not explore this platform and add it to their toolbox. I’m jumping in. I’ll explore. I’ll compare and contrast. I’ll write the same code in both ASP.NET and PHP to see which one I prefer more.
It’s time to start playing.