<img src=“http://img.skitch.com/20100427-rmuj7kqh8kqphwwf2sas9825g4.png" alt=“Comparison of web application frameworks - Wikipedia, the free encyclopedia”/ class=“float-right image-border”>MVC is a really popular software architecture pattern used on the web. Its become so popular that its too popular. On the Wikipedia comparison of web frameworks it doesn’t list the top level architecture for a program. Instead it lists whether MVC is used and if its push or pull. I can’t list the number of times I’ve read or heard a criticism of a program because its not using the MVC pattern. This is turning into a bad thing.
Why MVC Everywhere Is BadMVC everywhere is bad for two very important reasons:
- There are a lot of programmers and developers who don't know other top level patterns. When its time to use a non-MVC based system they struggle to learn it or try to bend it to MVC which is what they know.
- MVC is not always the best pattern. There are a number of different top level patterns and they are good for different cases. Trying to shoe horn everything into MVC is not a healthy approach. Especially when other patterns are better suited.
MVC Is Not BadIt's not that I am not a fan of MVC. I've done quite a bit of work with MVC. MVC can be a good pattern to be use for some applications. So, it's not that I'm a hater. It's just that more applications need to consider the alternatives where they are better suited and a lot of programmers are not thinking beyond MVC.
Some AlternativesSo, what are the alternatives I hear you asking? Two that I'm familiar with (there are more than two):
- Chain of Responsibility (sometimes called Chain of Command)
Take a look at these, learn them, understand them, and use them.