Last week I stumbled over this interesting article on the potentially changing Model View Controller architecture implementations. (Sidenote: here's the more subtle distinction between MVC1 and MVC2 described. And here's an article on the ambiguity of the term and pattern MVC.)
An example logical diagram of MVC2 is shown below:
The article takes a look at the different approaches to MVC implementations:
- the HTML-only approach;
The new MVC2 diagram for the above mentioned fourth approach would look something like this:
Included in the article is also how you could split up work in a team between people working on the View and Model parts.
I do not completely agree with the statement in the beginning of the article that says "The Web client takes care of keystrokes and mouse movements: the Web browser application itself is the Controller". I'm reading this as: the browser is the controller. Though, when you look at the first picture, that is not what the Controller is supposed to be.
But, in general the whole potential movement of going to thick clients is an interesting one to keep an eye on.
- Easier distribution of new versions than in the old days with fat clients like Visual Basic, where you had to make sure all clients got updated;
- Easy opening up of your SOA webservices. The fat client could directly access them;
- Potentially a large improvement in scalability: the client processing power is used as much as possible, the application server only performs several basic checks;
Several cons are though:
- If not designed correctly, there could be significant extra network traffic;