Drawback of MVC pattern I have noticed

I’m a big fan of MVC pattern. It’s definitely an excellent architectural pattern and it has done splendid job in last few years. But again, it has some drawback.

The first thing, it does not provide user boundary explicitly. A controller action normally renders a view. But it has no idea about user activity. In general case, user activity spans more than one view and there may have some intermediate state. In this case, developer needs to manage navigation between the different sub views coupling several controllers. It has far-reaching consequence I think.

Secondly, I must say little bit about presentation layer that is the views. It has improved a lot but I think it’s still old-fashioned. Developer needs to write raw html code by hand. It can’t interact business process natively. Views require dedicated code coupling multiple controllers that act for business process. I’m not saying it’s bad, but definitely it’s an issue to ponder.

Thirdly, the model level, MVC doesn’t provide specific framework to manage data object, I would say, it just contains some entity. How they will interact with views, how they will communicate with physical data, there is no specific direction. Sometime they are only created for specific views and something for accessing physical data eventually they are blended with business process. Developer may sometime get confused, they need to develop own implementation.

Personally I like and use MVC pattern specially asp.net mvc3 and spring MVC. It’s really a good pattern. But I would say, it’s quite complex and not suitable for thin application development.



  1. I definitely agree that MVC is not suited a RAD app. If you’re doing RAD, I wouldn’t use Java or ASP.Net. PHP or Rails is a better choice. MVC patterns seems best suited for complex applications.

  2. Some of the problems you mentioned can be addressed using MVP or MVVM. In more complex scenarios, you might need to mixup C and P, I mean both presenter and controller. MVP itself has some problems which can be addressed using MVVM. Again, controller might be integrated with MVVM if you see appropriate.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s