|
The beWeeVee Software Development Kit allows you to enhance your application with live
collaboration features. By leveraging Operational Transformation properties, beWeeVee is able to
synchronize data structures without requiring locking a central copy to achieve
the illusion of zero latency on collaboration scenarios.

- Peer-to-Peer Operational Transformation Engine
- Support for .Net 3.5, .Net 4.0 and Silverlight 3.0
- Designed to enhance your applications' user experience in:
- Native support for simultaneous text edition (Ranges API)
- Native support for .Net lists (Ranges API).
- Support for conflict-free data synchronization (Ranges API or Native API)
- Extensibility model

The Operational Transformation (OT) Technology is the typical support of advanced
groupware systems. It was originally developed for consistency maintenance and concurrency
control in live collaboration plain text documents editing. The base technology
pioneer by C. Ellis and S. Gibbs in the GROVE system in 1989. It adopted a replicated
architecture for the storage of shared documents to ensure good responsiveness over
high latency networks, such as the internet. It's lock-free, non-blocking and time
insensitive nature makes it very suitable for implementing live collaboration features.
beWeeVee users Operational Transformation to propagate the changes performed over
data structures through a peer-to-peer or client-server architecture. Artifacts
like documents, diagrams, web pages or other digital formats changes over time.
Those changes can be transformed by beWeeVee to create canonical operations that
can be replicated to remote sites achieving the illusion of low latency realtime
changes. When operations are integrated into the local peer they become part of
an operation stream that represent the entire document at a particular moment in
time.
beWeeVee also support generic data lists, that allows the software developers to
perform data synchronization in a peer-to-peer networks topology. As the support
for realtime conflict-free changes is independent of the content itself multiple
types of software application would benefit of integrating beWeeVee.

Operation streams allow beWeeVee to reconstruct the state of the artifact at any
specific moment in time. Given enough storage the operation stream can become the
entire history of changes performed over a document. Think on it, as if, at every
keystroke you are saving a copy to be used later, only that beWeeVee does that including
your remote users, ensuring consistency and positional intention preservation. Operation
streams in the context of beWeeVee enable features such as endless undo and artifact
changes playback.
Technically speaking, we can think of any artifact as an initial copy and a set
of operations performed over that artifact. Lets say that you have a list <1,2,3>
and now you add 'a' in between 1 and 2.
In a simplified form, the operations stream would be:
(InsertEnd '1') (InsertEnd '2') (InsertEnd '3') (InsertInBetween<1,2> 'a')
Now you can apply those operations to your empty state and know how the list has
been mutated to achieve the final form. Things get complex because your are not
the only one performing the changes, other remote users may be doing that also.
A simultaneous insertion of the 'a' in between 1 and 2 may be conflicted with the
insertion of a 'b' in between 1 and 2.
In that case my operations stream would be:
(InsertEnd '1') (InsertEnd '2') (InsertEnd'3') (InsertInBetween<1,2> 'a') (T(InsertInBetween<1,2>) 'b')
while the remote users' operation stream would be:
(InsertEnd '1') (InsertEnd '2') (InsertEnd '3') (InsertInBetween<1,2> 'b') (T(InsertInBetween<1,2>) 'a')
If you noticed the T, it signal that beWeeVee have transformed the operation in
such a way that applying it would cause the same end state in every single peer.

beWeeVee is a native peer-to-peer enabled technology. If your application uses a client-server architecture, one of the peers behave as server and the other as client. Each beWeeVee client in a peer-to-peer architecture or a client-server architecture behaves as a server node and can use an open or a propietary protocol to send the operations to the rest of the peers.
In other scenarios, multiple peers may behave as federated servers using the same or a different protocol. As beWeeVee, by design, do not assume the communication channel the application developer would use; the application developer is free to decide which communication technology is the best fit for their application. In the case of the peer-to-peer typical scenario, the application developer can decide how many peers to include in the peer-to-peer network topology
In the following example the architecture uses a peer-to-peer network technology to implement a client-server architecture with a master-slave server architecture.
Rest assure that the beWeeVee team would advice you on the best architectural approach for your application needs.
Contact us for any inquiry
or visit our
Forums .
|
|