Hi Thierry! Thanks for your lat response, meanwhile things are getting more and more clear to me. I got it meanwhile to register utilities through the globalSiteManager, and I am now very familiar now with zca basics (though that I have much more to learn of it's API) There is something totally unclear to me! I got 2 applications registered in the "/storage/PyProjects/ztfyAPP/etc/configure.zcml" tamer@office /storage/PyProjects/ztfyAPP/src $ ls -lA insgesamt 16 drwxr-xr-x 2 tamer tamer 4096 9. Jun 07:40 appsx drwxr-xr-x 2 tamer tamer 4096 20. Mai 16:13 appsx.egg-info drwxr-xr-x 4 tamer tamer 4096 9. Jun 07:43 webapp drwxr-xr-x 2 tamer tamer 4096 20. Mai 02:35 webapp.egg-info that is "webapp" and "appsx" so far so good. At /storage/PyProjects/ztfyAPP/src/appsx/__init__.py: I globally registered a class, which definied previously as a utility. from Services import * from zope.component import getGlobalSiteManager from zope.component import getUtilitiesFor,queryUtility gsmx = getGlobalSiteManager() VAT = VATServices() gsmx.registerUtility(VAT,IVATServices,'VAT') now I want to have access this utility in the global sitemanager from one other app. /storage/PyProjects/ztfyAPP/src/webapp/__init__.py: from myhello import HelloView from zope.component import getGlobalSiteManager #print list(getUtilitiesFor('IVatServices')) gsmx2 = getGlobalSiteManager() gsmx2.queryUtility(IVATServices,'VAT').Hallo() I thought it is in the memory. Okay, that the interface is not available in the other application is clear. But, how do I access components or utilities registered in a different application globally, at one other application at all ?! Tamer Am 14.05.2013 09:22, schrieb Thierry Florac:
Hi,
Le Tue, 14 May 2013 06:55:38 +0200, Tamer Higazi <th982a@googlemail.com> a écrit:
1. What is the difference between a global and a localSiteManager from the zope.component package?!
How do I have to understand that a "globalSiteManager" resists in memory, and a localSiteManager is persistent ?!
Could somebody of you explain it to me?!
Yes, there are two kinds of complementary "registries" (or "site managers"): - a global one, mainly build by ZCML (or "static") declarations - a local one, which is made of persistent components registered into the ZODB. Local components are "contextual", so are only available (by default) to objects "attached" to the site manager inside which these components are defined. This registry is mainly specific to Zope applications so if you build a ZCA-based application outside of Zope, you will probably don't have a local registry.
Where you are looking for a component, search is made at first in the local registry, then in the global one.
2. What is the difference between an adapter and a utility ?! I register an adapter as well the same way as I do with a utility, and I query those 2 as well. But what's the point there?!
A utility is a simple named component which provides an interface; it's generally a singleton. An adapter, on the opposite, takes one or more objects arguments (each providing a given interface) to return an object providing another interface.
Regards, Thierry
P.S.: please avoid cross-posts!