Personal tools
You are here: Home Members jamoma's Home BEKint jamoma's Home MVC
Views

Edit history

Edit: -1 of 1
Time: 2008-05-17 19:04:09
Note: /int/Members/jamoma/wiki/MVC/edit

changed:
-
<h1>MVC</h1>Jamoma implements a Model-View-Controller (MVC) architecture for working in Max.&nbsp; More information on this design patter can be found at http://en.wikipedia.org/wiki/Model-view-controller, or in various Ruby on Rails or Apple Developer texts as well.<br><br><h2>Components</h2>In Jamoma, the components of the MVC pattern can be summarized as follows:<br><ul><li>The model is the 'algorithm'.&nbsp; This is the core entity of any given module, which is responsible for performing the required task.</li><li>The view is the user interface.&nbsp; However, the term 'user interface' here means any way with which a user interfaces with a module.&nbsp; This may be a graphical user interface, a remote Open Sound Control interface, or some other method of interacting with a module.&nbsp; A collection of objects may make up the view, including standard Max objects, the jcom.ui object etc.&nbsp; <br>The jcom.ui object is also a 'glue' object, in that it acts as a bridge between the UI and the controller.</li><li>The controller is the state-management system.&nbsp; It is a layer in the module that binds any of the various 'views' to the underlying algorithm, and manages the workings of the (stateless) algorithm.<br></li></ul><h2>Ambiguities</h2>There are several ambiguities in Jamoma's implementation of the MVC pattern.&nbsp; <br><br>The most obvious ambiguity is in the separation of the controller and the view.&nbsp; This stems, in large part, from the fact that Max does not separate the UI from the underlying processes.&nbsp; Thus, to provide this architecture, some objects are required to bridge across the view and the controller in order to tie them together such that they work.<br><br>One such case is the attribute for determining a module's size.&nbsp; In a utopian world, a module would not need to know anything about the size of it's view.&nbsp; Thus the module would have attributes pertaining to function, and the view might have it's own attributes, such as the view size.<br><br>In it's current implementation (Jamoma 0.5 dev) it is perhaps more ambiguous than it need be.&nbsp; We also include a number of parameters inside of the UI.&nbsp; They should really be in the hub and communicated to the UI, but that makes the code messy and there are other important things to do...<br><br><br>

Powered by Plone