Hi,

Some thoughts from me regarding the MVC stuff:

1) Routing

I assume you already thought of this, but I would like to see it
mentioned in the document: The routing is one of the most performance
critical parts of the MVC, so that it should be completely replaceable
by the user with an optimized implementation for his usecase.

2) View handling

The selection of views from the controller is not defined yet, and imho
also a key component. 

I personally see the common requirements for web applications, which may
be quite a lot, but at least this should be easily possible with user
extensions:

- Context specific templates

  The controller returns something to display and it should be possible 
  to display it in diffenrent output formats (XHTML, Mail, Text, 
  RDF-XML, ...)

  Generally this could be handled by some request object passed to the 
  viewmanager, which defines the request context. (Locales, 
  Content-Type, ...)

- "Pagelayout" definition

  Even in one context it is often required to get entirely different 
  outputs, like a popup, a standard and a print view for XHTML. This 
  could be implemented with more complex context definitions, but you 
  may want to share some templates between the different HTML views 
  (perhaps all, except the layout template).

- User overrides of templates

  We do this in eZ Publish. We got a set of standard templates, and you 
  may spcify your custom tempaltes, which override one or two tempaltes 
  to contain custom formatting. This may be done by checking a list of 
  user defined directories for a replacement template, or more complex 
  rules. This is not required by the initial implementation, but still 
  should be possible.

Possible solutions:

- The standard way to solve this, is a viewmanager, which just takes a 
  view object from the controller and displays this with a defined 
  (complex) mapping, based on context and the type of the contents of 
  the viewObject. The viewObject may of course aggregate lots of other 
  view objects (like the navigation, ...). 

  This solution has two drawbacks from my POC:

  - It is hard to provide a really simple solution for simple 
    applications, as this would force all stuff returned by the 
    controllers to implement at least some interface, which would make 
    it impossible to just provide some scalar values, etc.

  - The overhead by the viewmanager and the defined mapping may be 
    noticeable, and may result in poor performance. The definition of 
    the required mapping may look a bit complex to some users...

- Just pass some (pseudo) URL to the viewmanager, like 
  html/popup/user.tpl, which may be handled by the viewmanager, because 
  they provide enough context information in the URL, or are just 
  mapped to the file system, for the simple / dumb solution ;)

  This requires extra string parsing in the view manager, which I 
  generally dislike, though...

Drawbacks:

Both solutions do not directly help with the sharing of the templates
between dfferent contextes, but this could be implemented dooing some
magic in the viewmanager, which may know about the context semantics,
and so also knows which may be shared.


Somebody found the holy grail anywhere?

-- 
Mit freundlichen Grüßen / Med vennlig hilsen
 
Kore Nordmann (GPG: 0xDDC70BBB)
eZ Components Developer
eZ systems Headquarters

tel +49 (0) 231-9742-7750 | fax +49 (0) 231-9742-7751
[EMAIL PROTECTED] | eZ systems | ez.no

Attachment: signature.asc
Description: This is a digitally signed message part

-- 
Components mailing list
Components@lists.ez.no
http://lists.ez.no/mailman/listinfo/components

Reply via email to