On Mon, Nov 15, 2010 at 4:59 AM, Wichert Akkerman <wich...@wiggy.net> wrote:

> On 11/14/10 05:32 , Shane Hathaway wrote:
> > On 11/12/2010 03:17 PM, Iain Duncan wrote:
> >> Reading some of the diaolgue on the pylons/bfg merger has me curious
> >> about the following, wondering if any experts care to share opinions and
> >> war stories:
> >>
> >> - what is the best use case for extending through entry points?
> >> - why/when would you use entry points and entires in an ini file vs
> >> registering modules/plugins as zca entries?
> >> - pros and cons of each approach?
> >
> > With ZCA, you can register components temporarily for a test.  You can
> > create a short-lived component registry.  You can create multiple
> > registries for different parts of the application.  You can store
> > registries in a database.  Whatever makes sense.
> >
> > With entry points, can you do any of that?  Entry points seem far more
> > limiting.  Please correct me if I am wrong.
> Entry points work without you having to configure and python, zcml, etc.
> code, which makes them a better fit for some tasks.

I think of the difference as -- ZCA is much more flexible and fine-grained
as a component configuration system; entry points are good for lightweight
tasks and for allowing a package to advertise the presence of a feature by
virtue of the package being installed.  To me, it makes sense to think of
ZCA configuration as an integration layer attached to the application you're
putting together, and entry points as attached to packages you might reuse
(advertising features from the package you might want to make use of).

You can also combine their use: in the z3c.autoinclude system, packages use
entry points to advertise ZCML to be included.  A package uses entry points
to say "I have ZCA configuration you might want, here" and a ZCA
configuration can say "include all the ZCA configuration for key 'foo' from
packages who offered it."  Again, here, reusable packages advertise features
(in this case groupings of ZCA configuration) and in the integration layer
you put together a specific configuration.
Repoze-dev mailing list

Reply via email to