On Fri, 19 Jul 2002 23:52, Stefaan Nachtergaele wrote:
> I need a distributed object framework where objects exist remotely but can,
> if the client so chooses, be used locally. The client could get the Object
> by calling for example getReadCopy() which would retrieve a copy of the
> object and put a read lock on it (idem for getWriteCopy). When the client
> is finished with the object he then does a releaseReadCopy() or
> releaseWriteCopy(). The releaseWriteCopy() would also make sure the updated
> object is copied back to the server.
> This seems like a natural extension to RMI.
> Does anyone know of a framework which support this kind of behavior? 

yes ... unfortunately it is not opensource and it is too ugly to be 
opensource. One of the projects I am currently working on does the following.

The "server" contains the master copy of object while the clients contain 
"imitations". The "master copy" is read-write while the imitations are 
read-only.

When the master copy changes messages are sent out to all the imitations and 
the imitations are thus updated via this method.

We have contemplated allowing a "roaming" master copy. ie One node could 
request to become "master copy" for object A. It would then be the once 
accepting change requests and distributing them to all of As imitations. 
However we never got around to actually implementing all of it.

We implemented synchronization of these objects. ie The network gets split so 
that network A has one master copy and network B has another master copy. 
Both copies undergo changes. Unfortunately there is no generic merging 
process for the master copies once the networks are joined again. We are in 
the process of implementing a generic rule engine to allow buisness rules to 
determine the process of merging. 

The tricky part occurs when you have relationships between objects. ie The 
system we are working on is resource management for fire fighters. It is 
tricky when in one network the fire fighter is dispatched to a fireline at 
2:00 while in the other network the fire fighter is sent home at 1:00. The 
buisness rules for these sorts of situations and the coresponding changes to 
the rest of the object database is sometimes staggeringly complex ;)

Anyhow, I have not seen any similar frameworks in the buisness world. However 
these frameworks are very common in military simulations and in distributed 
3d games. One of the most well documented frameworks would be the US 
Departments High Level Architecture (HLA) that describes how replication and 
ownership of objects (and object attributes) occurs. There are quite a few 
implementations of HLA but they tend to be expensive.

You should be able to get details of HLA from a web search. Unfortunately for 
games engines there is virtually no documentation or cheap examples. Most of 
them are custom built for a particular environment aswell. To get a taste of 
what I mean have a look at http://unreal.epicgames.com/Network.htm

Anyways I did a thesis on this stuff while in uni and can probably send you a 
bunch of links if you are interested. However I don't have them with me so it 
could be a while before I send em ;)

> Where
> would I start if I wanted to implement something like this myself. I am
> currently looking at the Avalon project and wondering (as oppossed to
> "thinking about" because I'm not quite there yet) how it could be used to
> implement this. Any suggestions welcome.

I would recomend that the replicated objects not use avalon lifecycle 
interfaces or anything similar. However it may be useful you to consider 
writing the replication engine as set of avalon components. If you have any 
questions feel free to ask.

-- 
Cheers,

Peter Donald
--------------------------------
My opinions may have changed, 
but not the fact that I am right
-------------------------------- 


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to