[Zope] mount zope server (was: Import from Zope-1 to Zope-2)

Jay, Dylan djay@lucent.com
Thu, 9 Sep 1999 17:39:42 +1000


> -----Original Message-----
> From: Michel Pelletier [mailto:michel@digicool.com]
> Sent: Thursday, September 09, 1999 17:34
> To: Jay, Dylan
> Cc: zope-dev@zope.org; zope@zope.org
> Subject: Re: [Zope] mount zope server (was: Import from Zope-1 to
> Zope-2)
> 
> 
> "Jay, Dylan" wrote:
> > 
> > > -----Original Message-----
> > > From: Michel Pelletier [mailto:michel@digicool.com]
> > > Sent: Thursday, September 09, 1999 15:20
> > > To: Jay, Dylan
> > > Cc: zope-dev@zope.org; zope@zope.org
> > > Subject: Re: [Zope] Import from Zope-1 to Zope-2
> > >
> > >
> > > "Jay, Dylan" wrote:
> > > >
> > > > related note heres another idea I had. How about a product
> > > that can mount
> > > > one zope ODB into another. Using XML-RPC or something to
> > > connect the two
> > > > sites togeather over  the internet. It may not be fast
> > > enough for using that
> > > > way but at least it would be really easy for transfering
> > > data between zope
> > > > odb's.
> > >
> > > We are entertaining the possibility of putting 
> ZPublisher.Client into
> > > the _ DTML Namespace.  I am primarily championing the idea.
> > >
> > > 'Client' offers many cool uses.  'Client.Function' will 
> call a remote
> > > 'Zope Method' which marshals simple types around (int, list,
> > > tuple etc.)
> > > and act as Zope oriented RPC.  'Client.call' is a 
> convienent wrapper
> > > around 'Client.Function'.  These both have the upshot of 
> working with
> > > any
> > > URL, turning non 'object content' into file Message 
> objects and return
> > > them in a list.
> > >
> > > Even cooler, 'Client.Object' will create surrogate 
> objects of remote
> > > Zope objects.  If you have a DTML Document on machine A, then
> > > Machine B
> > > could say:
> > >
> > > <dtml-with "_.Client.Object('http://A/YourDocument')">
> > >   <dtml-var id>
> > > </dtml-with>
> > >
> > > and print 'YourDocument'.  You can pass autentication
> > > information in to
> > > all of the calls to access restricted object.
> > 
> > So what would happen if this wrapper object was passed back using a
> > <dtml-return> call or even a __bobo_traverse_ method? Would further
> > resolution in the object happen using the link or would it 
> break and start
> > trying to find objects in the local context?
> > 
> 
> Client.Object returns a real object that would work if passed 
> around in
> Zope.  A 'Client.Object' instance defines a __getattr__ which uses
> Clients RPC mechanism to get attributes and call methods on remote
> objects.  Client will do the usual marshaling of simple python types. 
> I'm pretty sure Client will also handle the return of multipart
> content.  At least it looks like it from browsing the code.
> 
> Of course, if Client were added to the namespace, it would need to be
> documented.
> 
> -Michel
> 

So mounting a distributed folder would be as simple as a method that did
<dtml-return "_.Client.Object('http://A/AnotherFolder')"-->