Generated by GPT-5-mini| Model–View–Controller | |
|---|---|
| Name | Model–View–Controller |
| Paradigm | Architectural pattern |
| Developer | Trygve Reenskaug (originator) |
| First appeared | 1979 |
| Influenced by | Smalltalk-80, Xerox PARC |
| Notable implementations | Ruby on Rails, Django (web framework), ASP.NET MVC, Spring Framework |
Model–View–Controller. Model–View–Controller is a software architectural pattern that separates an application's Trygve Reenskaug, Smalltalk-80-era data representation, user interface, and control logic into distinct components to improve modularity and maintainability. It is widely used in Apple Inc. platforms, Microsoft enterprises, Meta Platforms products, and web applications developed with Ruby on Rails, Django (web framework), and Spring Framework. The pattern influenced many subsequent frameworks and academic discussions at institutions such as Xerox PARC and MIT.
The pattern divides responsibilities among three cooperating parts: a component managing domain data and business rules, a component responsible for rendering and layout used by Adobe Systems designers and Google engineers, and a component that handles input, navigation, and event coordination common to Microsoft Windows and Apple Lisa user interfaces. Early adopters included teams at Tektronix and projects arising from PARC research that interfaced with systems like NeXTSTEP and Sun Microsystems workstations. MVC influenced GUI toolkits used by Sun Microsystems, IBM, and Oracle Corporation.
Origins trace to work by Trygve Reenskaug while visiting Xerox PARC in the late 1970s, contemporaneous with developments at PARC that produced paradigms later adopted by Apple Inc. and NeXT. The concept matured alongside Smalltalk-80 and was disseminated through academic conferences and corporate research labs such as Bell Labs and MIT. Industrial adoption grew in the 1980s and 1990s through platforms like NeXTSTEP, OpenStep, and enterprise systems at Sun Microsystems and IBM that required clearer separation of interface and business concerns.
The core components map to responsibilities found in applications developed at Apple Inc., Microsoft, and Google: the data management component encapsulates entities and rules similar to models in Oracle Corporation databases and PostgreSQL deployments; the presentation component interfaces with toolkits such as Qt (software), GTK, and Cocoa (API); and the controller component mediates user actions as seen in X Window System and Windows Presentation Foundation projects. Implementations coordinate with networking stacks from Cisco Systems and security models from RSA Security when integrated into enterprise architectures. Design patterns from Gang of Four literature and practices promoted at Carnegie Mellon University often accompany MVC implementations.
Numerous variants evolved in corporate and open-source ecosystems: patterns such as Model–View–Presenter became popular in Microsoft developer circles, Model–View–ViewModel saw adoption in Microsoft's Windows Presentation Foundation and Xamarin projects, and component-based derivatives influenced frameworks from Facebook and Google like systems exemplified in React (JavaScript library) and Angular (web framework). Architectural threads from Ruby on Rails and Django (web framework) spawned service-oriented and microservices adaptations used by Netflix, Amazon Web Services, and Google Cloud Platform.
Notable server-side and client-side frameworks implementing the pattern or its derivatives include Ruby on Rails, Django (web framework), ASP.NET MVC, Spring Framework, Symfony (framework), Laravel, Angular (web framework), and Ember.js. Desktop and mobile SDKs applying similar separations include Cocoa (API), Qt (software), GTK, Android (operating system) SDKs, and iOS frameworks. Enterprise software suites from SAP SE, Oracle Corporation, and IBM incorporate MVC-influenced modules in their application stacks.
Proponents within organizations such as Apple Inc. and Microsoft cite improved testability, parallel development, and separation of concerns, facilitating continuous integration practices used by GitHub and GitLab. Critics, including authors affiliated with Princeton University and MIT, argue that strict adherence can introduce indirection, boilerplate, and coupling across controllers and views that complicate maintenance in large-scale systems used by Amazon.com and Netflix. Debates in software engineering forums reference trade-offs observed in projects at Google, Facebook, and enterprise deployments at Accenture and Deloitte.