Clinton Roy writes:
 > .... external method restrictions ....
 > I'm losing faith people..

Maybe, you should not.

There are more ways to build extensions than external methods
in "Extension" directories.

Each way has its advantages and drawbacks:

Type            Web Manageable                  requires restart

DTML Methods         yes                                no

ZClasses             yes                                no

External methods    partly                              no

Products            partly                              yes

Python Modules       no                                 yes



The restrictions for source files in the Extension directories
are documented together with a description what to do
to circumvent the restrictions:

   These source files are not imported as standard Python
   modules but they are read in and executed.

   As a consequence, Zope may simply reread and
   reexecute them when they changed. A restart
   is not necessary.
   If they could be used like full Python modules,
   then it would be very difficult to do this
   in a safe manner unless the Python import
   and lookup mechanisms are changed.
   This might be possible but difficult.

   On the downside, instances of classes defined in these
   source files can not be pickled (and therefore stored
   in the ZODB). The pickle mechanism does not
   understand Zope's read and execute but
   requires standard Python module import.

   The workaround: define the classes (!) you need
   for ZODB objects in true Python modules.
   The documentation suggests to define them
   in a properly named subpackage of "Shared" such that
   maintenance will not become a nightmare.
   Yes, changes to true Python modules (and therefore
   to your classes) require a Zope restart.
   But, hopefully, you will not change your classes
   too often.

   You can instantiate your classes, i.e. build
   instances from them, in external methods,
   i.e. in source files located in an Extension
   folder.

   There is no need to have the same code at two
   places! Classes for picklable objects or
   infrastructure to be used in several source
   files in true Python modules,
   everything else (if you want) in external methods.


Each tool has its strengthes and weaknesses. Know them
and use the right tool for your task.
This applies both to (sub-)tools inside Zope
(e.g. external method versus product versus Python module)
as well as to Zope itself (versus ASP, PHP, JSP, ...).


Dieter

_______________________________________________
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )

Reply via email to