Full HTML for

Basic foilset Overview of Tango2 Design and Implementation

Given by Krzysztof Walczak at NPAC Seminar on 27 August 97. Foils prepared 24 Nov 97
Outside Index Summary of Material


Tango2 is a state of the art Web based Collaboration System
This describes the principles and design of next version of Tango called Tango2
Tango2 is targeted at release April 98
Tango2 has a more sophisticated multi-room model than original Tango1
but still supports several different client application languages
The basic principles are followed by discussion of Client Daemon and the Server

Table of Contents for full HTML of Overview of Tango2 Design and Implementation

Denote Foils where Image Critical
Denote Foils where HTML is sufficient

1 Tango 2
2 Why Tango2 Will Be Better ...
3 What is Wrong with Tango1...?
4 Tango2 Basics
5 Multiple Servers
6 No Plug-in !
7 Room Paradigm
8 Contents-server Independence
9 Server and Rooms Configuration
10 Multi-Room Paradigm
11 Tango Configuration
12 Restartable Applications
13 Room Paradigm - Summary
14 Protocol Improvements
15 Polling Mechanism
16 Shared Variables
17 Locks and Variables (cont.)
18 Shared Variables - Lifetime
19 Locks
20 Values
21 Predefined Sessions
22 Predefined Locks and Values
23 Access Restrictions
24 Compatible Application Groups
25 Different Applications
26 Control Application - Discussions
27 No Control Application !
28 Control Types
29 No Master !
30 API
31 API
32 Tango Reflection API
33 Tango Reflection API (cont.)
34 Administrator Interface
35 Fixed System vs. Sockets
36 Tango II : daemon
37 daemon Responsibilities
38 Connecting to the Room
39 Managing activities
40 Moving to the new Room
41 Services for Applications
42 daemon Architecture
43 Modules
44 Message flow in the daemon
45 Applets
46 Room Configuration
47 Tango2 server
48 Tango2 server - tasks
49 Tango2 server - architecture
50 Tango2 server - Room module
51 Tango2 server - implementation
52 Tango2 server

Outside Index Summary of Material



HTML version of Basic Foils prepared 24 Nov 97

Foil 1 Tango 2

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Overview of the system
NPAC, August 27, 1997
Krzysztof Walczak

HTML version of Basic Foils prepared 24 Nov 97

Foil 2 Why Tango2 Will Be Better ...

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
The same Team of developers is doing the same project once again
We use better technologies which were not in place when Tango1 was developed

HTML version of Basic Foils prepared 24 Nov 97

Foil 3 What is Wrong with Tango1...?

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Lack of scalability
One-server system; no connections
Plug-in (installation) required
No synchronization methods
No application initial state
Fixed Control Application
No user-defined spaces
Difficult to use API
Communication protocol not always reliable

HTML version of Basic Foils prepared 24 Nov 97

Foil 4 Tango2 Basics

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Multiple independent servers
No plug-in
Room paradigm
Contents-server independence
Improved protocol
New communication mechanisms
Access restrictions
Compatible applications
Communication between different applications
No distinguished Control Application
No Master
Event and method-based APIs

HTML version of Basic Foils prepared 24 Nov 97

Foil 5 Multiple Servers

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Servers are the basic collaboration element
Servers are independent
Servers are used for collaboration - not contents delivery
No server-server communication
One user can use only one server at a time

HTML version of Basic Foils prepared 24 Nov 97

Foil 6 No Plug-in !

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
daemon implemented as an applet
VeriSign signing
Signed daemons can communicate with other servers and standalone applications
No installation required!
We can control all software versions!

HTML version of Basic Foils prepared 24 Nov 97

Foil 7 Room Paradigm

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Room is an abstract construct which can separate sets of Tango users
Rooms are used also for environment customization
Rooms are linked
Rooms are gathered into communities
Rooms and communities are files on an HTTP server
Each Tango2 user must be in a room

HTML version of Basic Foils prepared 24 Nov 97

Foil 8 Contents-server Independence

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Server does not provide any contents - it maintains only a list of rooms
All contents including room configuration, room description, community configuration, and user authentication is stored on HTTP server

HTML version of Basic Foils prepared 24 Nov 97

Foil 9 Server and Rooms Configuration

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Tango
Server
HTTP
Server
RCF
CCF
CAF
RDF
N
daemon
SCF
LACF

HTML version of Basic Foils prepared 24 Nov 97

Foil 10 Multi-Room Paradigm

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
N
D
D
Tango
Server 1
Tango
Server 2
Control
Application
Appl 1
Appl 2
Appl 3
Appl 2

HTML version of Basic Foils prepared 24 Nov 97

Foil 11 Tango Configuration

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Server Configuration File - SCF
Community Configuration File - CCF
Room Configuration File - RCF
Community Authorization File - CAF
Room Description File - RDF

HTML version of Basic Foils prepared 24 Nov 97

Foil 12 Restartable Applications

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Typically applications are closed when the user changes a room
In some communities different rooms may use the same applications
Restartable applications are applications which may remain when the user changes the room

HTML version of Basic Foils prepared 24 Nov 97

Foil 13 Room Paradigm - Summary

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Session is the unit of collaboration
Room is the unit of visibility
Community is the unit of authorization
Constraints:
Rooms and sessions cannot be shared among servers

HTML version of Basic Foils prepared 24 Nov 97

Foil 14 Protocol Improvements

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Better, more reliable communication protocol
Acknowledgement mechanisms
Operation sequences
Point to point communication possible
Filtering of messages
60 messages instead of 17 in Tango1

HTML version of Basic Foils prepared 24 Nov 97

Foil 15 Polling Mechanism

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Hierarchical polling mechanism
Server checks whether all daemons are alive
daemons check whether all applications are alive
Not responding applications or daemons are killed

HTML version of Basic Foils prepared 24 Nov 97

Foil 16 Shared Variables

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Tango2 supports message passing and shared variables for communication
Shared variables is a new mechanism which enables:
  • synchronization of applications
  • sharing data
  • initial state implementation
  • communication between entirely different applications

HTML version of Basic Foils prepared 24 Nov 97

Foil 17 Locks and Variables (cont.)

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Variables are identified by names
Each variable has an owner. Owner can be:
  • a user
  • a session
Each variable has a scope. Scope can be:
  • session
  • room
  • server
Variables are locked in alphabetical order

HTML version of Basic Foils prepared 24 Nov 97

Foil 18 Shared Variables - Lifetime

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Lifetime of a shared variable depends on its owner and scope

HTML version of Basic Foils prepared 24 Nov 97

Foil 19 Locks

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Lock is the part of the variable which is used for access synchronization to the variable
Locks can be used as independent locking mechanism - the value is ignored
Lock can have value of N, S, or X
In case of S lock value a set of users is associated with the lock
In case of X lock value one user is associated with it

HTML version of Basic Foils prepared 24 Nov 97

Foil 20 Values

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Value is the part of variable which is holds the contents
Anything which is serializable can be a value
Server does not interpret the values in any way
Serialization used for transport
Security issues

HTML version of Basic Foils prepared 24 Nov 97

Foil 21 Predefined Sessions

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Some of the applications have predefined sessions which they should join
Predefined session is a parameter of application
Start-up applications join predefined sessions
Predefined sessions are identified by names

HTML version of Basic Foils prepared 24 Nov 97

Foil 22 Predefined Locks and Values

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
JOIN (session) - owner controls the joining process for the session
TERMINATE (session) - owner is asked for permission to terminate an application
MASTER (session) - only messages from the owner are distributed
ENTER (room) - owner decides if other users can enter the room

HTML version of Basic Foils prepared 24 Nov 97

Foil 23 Access Restrictions

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Access restrictions defined for Community
Configuration files stored on HTTP server
User verification by Login Applet
Possible access policies:
  • NAME and PASSWORD
  • NAME
  • FREE (by name without checking) - Tango1
  • NONE
Special Login Applet for user authentication

HTML version of Basic Foils prepared 24 Nov 97

Foil 24 Compatible Application Groups

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Application Type consists of:
  • Application Group
  • Application Sub-type
Application with the same application group can be in the same session
All applications in the same application group implement the same protocol

HTML version of Basic Foils prepared 24 Nov 97

Foil 25 Different Applications

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Different applications can communicate by the use of variables
Only room and server variables can be used for such communication
Notification about update of a value is sent to all registered applications

HTML version of Basic Foils prepared 24 Nov 97

Foil 26 Control Application - Discussions

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
...
TangoDeveloper1:
I think Control Application has to do this ...
TangoDeveloper2:
I told you so many times: THERE IS NO CONTROL APPLICATION!!!
On the other hand, Control Applications should be able to do it ...
...

HTML version of Basic Foils prepared 24 Nov 97

Foil 27 No Control Application !

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
There will be NO Control Application
There will be many Control Applications
All applications will be Control Applications (more or less control)

HTML version of Basic Foils prepared 24 Nov 97

Foil 28 Control Types

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Each application can be more or less „control" by registering with appropriate control-type
Passive control types: USERS, SESSIONS, ROOM
Active control types: SESSION_ACTIVE, ROOM_ACTIVE
Other control types: ALL, NONE, RESTARTABLE

HTML version of Basic Foils prepared 24 Nov 97

Foil 29 No Master !

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
The notion of „Master" is not supported anymore
Applications can run in master-slave mode by the use of appropriate locks
Much more sophisticated models are possible (e.g. player1, player2, observers...)

HTML version of Basic Foils prepared 24 Nov 97

Foil 30 API

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
APIs for Java, JavaScript, C, C++
Hierarchical API structure
Java event-based API
Java method-based API
  • non-blocking
  • blocking
  • with serialization
  • secure API
  • Tango Reflection API

HTML version of Basic Foils prepared 24 Nov 97

Foil 31 API

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
daemon
Java
API
Java
Script
Reflection
API
Method
based
C/C++
Seriali
zation
Event
based
Secure
API
Bean
API

HTML version of Basic Foils prepared 24 Nov 97

Foil 32 Tango Reflection API

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Applet developer registers objects to be used
Methods of the registered objects can be invoked locally and remotely
Registered objects can be used as method parameters

HTML version of Basic Foils prepared 24 Nov 97

Foil 33 Tango Reflection API (cont.)

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Tango
Reflection
API
Tango
Tango
Reflection
API
OID
OID
o1
m1
o1
m1
...
o1.m(o2)
...
o2
o2

HTML version of Basic Foils prepared 24 Nov 97

Foil 34 Administrator Interface

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Tango2 server provides the administrator interface
Telnet-like interface to the server. Possible use as a base for Web-based applications
Administrator interface enables:
  • obtaining statistical information
  • removing users, sessions, applications
  • starting applications
  • setting parameters
  • re-read of configuration

HTML version of Basic Foils prepared 24 Nov 97

Foil 35 Fixed System vs. Sockets

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Sockets
Added value
Fixed system
Tango1
Tango2
Better
System

HTML version of Basic Foils prepared 24 Nov 97

Foil 36 Tango II : daemon

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Prepared by
Piotr Sokolowski

HTML version of Basic Foils prepared 24 Nov 97

Foil 37 daemon Responsibilities

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Connecting to a Room
Managing activities during the stay in the room
Disconnecting from the room and connecting to a different room

HTML version of Basic Foils prepared 24 Nov 97

Foil 38 Connecting to the Room

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Reading & parsing of the room configuration file
Reading & parsing of the community configuration file
Performing authentication (if required)
Connecting to server used by the room
Starting default applications for the room

HTML version of Basic Foils prepared 24 Nov 97

Foil 39 Managing activities

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Starting, terminating applications as requested by the server
Providing communication between applications and the server
Keeping an updated local copy of information about users, sessions, and locks for fast access
Periodic polling if applications are still alive
Informing interested applications about changes in locks and variables
Providing information services for applications

HTML version of Basic Foils prepared 24 Nov 97

Foil 40 Moving to the new Room

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Verifying that the new room accepts the user
Removing old applications
Starting applications in the new room (Some applications which are running in the old room may be reused)

HTML version of Basic Foils prepared 24 Nov 97

Foil 41 Services for Applications

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Information about users and sessions
Configuration information for each type of application - stored in the room configuration file.

HTML version of Basic Foils prepared 24 Nov 97

Foil 42 daemon Architecture

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
The daemon
Applet Stub
JS Stub
External application Stub
Applet
Java Script
C application
Reflect API
Live Connect
Sockets
To Server

HTML version of Basic Foils prepared 24 Nov 97

Foil 43 Modules

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Configuration
Data
daemon Control
Message Switching
Variable and Lock Control
Application Stubs
Server Connection

HTML version of Basic Foils prepared 24 Nov 97

Foil 44 Message flow in the daemon

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Application Stub
Handler Manager
Data
Manager
Application
Manager
Variable
Manager
daemon
Control
Server
Connection
Applet Stub
External
Application Stub

HTML version of Basic Foils prepared 24 Nov 97

Foil 45 Applets

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Standalone Applet
  • applet in a resizable java frame
Embedded Applet
  • applet embedded in a Netscape window
  • several applets on one HTML page that may also include the daemon

HTML version of Basic Foils prepared 24 Nov 97

Foil 46 Room Configuration

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Room configuration file stores various properties with string values
Room configuration file is divided into sections
Some sections are used by the daemon
Other may store information used by applications (e.g. background color, images used by the application)

HTML version of Basic Foils prepared 24 Nov 97

Foil 47 Tango2 server

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
NPAC 08/28/97

HTML version of Basic Foils prepared 24 Nov 97

Foil 48 Tango2 server - tasks

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Room and Session access control
Shared variables and locks management
Message broadcast (to the session participants and room users)
Time-out control
Administration interface

HTML version of Basic Foils prepared 24 Nov 97

Foil 49 Tango2 server - architecture

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index

HTML version of Basic Foils prepared 24 Nov 97

Foil 50 Tango2 server - Room module

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index

HTML version of Basic Foils prepared 24 Nov 97

Foil 51 Tango2 server - implementation

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Java application (JDK 1.1.2)
Multi-threaded application
Communication with daemons - TCP stream connection
Services run on two ports:
  • administration interface
  • communication with daemons

HTML version of Basic Foils prepared 24 Nov 97

Foil 52 Tango2 server

From Overview of Tango2 Design and Implementation NPAC Seminar -- 27 August 97. *
Full HTML Index
Tango2 server documentation:
http://trurl/tango2/doc/serverdev/tango_server.html

© on Tue Nov 25 1997