I confess, for years I used to recommend .NET applications for every project that came across my desk. Why not, I’m first and foremost a .NET/C# programmer. In the agency world, you work with the Microsoft team within your organization rarely straying over to the open source cubicles and always ready to brag about how much better your framework was to the others and defend it to the death.
One disadvantage I saw first hand working in this kind of environment, was that every project, large and small, that came in was designed and built on top of an overly complex .NET architecture. The main argument, was always one of abstraction and the benefits of having the ability to swap out the data layer with ease if it ever came to it. Honestly, in all of my years doing this, I have never seen a client ask to simply swap out the data service because they decided to go from SQL to Oracle. Never! On top of that, the maintenance of these projects quickly turned into nightmares as even the simplest of tasks/bug fix, took way longer than it ever needed to be. In the end, these projects seemed to implode due to the fact the foundation was never right to begin with.
When I first started working for myself, I brought the hard-nosed logic with me. I was sticking to what I knew and I knew- .NET and all things Microsoft. Very quickly I found that I was turning down projects that required PHP or where the client preferred using WordPress as their CMS platform. Never wanting to turn down work, I started to say “Yes” when these jobs started to come in and soon found myself learning all sorts of things I never would have if I hadn’t.
With this newfound knowledge, I found that I could better inform clients of the advantages of using a .NET solution versus an open source one so they could make a clear and objective choice. For instance, a recent client wanted to use Sitefinity as a solution because it’s built on the .NET framework which meant that it was stable and could handle a ton of traffic. But, when we really looked at their needs, we actually found that using this platform was overkill for what they needed. In the end, an open source solution was delivered and it fit the client’s needs.
This scenario goes the other way too. There have been plenty of times a large client wanted to use WordPress or Drupal as a foundation for a project that, when analyzed, determined that Sitefinity was a better fit.
So, which is better? .NET or open source? The answer; neither. You need to pick the right solution for the problem.