Title: Double Buffering
1Server Suite
Universal Multichannel Middleware Server for
Rich-Clients A Java Framework for
Agent-basedClient/Server Programming
2Content
- EsprIT ServerSuite Overview
- Web- or rich-clients?
- Multi-channel client sessions
- Agent concept
- Client-Commands / Async-Tasks
- MVC over net / Alive Business Objects
- Workflows
- EsprIT client framework
- EsprIT server functions
- Server Cascading
- Server Database Access
- Key advantages
3Web- or Rich-client?
Web-Browser
ServletJSPsStrutsHtmlXMLTaglibsPHPASPPEARL
CGI
WebServer
HTTP/HTML
WebClient
statelessunidirectional
What the web-server for web-clients...
Java VM
Java Object- Serialization
EsprIT-Server
RichClient
Agents
statefullbidirectional
...is the EsprIT-server for rich-clients
4Rich-clients come back
Advantages/Disadvantages Summary
- Web-client
- No software installation required
- - Browser dependent
- - Limited to browsers GUI
- - Limited complexity
- - No real session management
- - Difficult to make fail-safe
- - Software difficult to maintain
- - Tough server-polling
- - Reduced performance (HTML)
- - Heavy server side load
- Rich-client
- - Needs installation on each client
- (Automatic since Java-Webstart)
- No browser needed at all
- Full GUI power
- Unlimited complexity
- Real session management
- Robust and fail-safe
- Software easy to maintain
- Instant client updates
- Best possible performance
- Load balanced on client/server
5Client Connection
- EsprIT multi-channel client connections
- Request/Response channel for sync/async client
requests - Message channel for async server messages
- (optional) Transfer channel for mass data
transfer - (optional) Web channel for access to HTML
documents - Request/Response and Message channel build a
client-session
6Request/Response Channel
- Request/Response channel (synchroneous)
- Request is sent to server and client waits until
Response is received - Request and Response can carry a serializable
Object argument - Request may run into timeout either on server or
on client - Request can have a low/high priority
- Request can be async (Response is sent in a
Message) - sync client blocks waiting for response
- async only the calling GUI action blocks waiting
for response in message
Request
EsprIT Server
Database
Client
Response
7Message Channel
- Message Channel (asynchroneous)
- Server sends asynchroneous Messages to client
- Message can carry any serializable Object
argument. - Message may be caused by Server, other clients or
client himself - Different types of Messages cause different
client reactions - Client may register/deregister for particular
types of Messages - Client may receive an executable command in a
Message
Client registersfor message types
EsprITServer
Message
Database
Client
8Transfer channel
- Transfer channel for mass data transfer
- Temporary TCP connection just for mass data
transfer - Performs mixed up/download of filesets in a
transaction - Can run sync/async, locked/unlocked, with
high/low priority - Only connected, authenticated clients can use
transfer port - Many file transfers may run in parallel
transactionalup/downloadof file sets
EsprIT Server Transfer channel
Database
Client
9Web channel
- Integrated Webserver
- Provides access to HTML documents, images,
classes etc. - PUBLIC Web root-directory for unauthorized access
- PRIVAT Web root-directory for authorized access
public area
private area
HTTP Request
EsprIT Server Web Channel
Database
Client
HtmlImages etc...
10Agent concept
- Synchroneous Agent execution
- Agent may be an argument of Request/Response or
Message - Agent is executed on the server and then returned
in Response - Agent is postprocessed on client at receive time
- Carries input params for execution as well as
results of execution - May run with user defineable priority
- Can have any Serializable Object argument (zipped)
Request
Sync
Database
Client
Response
11Async Agents
- Asynchroneous Agent execution
- Agent can be executed asynchroneously on server
- After execution Agent is sent back to client in a
Message - The calling GUI Action blocks until Agent-Message
is received - Async Agent can be cancelled by the client at any
time - Client can run many async Agents in parallel on
the server - When client disconnects, server terminates all
it's running Agents
Request
Database
Client
Async
Message
12Parallel Agent Execution
- Parallel Agent execution on client and server
- Async Agent is synchroneously executed on server
and immediately returned to client in Response
(with partial results) - Async execution of Agent is started on server
- Postprocessing of sync Response-Agent is started
on client - Server sends finished Agent to client in Message
(with full results) - Client postprocesses the received Message-Agent
- Thus server and client have been processing in
parallel
Request
Sync
Database
Client
Response
Async
Message
13Sequenced Agents
- Sequenced Agents are received in multiple
messages - Large result data are sent in a sequence of
multiple chunks - Chunk size is user definable
- Client can display progress in a progress bar
- Client GUI action blocks until last chunk is
received - Example read large record sets from a database
Request
Client
Database
Async
Async
Async
Multiple Messages
14Client Commands
- Server can send a command to the client
- Is executed on the client when received
- Can be executed sync or async within client
- Can do ANYTHING on client side
- Server uses client-command to control
clientsExample forced termination of client - Users can send client-commands to other users
Client-Command
Client
EsprIT Server
Database
15Remote Tasks
- Synchronization between local and remote task
- Client thread starts remote thread (process) on
the server - Client thread awaits task-events of the
server-thread - Server-thread sends process-typical
task-eventsSTART, PROGRESS, SUCCEEDED,
CANCELLED, FAILED, FINISHED - The FINISHED-event terminates wait-state of
client in any case - Simplifies programming of async workflows
Local Thread
Remote Thread
Local Thread
TaskEvent
EsprIT Server
Client
Progress Monitoring
16Client Communication
- Clients can directly communicate to each other
- A client can send as message to
- - a particular other client (SessionId)
- - all clients of a particular user (UserId)
- - alle connected clients
- Integrated client-chat-tool
- Integrated client-notification-tool
Message
Integrated client chat-tool
17Writing Applications
- Agents are the programming API for custom
applications - Agents contain code for processing on Server and
Client - Thus an Agent encapsulates a particular custom
functionality - Writing a custom application means Writing
particular Agents for particular functions -
thats all! - No server code needs to be changed
- Comprehensive Agent-library available for
standard functions
18MVC over Net
- Model-View-Controller over net
A client (Controller) modifies the Model
All clients are beeing notified and refresh
their view
19Alive Business Objects
- Alive" Business Objects, global accessible
server-objectswith dynamic updating on all
clients (via event notification)
EsprIT Server
One client modifiesthe business-object
All clients are beeing notified and refresh their
view
20Alive Business Objects II
- Alive Business Objects (ABOs)
- Use MVC over net
- ABOs are distinguished by PrimaryKey
- Changes are notified to all accessing clients
- ABOs can be accessed with exclusive lock
- ABOs can be database-persistent
- Extremly easy to use
- fetch(withLock, PrimaryKey) Access by PrimaryKey
(evtl. with exclusive lock) - find(SqlCondition) Search all ABOs matching the
condition - drop() Forget this ABO (no updates any more)
- create() Create new ABO on server side
- update() Update local changes on server side
- delete() Delete ABO on server side
21Alive Business Objects III
- ABO Server-cache
- Server caches ABOs for fast access
- Server knows, which client has access to which
ABO - Change-events are only sent to accessing clients
- Client can "drop" ABO and wont receive
change-events any more - Server removes ABO from cache if nobody accesses
it any more - Cache-resistent ABOs remain in the cache forever
22Workflows
- Workflows
- Controls execution of a set of async tasks
- Incl. remote-tasks, file-transfers,
stream-downloads etc... - Workflow Monitor displays planned/running/done
tasks
- Decision-points allow for manual interaction and
flow control - Cancellable any time
- Clean error processing
- Many workflows can run at the same time
23Resource Locks
- Server resource locks
- Any Server-Object can be associated with a lock
- SHARED protects against deletion during access
- EXCLUSIVE protects against foreign changes
- Resource Locks are "leased"
- Client must retrigger a lock in timeIf client
goes away all its locks are beeing released
automatically - Administrator can enforce release of a lock
- Examples
- Lock server file access
- Lock database access
- Lock ABO (Alive Business Object) access
24EsprIT Client
- Comprehensive customizable client framework
- Powerful GUI framework for developing clients
- Dynamic attach/detach to/from EsprIT-Server
- Direct inter client communication
- Many ready to use GUI components and support
classes - Powerful async task framework
25Client Activity Monitor
- Client's asynchroneous activity can consist of
- Agents Running async Agents on the server
- Transfers Running async transactional file
transfers - Processes Running async local OS-processes
- Commands Running async commands received from
server - All client activity can be visually monitored
- User may cancel any async activity at any time
Connect/disconnect button
Client activity monitor
Request/message indicator LEDs
3 async Agents currently running on server
26EsprIT Admin Client
- Administration client for controlling EsprIT
Server - Observe server activity by viewing server profile
- Observe server console messages and server events
- View and manage server logfiles
- Configure server runtime parameters dynamically
- Allows to monitor and control clients
- Communicate to clients (via messages)
27EsprIT Server
- Fully equipped multi-channel middleware server
- Runs as a background (Java) process on any
platform - Real session-management (Request/Response,
Message) - Optional services (Transfer-, Web-channels)
- Scalable thread pools (configurable at runtime)
- Integrated User/Group manager
- Manages resource locks (leasing)
- Comprehensive logging functionality
- Server-status notification to clients (messages)
- Observable server statistics
- Depends on nothing but Java
- Easy customizable by pluggable server components
- UserManager, TaskManager, PermissionManager
etc... -
28Server Profile
- Server activity profile snapshot
29Integrated WebServer
- Webservice access to documentation, images etc...
30Database Access
- Client access to database (full edit
functionality)
31Server Cascading
- EsprIT servers can be connected to each other
- A server may be client of any other server
- Co-client/co-server connections are failsafe
(monitored) - Requests can be routed to any target server
- Agents can travel around multiple servers
32Co-Clients, Co-Server
- Co-client and co-server connections
This server has another server as a co-client
This server is co-client of 2 other co-servers
3 users logged in
One user holds an exlusive lock on a server
resource
One user is running a file transfer
33More Server Features
- Additional server features
- Support for batch-processes (time scheduled
background jobs) - Self-surveillance with alarm notification via
E-Mail - Self-healing inter-server connections
- Dynamic connection-pool to database (parallel
transactions) - Simultaneous connections to multiple
databases(with direct data transfer between
different vendors databases)
34Application Example I
- INCA Project, BGR Hannover
35Application Example II
- HiLocate Project, ISA Telematics
36Application Example III
- BDE-IS Project, Hydro Aluminium Hamburg
37Key Advantages
- Key advantages of EsprIT Client/Server Technology
- True sessions (Request/Response and Message
channels) - Client notification via message, no
server-polling,true Model-View-Controller (MVC)
over net - Fast and easy data transfer (Java-serialization)
- No overhead like XML or data conversionHigh
performance (stable TCP connections) - Transactional file-transfers
- Upload/download of mass-data client?server,
server?server - Extremely flexible Agent concept
- Agents serve as easy to program API for custom
functionality - Alive Business Objecst (ABOs)
- Gives all clients a consistent view of the world.
- Server Cascading
- Allows for scalability and task sharing among
many hosts
38Key Advantages II
- Key advantages of EsprIT Client/Server Technology
- Chaining complex sync/async operations with
Agents, ClientCommands, Tasks, FileTransfers,
etcExample Client starts CAD system and
creates input-fileInput-file is automatically
beeing uploaded to central serverCentral server
creates database entry and forwards data to
compute-server Compute-server starts calculation
and transfers results to central-serverCentral-se
rver updates database and notifies clientClient
downloads result file(s)Client starts CAD-system
for displaying results...All this in an
automatic procedure, whereas each operation
triggers the next - Independent from database system (pure JDBC)
- Independent from hardware platform (pure Java)
- Many, many possible applications
39Best Rich-Client Support
- Where EsprIT Server is the best fit
- The ideal server for rich-client support
- Rapid development of client/server applications
- Best support for clients
- which are complex in functionality,
- need to be highly responsive,
- need to be dynamically kept up to date
- EsprIT server may perform
- auditing or monitoring of remote processes
- running time scheduled server processes
- Server-cascading allows for
- running different tasks on different hosts
- surveillance of activity on remote hosts
40Comparision
EsprIT-Server or Application-Server?
- EsprIT-Server
- Low cost
- Low maintenance effort
- Low learning effort
- Server cascading
- Easy programming API (Agent)
- No restrictions in functionality
- Client message notification
- Best possible performance (dual port TCP)
- - Cannot be clustered
- Application-Server
- - High cost
- - High maintenance effort
- - Very high learning effort
- - No Server cascading
- - Complex mixture of technologies
- - Restricted to EJBs
- - No client message notification
- - Limited performance (RMI, SOAP, XML etc...)
- Can be clustered