The advantages - and disadvantage (cost) - of the Microsoft Stack are well documented. We choose to use it because it is relevant to all sizes of client business. It is Enterprise-grade, as well as being applicable to smaller systems. This spectrum of use is reflective of our client base.
The second reason that we chose it is risk. When you are solving business problems or creating new opportunities using technology, the important factor to manage is risk. Risk of delays, failure, financial over-runs and so on. A stable technology stack, and one where you have 15 years of experience, allowing us to focus on the business, not the technology.
Our approach is contemporary in many respects and old-fashioned in others. For example, we still prefer to design our databases at the outset rather than infer them through code. In our world, the Model of the MVC pattern is the haven of the application's business logic. Get that right and you have generated longevity and performance into the system.
Yes, it is more complex this way, which is perhaps why others do it less, and it does mean that it takes a more time before development starts and you get to see something. When designing business system it is through the cornerstone on which you build and from where performance and longevity come.
There's the contemporary too, we are in favour of introducing micro-services where possible. It de-risks the development. It improves system longevity as parts of the system can be upgraded or changed without the whole system being re-written. It speeds up development because more than one team can work on the specific parts of the system. Also, it allows for easier extension of the system (to do more things) or scalability (to do more of the same thing).
An example of our typical architecture: