Title: Implementing Collaborative Applications
1Implementing Collaborative Applications
Prasun Dewan
Department of Computer Science University of
North Carolina CB 3175 Sitterson Hall Chapel
Hill, NC 27599-3175 dewan_at_cs.unc.edu http/www.c
s.unc.edu/dewan
2Infrastructures
Applications
Infrastructures
Applications
3(No Transcript)
4Automation vs Flexibility Tradeoff
Programmer
User
5Favouring the Programmer
Programmer
User
6Favouring the User
Programmer
User
7Shared Window System
Application
Stefik 87
Tightly-Coupled Meetings
Easy to Understand
Application-Independent
Automatable
Window
Window
WYSIWIS
Coupling
Audio/Video
User 1
User 2
8Centralized Architecture
XTV (88) VConf (87) Rapport (88) NetMeeting
X Client
Pseudo Server
Pseudo Server
X Server
X Server
User 1
User 2
9Replicated Architecture
Rapport VConf
X Client
X Client
Pseudo Server
Pseudo Server
X Server
X Server
User 1
User 2
10Synchronization in Replicated Architecture
X Client
X Client
Insert e,2
Insert d,1
Pseudo Server
Pseudo Server
X Server
X Server
User 1
User 2
11Migrate Central Client
X Client
Pseudo Server
Pseudo Server
X Server
X Server
User 1
User 2
12Migrate Central Client
Chung Dewan 96
X Client
Pseudo Server
Pseudo Server
X Server
X Server
User 1
User 2
13Shared Window System
Application
- Scroll Wars
Tightly-Coupled Meetings
- Window Wars
Easy to Understand
- No Flexibility
Application-Independent
- Performance
Automatable
- Consistency
Window
Window
WYSIWIS
Coupling
Audio/Video
User 1
User 2
14File System
File
lrwx
Read/Write
Process 1
Process 1
User 1
User 2
15Relational DBMS
M
IDS
L
Fine-Grained Query Language
Database
Insert/Delete/Select
Process 1
Process 1
User 1
User 2
16Replicated Disconnected Databases
Replica
Replica
source determines
read access
delete replication old data replication
replication schedule
IDS
M
IDS
M
destination determines
write access type replication record
replication ACL rep. rep. param. rep.
immediate rep.
Process 1
Process 1
User 2
User 1
17Coda Connection Degree
Data
Server
send update cache
send update
get uncached
Client 1
Client 2
Cache
Cache
User 1
User 2
18Interprocess Communication
Session Manager
register, get peers
Process 1
Process 1
Absolute Flexibility
- No Automation
User 1
User 2
19ISIS Causal and Atomic Broadcast
create_group, join_group, leave_group
P2
P1
ISIS
ISIS
P3
ISIS
20Multiple Views
Model
request
View
View
Window
Window
User
21Multiple Threads in Rendezvous
Model
Multi Views
Prevent starvation
-Two-Phase Comm.
View
View
-Central Arch.
Window
Window
Host 1
Host 2
User 1
User 2
222-Phase Model-View Protocol
Figure originally appears in 22
23Clock Optimized MVC
Figure originally appears in 22
24Xeroxs Colab. Broadcast Methods
Model
Model
View
View
Window
Window
User 1
User 2
25GroupKit Environment Replication
K1, V1
K1, V1
Environment
Active Environments
P
Q
Multicast Session-based Calls
S
Procedures
U
26GroupKit Open Session Management
K1, V1
K1, V1
K2, V2
K2, V2
I
I
P
R
Q
updateEntrant
userReqNewConf
newUserApproved
Registrar
27(No Transcript)
28(No Transcript)
29Suite Parameterized Generator
Active Variables
C Application
bool validateElem V1(int newVal)
void updateV1 (int newVal)
void updateElemV1 (int index, newVal)
Attributed Interaction Variables
transmit
edit v12
commit
validate
30Text Editor
31Text Editor
32Multiuser Outline
33Outline
34Talk
35Talk Program
36Command Interpreter
37Command Interpreter
38Web
Wide-Area Naming and Sharing
HTTP Server
Form 1
High-level Local UI
Cgi scripts
-Async
-Jittery
Web Browsers
Rendered HTML Document
User 2
User 1
39Implementation Taxonomy
40Single-User Architecture
Model
View
Windows
PC
User 1
41Layered Interaction with an Object
Abstraction
Interactor Absrtraction Representation
Syntactic Sugar
Interactor/Abstraction
Interactor/Abstraction
X
Interactor
42Single-User Architecture
Abstraction
Interactor
Interactor
Interactor
User 1
43Generic Architecture
Abstraction
Semantics
Stem
Version
Version
Branch
Branch
Interactor
Hardware
Interactor
Hardware
User 1
User 2
44Example Layers
Model
View
Windows
PC
User 1
User 2
45Varying Replication Degree
Model
Team Workstation
View
Pure Centralized
Windows
PC
Degree 0
User 1
User 2
46Varying Replication Degree
Model
Shared Window Systems
View
XTV
Rapport
NetMeeting
Centralized
Windows
Windows
Degree 1
PC
User 1
User 2
47Varying Replication Degree
Model
View
Degree 2
Windows
PC
User 1
User 2
48Varying Replication Degree
Model
Degree 3
Hybrid
Windows
PC
User 1
User 2
49Varying Replication Degree
Replicated
Divergence Concurrency Distribution -
Duplication - Non-
Idempotent Operations
Windows
PC
User 1
User 2
50Varying Concurrency Degree
Model
Windows
Serial
PC
Degree 0
User 1
User 2
51Varying Concurrency Degree
Model
Semi-concurrent
Degree 1 lt R
Windows
PC
User 1
User 2
52Varying Concurrency Degree
Model
Concurrent
Suite Rendezvous Weasel Clock
Degree Replication Degree
Fairness Concurrency Distribution -
Scheduling Overhead - Programming Overhead
Windows
PC
User 1
User 2
53Varying Distribution Degree
Model
Windows
Single-Site
PC
Degree 0
User 1
User 2
54Varying Distribution Degree
Model
Rendezvous
Semi-Distributed
Degree 1 lt Concurrency Degree
Windows
PC
User 1
User 2
55Varying Distribution Degree
Distributed
Model
Degree Concurrency Degree
Suite Weasel Clock
Local Response Compact
Communication - Programming Overhead - Pointers
Windows
PC
User 1
User 2
56Varying Collaboration Awareness
Model
Team Workstation
Windows
Hardware-support
PC
Degree 0
User 1
User 2
57Varying Collaboration Awareness
Model
Shared Window Systems
XTV
Rapport
NetMeeting
Window-support
Windows
Degree 1
PC
User 1
User 2
58Varying Collaboration Awareness
Model
Suite Weasel Clock
Sharing Flexibility - Interaction Flexibility
Windows
PC
User 1
User 2
59Partitioned Support
Model
Separation of Concerns - Duplication -
Coordination
Windows
PC
User 1
User 2
60Adding Collaboration Awareness
61Colab. Transparent Delegate
62Replication Granularity
Coarse Grained
XTV
Fine-Grained
Suite, DistView
63Replica Naming
Efficient
Reusable
XTV
64Peer-Peer Coupling
65Peer-Peer Coupling
66Peer-to-Peer Coupling
67Display Consistency
68Algorithm
69Algorithm
t (Ii, pi, Ij, pj) if Pi gt Pj t
Ii(Ci, Pi1) elsif Pi lt Pj t Ii(Ci,
Pi) elsif Ci Cj t null
elseif pi gt pj t Ii(Ci, Pi)) else t
Ii(Ci, Pi1)
70Inserting at Same Position
Site 3
Site 1
Site 2
O2 Insert (B, 1)
O3 Insert (C, 1)
O1 Insert (A, 1)
O2 Insert (B, 1)
O3 Insert (C, 1)
A
C
A
B
C
71Tricky Case
Site 3
Site 1
Site 2
O3 Insert (C, 1)
O3 Insert (C, 1)
O1 Insert (A, 1)
O1 Insert (A, 1)
O1 Insert (A, 1)
C
A
C
A
B
C
72Implementing Undo
Full Check Point
Check Point C1s Effects
C1
C1
Full Check Point
Check Point C2s Effects
C2
C2
Full Check Point
Partial Check Point
73Implementing Undo
Full Check Point
Inverse(C1)
C1
C1
Partial Check Point
Inverse(C2)
C2
C2
Partial Check Point
Inverse Commands
C3
Hybrid Approach
74Selective Undo
Ins 1, C
Del 1, C
Del 1, C
Ins 1, A
Ins 1, B
75Multi-Layered Undo
76History Command Object
History
77Distributed Undo
5.0
5.0
6.0
6.0
5.0
5.0
5
6
5
78Collaborative Undo
5.0
5.0
6.0
6.0
5
6
Requesting Object
Originating Object
79Composable Support
Model
Collaboration Bus
Composable Logger
Separation of Concerns - Coordination
Windows
PC
User 1
User 2
80Coupling Awareness
81Collaboration Bus
82(No Transcript)
83(No Transcript)
84(No Transcript)
85(No Transcript)
86(No Transcript)