Component Architecture
Welcome to the Zope Component Architecture wiki page. This page is created to provide information about Zope Component Architecture. Here you can see an introduction, installation instructions and articles. There is also a list of projects using Zope Component Architecture.
Introduction
Zope component architecture is about how to create reusable components, but not reusable components itself. You can see many packages built on top of Zope component architecture in Python Package Index also in Zope subversion repository .
A component is a reusable object with introspectable interfaces. Also components are cohesive and decoupled objects. A component provides an interface implemented in a class. It doesn't matter how a component is implemented, the important part is that it complies with its interface contracts. An interface is an object that describes how you work with a particular component. Using Zope component architecture we can spread the complexity of systems over multiple cooperating components. Zope component architecture help us to create two basic kinds of components, adapters and utilities.
Installation
The zope.component package represents the core of Zope Component Architecture. Together with the zope.interface package, it provides facilities for defining, registering and looking up components. You will be required to install a few dependency packages also. The zope.component package and it's dependencies are available in egg format from Python Package Index (PyPI).
You can install zope.component and it's dependencies using easy_install, provided you have internet connection. To install zope.component you can enter this command:
easy_install zope.component
This command will download zope.component and it's dependencies from PyPI and install it in your Python path.
If this will not work for you, you can install zope.component and it's dependencies offline after downloading the packages from PyPI. You can install packages in the order given below. For Windows, you can download binary packages of zope.interface and zope.proxy.
Only three of these packages are directly related to component architecture: zope.interface, zope.event and zope.component .
Articles
- README.txt inside zope.interface
- Component Architecture Overview
- Component Architecture Approach
- README.txt inside zope.component
- The Zope 3 Component Architecture (Socket Example)
- http://wiki.zope.org/zope3/components.html
- Zope Guide Components
- http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-interfaces.html
- http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-one-way-to.html
- http://plone.org/documentation/tutorial/borg/a-whirlwind-tour-of-zope-3
- http://martinaspeli.net/articles/component-architecture-design-lessons
- ZCA book (PDF)
- Blog post by Lennart Regebro
- http://www.bud.ca/blog/disambiguating-the-duck
- http://griddlenoise.blogspot.com/2007/05/abc-may-be-easy-as-123-but-it-cant-beat.html
- http://twistedmatrix.com/projects/core/documentation/howto/components.html
- http://www.bud.ca/blog/the-great-python-component-swap-meet
- http://rhodesmill.org/brandon/adapters/
Criticism
(Criticism is added here for the record, please read the comments also)
- http://blog.ianbicking.org/zope-3-critique.html
- http://www.z3lab.org/sections/blogs/jean-marc-orliaguet/2006_09_29_zope-component
- http://www.z3lab.org/sections/blogs/jean-marc-orliaguet/2006_10_02_zope-component
- http://www.z3lab.org/sections/blogs/jean-marc-orliaguet/2006_10_10_zope3-presentation-layer
Projects
Here is a list of projects using Zope Component Architecture:
- Zope 3
- Zope 2
- Plone
- Creative Commons Publisher (Desktop)
- Gaphor (Desktop UML Tool)
- Silva
- Grok
- Sample Inventory
- SchoolTool
- EvoGrid (Genetic Algorithms Framework)
- Launchpad (Proprietary)
- (If you know any project using Zope Component Architecture, please add here)
There are two other major projects using zope.interface package:
