O'Reilly logo

Ruby on Rails® for Microsoft Developers by Antonio Cangiano

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

2.2. Understanding MVC

The MVC architectural pattern is one of the most well-known and adopted patterns in the history of software engineering. When Trygve Reenskaug, a Norwegian computer scientist, first described it back in 1979, it aimed at favoring the development and maintainability of Smalltalk GUI applications by a clear division of business logic and presentation in three distinct types of components: the model, the view, and the controller.

You can find the original and revised documents describing the pattern online at http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html.

The idea was general enough to be applied in any context that involved some form of user interaction. Thirty years later, the same architecture is in fact widely adopted for Web development. The monolithic approach taken by many in the early days of the Web was a regression over an older but well-proven pattern, especially if you consider that MVC is a particularly fitting abstraction of the underlying architecture provided by the Web. Although it's not the only valid option available, it is indisputably one of the most successful and, above all, the one chosen by the Rails framework.

Entire books could be written on the subject and some may like to indulge in sterile discussions about the purity and fidelity of the various MVC implementations when compared to the original idea. But this won't serve any concrete purpose and will not help you create better Rails applications. This section, therefore, ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required