As a .NET programmer for 15 years, I have been working on all .NET versions from 1.0 to 4.0. The important thing I learnt is "the simple solution is the best solution". Obviously, the MVC is not a simple solution (Its complexity is getting worse with Razor view engine in v4/v5):
1. Spaghetti coding style: that is as horrible as classic asp. When the page getting bigger, it will be too hard to read. If you never work on the classic ASP before, you will never know the pain.
2. Complexity of pattern: using such a complex pattern for a UI that can be done easily with Web Form ( html, ASP controls and JS) is not efficiency on time saving
3. Coupling issue: Any part breaking on M-V-C, it will affect others, because they are three in one.
4. Design can not be viewed in VS: Hate to comply it every time when I want to see the UI. (WEB FORM content can be viewed immediately in VS.)
5. Performance issue: dynamic generating/routing the pages in runtime that gets penalty in performance. ( Taking off view state will not benefit the website performance because the data now are saving to the server side memory, it makes the server slow down. View state is very useful when we want to save some non secure info on client side)
6. Migration issue: Too many third party DLL(s),scripts and complex layers sitting on the project, when it is doing upgrading/migration, it comes out much more errors than web form. That is really pain in the *ss.
7. Security: MVC project is a library type. The whole project code is bonded into a library unit and it is allowed to connect to internet. It puts additional web.config file on the View Folder to prevent the illegal access to the views. However, when the server memory failed due to overflow, OS will try to disable some services. Server is on risk. Also, any failure occurring on validation of WCF service will increase the risk on the back-end code and DB data.
Anyway, it has its advantage: It is very good on Unit Testing. It could be better than Web Form in mobile development.
.NET Web Form has one big disadvantage, (well some people say it could be an advantage):
It gives you freedom to code what you want to code. It has no limitation on technologies that can be implemented on the code. so, it becomes a problem when codes become too complicated. Anyway, a clean coding programming is really depending on a programmer's knowledge and talent - it is just like one's bedroom: if his/her bedroom is clean and tidy then he/she likely is a clean coder. Smile | Smile |
If you want a clean coding then try to adopt these rules:
1. Avoid coupling coding style
2. Use three - layer pattern to separate the codes
3. Always put performance in the first place
4. Avoid using third party DLL(s)
5. Simple solution is the best solution
Anyway, .NET Web Form is a powerful technology for all type of projects and it is very easy to be migrated to new latest .NET platform with less effort (if it contains few third party DLL(s)). On multiple users platform, you should really consider the .NET Web Form (.NET WF) rather than the MVC. The .NET WF will be able to save only security data in session id on server side and leaves all on-security data with encryption on client side so that saves a lot of memory resource for the server memory and let more users connecting to the web at same time - it could be thousands and millions. MVC will be never like that because it consumes a lot of memory on server side.
The most critical issue for WF is the weakness on testing.
MVC is built on top of .NET Web Form. The Web Form 5.0 is coming out soon. It has big improvement/changes on its UI technologies and will have impact on the MVC because of that reason. Keep it in mind: MVC is not a replacement of Web Form. MVC is an optional (and WF is fundamental core in .net). Before you get into MVC, think about your time, knowledge, resource and budget first. Once you get in, you can not get out unless you dump it.
Good Luck!
(Circa 2016, the best hot powerful technologies now are
HTML/CSS 5.0, Web Form5.0, JavaScript, JQuery, LINQ to SQL, ADO.net 5.0, WCF, .NET 5.0, C# 5.0 and SQL2012. Using these latest technologies, a programmer will be able to get all works done with no issues.)