[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