On Sun, Dec 21, 2008 at 11:25 PM, Vassil Dichev <[email protected]> wrote:
> > But that does not mean purity for purity's sake. It means practicality > for > > our customers and consumers and end user's sake. > > And before anyone accuses us, let me admit that we're probably not > using a MVC framework, either :-) > > http://www.pointy-stick.com/blog/2008/11/30/removing-model-view-controller-straitjacket/ > Lift is most assuredly not an MVC framework in the pure Smalltalk MVC sense. First, there's no way to do true MVC over the web because MVC requires server-push. MVC specifies that if there's a change in the model state, it is reflected in the view because the view sends a message to a listening controller. In fact, Struts and Rails calling themselves MVC is just dead wrong. FWIW, I don't think it should mean that Struts shouldn't be part of the ASF, but I do think it's over-reaching for Struts to call itself MVC. Second, MVC calls for multiple controllers per view. A view can be attached to many different controllers and back-end views. Rails with a single controller tied to the URL of the request violates this part of MVC. Struts with Tiles works around it. What MVC has come to mean on the web is a total distortion of the design pattern. Just for the record, Lift's CometActors are closer to MVC because the component in the browser is kept current with the component state on the server. And like Apple's XCode, there's no need to write a controller that simply marshals data between them. Also, Lift's View-First rendering means that you define all the components that appear on the page in the view rather than having a "special" controller based on the URL. See http://liftweb.net/index.php/Lift_View_First My "first think on Monday morning" rant. Thanks, David -- Lift, the simply functional web framework http://liftweb.net Collaborative Task Management http://much4.us Follow me: http://twitter.com/dpp Git some: http://github.com/dpp
