[Zope] How to make good architecture in Zope2?

Lennart Regebro regebro at gmail.com
Tue Dec 20 07:50:34 EST 2005


On 12/20/05, Roman Suzi <rnd at onego.ru> wrote:
> Lets suppose that I've done OO Analysis and have a dozen of nice classes
> which model my problem domain. Lets also suppose that I did it on the
> basis of known use cases. Now I want to build Web application fulfilling
> those use cases but  separate my  classes from Zope framework (Ok,  some
> of them could be taken from Zope framework, like user folder), so that I
> can see the problem domain abstractions in the clear, without a mess of
> miriads of Presentation injections.
> (I'd liked to put presentation-related things into other classes and ZPTs)
>
> Are there any good examples out there, or any good architectural
> solutions for that?

Yes. Zope 3. ;)
Zope 3 adresses several of these questions, especially the separation
of presentation from logic on a class bases. And of you can't use Zope
3, then you can use the same principals under Zope 2 thanks to the
Five technology:
http://codespeak.net/z3/five/

Five is included with Zope 2 since Zope 2.8.

> Or is it even possible in Zope2 to go that far
> without doing to much adaptation?

No problems at all. Nuxeos new calendar product is done exactly like
that, even to the point that the base classes are in a separate
product (CalCore) that could be used outside of Zope, the UI is in
another product (CalZope) that provides all the pages, and we have
integration with CPS in a third product (a Plone integration,
CalPlone, is in progress).

> What I see in real world examples, is extensive use of mix-ins. Is it
> the only feasible way to at least textually separate Logic from
> Presentation?

Not at all, if you don't want to do it the Z3 way, you can do it with
subclassing.

> (What about delegation?)

Well, I guess that's pretty much what zope 3 does. The presentation is
done in separate classes called view-classes.

--
Lennart Regebro, Nuxeo     http://www.nuxeo.com/
CPS Content Management     http://www.cps-project.org/


More information about the Zope mailing list