[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [ecf-dev] Is ECF suitable for this project?
|
Hi Paul,
Paul Woodward wrote:
Hi Guys,
I've been following ECF for a little while now, and I've noticed a lot
of emphasis on VOIP/chat/IM.
I've got a to develop a support application for managing multiple
compute grids, this will be an RCP app based on the eclipse workbench.
I plan to have an object model that represents each grid and its
status. For a couple of reasons I would be very nice to be able to
share this model 'live' between all of the support personnel:
1. There is a cost to the compute grid associated with getting
real-time information - if one client gets it, I would like to share
that everywhere
2. For some operations, optimistic locking will not be appropiate and
I will want to pessimistically lock objects in all clients.
A part of ECF has the concept of a 'shared object'. A 'shared object'
or set of shared objects can represent an arbitary model that is
dynamically replicated among a group of processes. The shared object(s)
can then send messages among the replicas to update the state in a
manner appropriate to the application. A distinction is made between a
'primary' and the other replicas, so that (for example) a server (or one
of the peers) can be authoritative WRT coordinating state changes.
So, for example, your object model could be 'wrapped' by a shared object
and replicated among all participating clients and/or servers. State
updates could be done either optimistically (for some state updates) or
pessimistically (via a two-phase commit protocol) with the shared object
class implementation making the decision about which state update
protocol is required to meet application requirements. This way the
shared object can make the determination about which protocol is
required for a given state update, and engage in that protocol using
some messaging primitives provided by the ECF container (reliable,
sender-ordered group messaging). The point here is to not impose any
particular state management on a shared object...i.e. force it into
using either heavyweight pessimitic messaging for all state changes, or
only optimistic protocols...but rather to allow/support the
*application* to manage the distribution/replication and distributed
synchronization of its own model in a way that makes sense for that
model and it's usage via the user interface/view.
Note that as of fairly recently I added a set of classes to support
transactional shared object replication...so that upon creation a shared
object will be pessimistically replicated to the participating processes
(all or nothing two-phase commit). These classes are in the
org.eclipse.ecf plugin, in the org.eclipse.ecf.core.sharedobject
package. Specifically the TransactionSharedObject abstract super
class. For test code, see org.eclipse.ecf.test project,
org.eclipse.ecf.test.AddTransactionSharedObjectTest.
Essentially what I would like is for any updates to the object model
to be fired as property change events so that I have a consistent
interface for model listeners for changes happening both locally and
remotely.
This should be very easy. A shared object that was simply a property
change listener that then serialized some version of the event and
distributed that event to other group members (using optimistic and/or
pessimistic as desired/appropriate) would be a natural. Shared Objects
have a 'ISharedObjectContext' which allows every shared object to
communicate with it's remote replicas (e.g.
ISharedObjectContext.sendMessage(...)).
Does this sound like the kind of project ECF is being designed for? If
it's not currently possible, what sort of time frame we we looking at?
Yes, it seems to fit quite well. The folks from the Corona project
(http://www.eclipse.org/proposals/corona/) are actually using ECF for
something like this (distributing events among a number of
receivers...for notification rather than replicated model update).
I've worked with JGroups before and like it a lot. What is the planned
timeframe for its integration?
Ah, good question. I would like to have javagroups as a provider
underneath the ECF shared object API already. The reason it is not
already is two fold:
1) Javagroups is under LGPL, which is not distributable under EPL...so
if we do a javagroups-based ECF provider we cannot distribute it under
the EPL (we can still do one, it's just that it has to be distributed in
some other way...i.e. commercially, or under some non-EPL license...and
not via eclipse.org)
2) We haven't had enough time to do as many providers as we would like.
We now have an ECF 'generic' provider (server-reflected tcp-based
messaging), and a JMS provider using the ActiveMQ implementation of JMS
(http://ecf1.osuosl.org). We would very much like to already have a
javagroups-based provider and a JXTA provider...but just haven't been
able to do it yet. There is a nice little tutorial on using ECF to
create such a provider however available here:
http://www-128.ibm.com/developerworks/opensource/library/os-ecl-commfwk/
But we would love to coordinate such an effort with others to use
javagroups as a messaging provider for the ECF shared object api. The
basic models are very compatible...i.e. replication of a set of
distributed objects, and reliable, ordered messaging (via javagroups
channels) to deliver and apply state updates.
So if you are able perhaps we could coordinate putting in place an ECF
provider implemented with javagroups in support of your project. Let me
know if this would be doable, and how/whether you would like to
participate in such an effort.
Thanks,
Scott