Architecturally .NET is very much similar to JAVA, except that the core framework only runs on windows or other Microsoft supported platforms. However the .NET framework and Application Server (IIS) is not open. One will not have the flexibility to add custom modules as easily as in case of LAMP, JAVA, or MONO. Most consumers and developers find this monopolistic and are always cautious while choosing this framework.
There are also architectural criticisms. Most famous is the “Web Forms vs. MVC”. Server based Web-Forms architecture speeds up the time required to create a Web Application by employing Server Controls and associating events to those controls. At execution, server controls are converted to the native HTML client controls. Major limitations of Server based Web-Forms Architecture: There is an overhead of compiling the Server controls and converting them back to the Client side controls. Certain logic is best applied when you have perfect control over the HTTP request.The best example to explain this is a case, where one wants to create number of HTML input types based on a condition. In earlier architecture, I can simple apply a “for loop” and create the input controls in the markup page, but with server controls, I have code that as Server Script and identify how to associate the Post back event with the controls which is an inefficient programming model. Also the Client Side selection of elements using DOM or jQuery is horrible as you have to realize the name of processed input tags.
The earlier model exists by default in .NET, but what people criticized was the inefficient research while proposing a programming architecture to developers. But 80% of the time you don’t need that degree of control. Make no mistake; the industrial acceptance of Web-Forms was huge. Even Sun Microsystems (now Oracle) implemented JSF (Java Server Faces) specification to enable development in a Web Forms Architecture using Java. To counter the criticism, Microsoft also gave the option of MVC (Model View Controller) specification based ASP.NET development in .NET 3+. There was huge criticism in terms of how the implementation was done. With MVC 3+ Microsoft plans to remove all possible criticisms. Performance as compared to C++ compiled application is still slower. But similar to the case of Java, .NET has the benefit of reduced coding complexity when compared to C++. The performance of a .NET application running on windows is faster compared to a similar Java application.
All and all, .NET is great platform for development as long as you and the customer have no issues with using a complete Microsoft Environment for entire application life-cycle.