Some thoughts from a seasoned developer turned business owner.
As the owner of a Microsoft-centric custom web development company, I am often asked the question, Why don’t you use PHP? There are many people who even come up to me and tell me that Microsoft web development is a conflict in terms. Sometimes, this causes me to reflect and ask myself if this is in fact true. Should I be developing in PHP, or should I continue with Microsoft?
I am not the type to argue that one technology is somehow inherently better than the other. To be clear, we are talking about PHP vs. ASP.Net. I have programmed in both, although admittedly I have much more experience with ASP.Net than PHP. But I am aware of the pros and cons to each platform and have read countless articles about how PHP is better than .Net, and an equal number of articles about how ASP.Net is better than PHP. Each article usually follows with droves of predictable comments where people keep trying to make points that one is better than the other and belittle the other commenters who don’t share their views.
This article is not about why .Net is better than PHP, or even if that is in fact true. Rather, it is about why I chose ASP.Net platform for application development of my clients. I can tell you that I did not choose ASP.Net because it is somehow better than PHP, there’s almost no way to define better in simplistic or general terms. I did it for other reasons as you’ll see. Keep in mind that these are my personal reasons only, I’m sure there are plenty of points to be made on both sides which are irrelevant now since my business is pretty mature and we’re not planning on changing direction anytime soon.
Reason 1: ASP.Net is supported by Microsoft, PHP is supported by a community of developers.
As a business owner, I feel more confident knowing that there is a real company behind my chosen platform. That company is there for me, providing updates and supporting the platform commercially. If I run into issues, I am not limited to posting for help on message boards, I can actually call them if it becomes necessary. Yes Microsoft does charge a fee for support, but at least it’s an option. With PHP, there is plenty of message board help, but there is no one that I could call for help other than perhaps another PHP development company.
Reason 2: ASP.Net has a well-defined garden of features, PHP has a lot of 3rd party plug-ins.
There are many other things that a developer needs in order to build a modern, robust web application that neither PHP nor ASP.Net can solely provide. With ASP.Net though, many of those things are incorporated into Visual Studio or otherwise provided by Microsoft. Source control is one example that comes to mind. Microsoft provides TFS for source control which integrates nicely into Visual Studio, or you can go with a 3rd party solution like SVN or CVS. But with PHP, there is no so-called built-in solution. There are only 3rd party ones which also generally work with ASP.Net so there’s no real advantage there. Change control is another area where TFS shines.
Reason 3: ASP.Net is compiled, PHP is not.
With ASP.Net there is a well-defined separation between source code and front-end code. I can deploy only the front-end pages and a compiled dll to the web server, while keeping the source code locked away safely on my development server. This way there is no ability for someone else to get access to the source code simply though access to the server. This is more secure, and also helps in situations where a client hasn’t paid fully, yet we have the site on a test server where the client has access to it.
Now before I get heat from my PHP friends out there, yes I do know that PHP does get compiled and cached on the server for performance reasons, and I know there are 3rd party pre-compilers out there for PHP, however with ASP.Net it is all built into the architecture without having to expend any extra effort.
Reason 4: PHP is easy to learn, ASP.Net requires more training.
This might seem counter intuitive, but my issue here is that there are simply too many PHP developers out there writing bad code and integrating too big of a variety of 3rd party components. ASP.Net projects tend to look similar to each other, whereas PHP projects tend to vary wildly in both coding practices and included components. With every development platform, yes there are always 10 ways to skin a cat. But since ASP.Net is a more structured platform, the code tends to be more organized. Also, ASP.Net developers tend to be more formally trained, whereas PHP developers tend to be self-taught. This is based on my personal experience with inherited code from both PHP developers and ASP.Net developers, this is not based on any official research or double blind study.
Reason 5: Most businesses run Microsoft software already.
We develop a lot of software for businesses that already have a Microsoft infrastructure. Their internal support folks are already familiar with supporting Microsoft servers and related software, and so it tends to be an easy fit when they now need to support our application. Also, they usually already have all of the software they need, so there are no additional costs to installing a new web application built on Microsoft software. I realize that PHP server software also tends to be free, however it does require additional software to be installed and supported in the enterprise that may not be there already.
It is important to understand that the reasons listed above are my opinions only, these are not facts and there are no absolutes here. I realize there are lots of exceptions. I’m sure there are plenty of formally trained PHP developers, and plenty of self-taught ASP.Net developers. Likewise, there may be more costs involved with building Microsoft solutions than building PHP solutions, but this is not about trying to prove that one is better than the other. They both have their place and there are many fine development companies specializing in PHP for their own reasons.