Previously, it has been said that MVC doesn't correctly relate with Web 
Applications; nevertheless Cocoon now seems to be able to make a real 
MVC server.

Why is defining MVC in Cocoon so important IMO?

   Essentially an image and comunication issue.

* Image because we are being compared to Struts and Maverik by users 
that follow the MVC pattern (hype or not they do) heavily.
* Communication, because MVC is easy to understand conceptually, and 
makes it easier to describe what Cocoon can do.

To see what Sun says about MVC, I've read the lueprints, and here is the 
talk about MVC: 
http://java.sun.com/blueprints/patterns/j2ee_patterns/model_view_controller/index.html.

Below are the concepts and how they can map IMHO to Cocoon ones:

"The model represents enterprise data and the business rules that govern 
access to and updates of this data. Often the model serves as a software 
approximation to a real-world process, so simple real-world modeling 
techniques apply when defining the model.
"

Cocoon doesn't have model facilities.
It can use any model done in Java, but has no preferred or standard 
support for any.


"A view renders the contents of a model. It accesses enterprise data 
through the model and specifies how that data should be presented. It is 
the view's responsibility to maintain consistency in its presentation 
when the model changes. This can be achieved by using a push model, 
where the view registers itself with the model for change notifications, 
or a pull model, where the view is responsible for calling the model 
when it needs to retrieve the most current data.
"

These are the pipelines.
Generator-Transformer-Serializer.

This makes it clear how using them to process data is inappropriate.

"A controller translates interactions with the view into actions to be 
performed by the model. In a stand-alone GUI client, user interactions 
could be button clicks or menu selections, whereas in a Web application, 
they appear as GET and POST HTTP requests. The actions performed by the 
model include activating business processes or changing the state of the 
model. Based on the user interactions and the outcome of the model 
actions, the controller responds by selecting an appropriate view.
"

We have one front-controller, the sitemap, that operates on predefined 
semantics: matchers, selectors, actions, and now flows.

These are more fine grained controllers, that are assembled as 
programming blocks in the front-controller.

But...

Cocoon has an advantage on normal MVC web systems: continuations.

The flows are special controllers, because they span multiple requests, 
and basically expose clearly client-server transactions.

This is the reason why I called it MVC+

So, could this be a good enough description?
Should we put it in the documentation?

-- 
Nicola Ken Barozzi                   [EMAIL PROTECTED]
             - verba volant, scripta manent -
    (discussions get forgotten, just code remains)
---------------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to