EsprIT
Esprit Network Suite
Ein Java Framework für Agenten-basierende
Client/Server Programmierung
1
EsprIT
Just do it
Deine Taten sind sinnlos
wenn niemand davon erfährt
2
EsprIT
Inhalt
Esprit Network Suite
 Web- contra Rich-Client
 Multi-Kanal Client Sessions
 Agenten Konzept
 Client-Kommandos, Server-Calls
 MVC & Alive Business Objects
 Workflows
 Esprit Client Funktionen
 Esprit Server Funktionen
 Server Kaskadierung
 Server Datenbankanbindung
 Key-Vorteile, Vergleich
3
EsprIT
Welt-Netzwerk
4
EsprIT
Web- oder Fat-Client?
Web-Browser
Web
Client
HTTP/HTML
Web
Server
stateless
unidirektional
Was der Web-Server für Web-Clients...
Servlet
JSPs
JSF
Struts
Spring
Html
XML
Taglibs
PHP
ASP
PEARL
CGI
Java VM
Rich
Client
Java ObjektSerialisierung
statefull
bidirektional
EsprIT
Server
...ist der EsprIT Server für Rich-Clients
5
Pure Java
Agenten
Alive Business Objects
EsprIT
Rückkehr der Rich-Clients
Vorteile/Nachteile Web/Rich Clients
Web-Client
Rich-Client
+ Keine Software Installation nötig
+ Zugriff auf Server von überall
- Installation nötig auf Client
(Automatisch seit Java-Webstart)
- Browser abhängig
- Eingeschränkt auf Browser GUI
- Eingeschränkt in Komplexität
- Kein echtes Session Management
- Fehlersicherheit ist schwierig
- Software ist schwer wartbar
- Aufwendiges Server-Polling
- Eingeschränkte Performance
- Starke Last auf Serverseite
+ Kein Browser nötig
+ Uneingeschränkte GUI Power
+ Uneingeschränkte Komplexität
+ Echtes Session Management
+ Robust und Fehlersicher
+ Software leicht wartbar
+ Dynamische Benachrichtigung
+ Bestmögliche Performance
+ Last verteilt auf Client und Server
6
EsprIT
Client Verbindung
Esprit Multi-Kanal Client Verbindungen
• Request/Response Kanal für sync/async Client Anfragen
• Message Kanal für asynchrone Server Nachrichten
• Transfer Kanal (optional) für Übertragung von File-Sets
• Web Kanal (optional) für Zugriff auf HTML Dokumente
Request/Response und Message Kanäle bilden eine Client-Session
7
EsprIT
Request/Response
Request/Response Kanal (synchron)
• Request wird zum Server geschickt, Client erhält Response
• Request and Response tragen ein beliebiges Argument-Objekt
• Request kann auf Client oder Server in Timeout laufen
• Request kann hohe/niedrige Priorität haben
• Request kann asynchron sein (Response wird in Message empfangen)
synchron: Client GUI blockiert vollständig bis Response empfangen wird
asynchron: Nur die aufrufende Client-Aktion blockiert bis Response empfangen wird
Request
Client
Response
EsprIT
Server
8
Datenbank
EsprIT
Message
Message Kanal (asynchron)
• Server schickt asynchrone Message an Client
•
•
•
•
•
Message kann beliebiges Argument-Objekt tragen
Message kann stammen vom Server, anderen Clients, Client selbst
Verschiedene Messages lösen verschiedene Reaktionen bei Client aus
Client registriert/deregistriert sich für bestimmte Message-Typen
Client kann ein ausführbares Kommando in Message erhalten
Kommando wird synchron oder asynchron im Client ausgeführt
Client registriert sich
für bestimmte Messages
Message
Client
EsprIT
Server
9
Datenbank
EsprIT
File-Transfer
Transfer Kanal für transaktionale Datei-Übertragungen
• Tempoäre TCP Verbindung ausschließlich für Datei-Transfer
• Gemischte Up/Downloads von Dateien in Transaktion
• Kann synchron/asynchron, gesperrt/ungesperrt laufen
• Viele Transfers können parallel laufen
• Unterstützt auch File-DownStreaming
Auswertung des Datei-Inhalts direkt aus dem Stream ohne Speicherung auf Client
transaktionale
Up/Downloads
von Dateien
Client
EsprIT Server
Transfer Kanal
10
Datenbank
EsprIT
Web
Web Kanal - Integrierter Web-Server
• Zugriff auf HTML Dokumente, Bilder, etc.
• Client SW-Installation/SW-Aktualisierung per Java-Web-Start
Web Bereich
HTTP Request
EsprIT Server
Client
Web Kanal
Html
Bilder
etc...
11
Datenbank
EsprIT
Runtime-Umgebung
Austausch-Objekte (Agenten)
ClientContext
ServerContext
12
EsprIT
Agenten Lebenszyklus
Agent als zwei-Welten Objekt
1. Instantiierung im Client (ClientContext ctx)
2. Transfer zum Server und Ausführung (ServerContext)
3. Rücktransfer zum Client und Ergebnis-Verarbeitung
MyAgent agent = new MyAgent(ctx);
agent = agent.sendForExecution();
Result result = agent.getResult();
ClientContext
Erzeugung
ServerContext
sendForExecution()
new MyAgent(ctx)
doBeforeSend()
Ausführung
Ergebnis
executeOnServer()
doOnResponseReceived()
doOnMessageReceived()
13
EsprIT
Agenten Konzept
Synchrone Ausführung von Agenten
• Agent ist Argument von Request/Response oder Message
• Agent wird auf dem Server ausgeführt und dann zurückgeschickt
• Agent wird auf dem Client beim Empfang postprocessed
• Agent enthält Input-Parameter und Ergebnisse der Ausführung
• Kann mit definierbarer Priorität laufen
• Kann beliebiges Argument-Objekt beinhalten (ggf. gezipped)
Request
Sync
Client
Datenbank
Response
14
EsprIT
Asynchrone Agenten
Asynchrone Ausführung von Agenten
• Agent kann auf dem Server asynchron ausgeführt werden
• Nach Ausführung wird Agent in einer Message zurückgeschickt
• Die aufrufende GUI-Aktion blockiert bis Message empfangen wird
• Client kann asynchrone Agenten jederzeit abbrechen
• Client kann viele asynchrone Agenten parallel laufen lassen
• Wenn Client terminiert, beendet Server alle Agenten dieses Clients
Request
Client
Async
Message
15
Datenbank
EsprIT
Parallel-Ausführung
Parallel-Ausführung von Agenten auf Client und Server
1. Asynchroner Agent wird teilw. synchron auf Server ausgeführt und
sofort in Response zum Client geschickt (mit Teilergebnissen)
2. Server startet asynchrone Ausführung des Agenten
3. Client startet Postprozessing des Response-Agenten
4. Server sendet fertigen Agenten in Message (mit Vollergebnis)
5. Client postprozesst den erhaltenen Message-Agenten
So findet gleichzeitiges Prozessing auf Server und Client statt
Request
Sync
Client
Response
Async
Message
16
Datenbank
EsprIT
Sequenzierte Agenten
Sequenzierte Agenten erstrecken sich über mehrere Messages
• Große Ergebnismengen werden in mehreren Teilmengen geschickt
• Größe der Teilmengen ist frei definierbar
• Client kann Fortschritt in einem Progress-Bar anzeigen
• Client GUI-Aktion blockiert bis letzte Teilmenge empfangen wurde
• Beispiel: Lesen großer Datenmengen aus Datenbank
Request
Client
Async
Async
Async
Sequenz von
Messages
17
Datenbank
EsprIT
Client Kommandos
Server kann Kommando an Client schicken
• Kommando wird beim Empfang vom Client ausgeführt
• Ausführung kann synchron oder asynchron im Client laufen
• Client-Kommando kann beliebige Funktionen des Clients ausführen
• Server benutzt Client-Kommando, um Clients zu kontrollieren
Beispiel: Erzwungenes Beenden eines Clients
• Benutzer können Client-Kommandos zu anderen Clients schicken
Client
ClientKommando
EsprIT
Server
18
Datenbank
EsprIT
Remote Tasks
Synchronisierter Ablauf zwischen
lokalem und remotem Prozeß
• Client Thread startet remoten Thread auf Server
• Client Thread wartet auf Events des Server-Threads
• Server-Thread sendet Prozeß-typische TaskEvents:
STARTED, PROCEEDED, SUCCEEDED, CANCELLED, FAILED, FINISHED
• Das FINISHED-Event beendet auf jeden Fall den Wartezustand
• Einfache Programmierung von asynchron ablaufenden Workflows
Lokaler Thread
Client
Remote Thread
TaskEvent
EsprIT
Server
Fortschritts-Monitoring
19
Datenbank
EsprIT
Client Kommunikation
Clients können direkt miteinander kommunizieren
• Ein Client kann Nachricht schicken an:
- einen bestimmten Client
- einen bestimmten Benutzer (kann mehrfach eingeloggt sein)
- alle verbundenen Clients
• Integriertes Client-Chat-Tool
• Integriertes Client-Benachrichtigungs-Tool
Client 1
Client 2
Client-Nachricht
EsprIT
Server
Client 3
Integriertes Client Chat-Tool
20
EsprIT
Anwendungen schreiben
Agenten
sind die Programmier-Schnittstelle für Anwendungen
• Agenten beinhalten Code für Prozessing auf Server und Client
• Ein Agent kapselt eine bestimmte Funktion vollständig
• Eine Anwendung schreiben bedeutet:
Schreiben bestimmter Agenten für bestimmte Funktionen!
Das ist alles!
• Server-seitige Software bleibt unverändert
• Umfangreiche Agenten-Bibliothek
für Standardfunktionen vorhanden
21
EsprIT
Anwendungen schreiben II
Programmierung von Anwendungen
MyAgentXY
ClientContext
ServerContext
MyClientContext
MyServerContext
Custom Components
Eigene
CustomKomponenten
Components
22
EsprIT
MVC über Netz
23
EsprIT
Alive Business Objects
"Lebende" Business Objekte, global zugreifbare Server-Objekte
mit dynamischer Aktualiserung auf allen Clients - ohne deren Zutun
Tank ...
Tank 5
Tank 4
EsprIT
Server
Datenbank
Ein Client modifiziert
das Business-Objekt
Alle Clients werden benachrichtigt und aktualisieren ihre Darstellung
24
EsprIT
Alive Business Objects II
Alive Business Objects (ABOs)
• Verwenden MVC über Netz
• ABOs unterscheiden sich durch PrimaryKey
• Änderungen werden an zugreifenden Clients kommuniziert
• Können mit serverseitiger Editier-Sperre zugegriffen werden
• Können Datenbank-persistent sein
• Extrem einfach in der Anwendung
•
•
•
•
•
•
fetch(withLock, PrimaryKey)
find(SqlCondition)
drop()
create()
update()
delete()
Zugriff mit PrimaryKey (ggf. mit gleichzeitiger Editier-Sperre)
Suche nach allen, die SQL-Bedingung erfüllen
Vergiß dieses Objekt (keine Aktualiserung mehr)
Erzeuge neues Objekt auf Serverseite
Aktualisiere Objekt auf Serverseite
Lösche Objekt auf Serverseite
25
EsprIT
Alive Business Objects III
ABO Server-Cache
• ABOs werden auf Serverseite gecached für schnellen Zugriff
• ABO-Access-List
Server weiß, welcher Client welches ABO im Zugriff hat
und schickt Change-Events nur an diese Clients
• Client kann ABO "droppen" und wird dann nicht mehr informiert
• Wenn kein Client mehr zugreift wird ABO aus dem Cache gelöscht
• Cache-resistente ABOs bleiben immer im Cache
EsprIT Server
Client 1
ABO-Cache
TrackABO
GraphABO
Client 2
26
EsprIT
ABO-Anwendung
Anwendung bei Hydro Aluminium Hamburg
Client 1
Vorher
Datenbank
SQL
Client 2
Client 1
ABO
Filter
EsprIT Server
ABO-Cache
Nachher
Client 2
ca. 1000
MFStateABOs
27
SQL
Datenbank
EsprIT
Remote Tasks
Synchronisierter Ablauf zwischen lokalem und remotem Prozeß
• Client Thread startet remoten Thread (Prozeß) auf Server
• Client Thread wartet auf Events des Server-Threads
• Server-Thread sendet Prozeß-typische TaskEvents:
STARTED, PROCEEDED, SUCCEEDED, CANCELLED, FAILED, FINISHED
• Das FINISHED-Event beendet auf jeden Fall den Wartezustand
• Einfache Programmierung von asynchron ablaufenden Workflows
Lokaler Thread
Client
Remoter Thread
TaskEvent
EsprIT
Server
Fortschritts-Monitoring
28
Datenbank
EsprIT
Async Task Framework
Robust kontrollierter Ablauf asynchroner Tasks
29
EsprIT
Workflows
Workflows
• Kontrollierter Ablauf mehrerer asynchroner Tasks
• Incl. Remote-Tasks, File-Transfers, Stream-Downloads uva...
• Workflow Monitor zeigt geplante/laufende/erledigte Tasks
30
EsprIT
Server Sperren
Server Resource Sperren
• Beliebige Server-Objekte können mit Zugriffssperre belegt werden
SHARED
EXCLUSIVE
mehrere Zugriffe erlaubt - schützt vor Löschen
nur ein Zugriff - schützt vor fremden Änderungen
Sperren sind "geleased"
• Client muss eine Sperre regelmäßig retriggern
Fällt Client aus, wird die Sperre automatisch aufgelöst
• Administrator kann Freigabe einer Sperre erzwingen
Beispiele
• Zugriff auf eine Server-Datei
• Zugriff auf die Datenbank
• Zugriff auf ein ABO (Alive Business Object)
31
EsprIT
EsprIT Client
Umfangreiches Client Framework
• GUI Framework zur Entwicklung kundenspezifischer Clients
• Dynamisches Verbinden/Trennen zum/vom EsprIT-Server
• Kommunikation mit anderen Clients
• Viele fertige GUI Komponenten und GUI Unterstützungs-Klassen
• Leistungsfähigs Async-Task Framework
32
EsprIT
Client Aktivitäts-Monitor
Clientseitige asynchrone Aktivität besteht aus:
Agenten:
Laufende Agenten
Transfers: Laufende File-Transfers/Stream-Downloads
Prozesse:
Laufende lokale/remote OS-Prozesse
Commands: Laufende (empfangene) Client-Kommandos
Sperren:
Vom Client belegte Sperren auf Server-Resourcen
ABOs:
Vom Client zugegriffene Alive-Business-Objects
• Sämtliche asynchrone Client-Aktivität kann visuell beobachtet werden
• Benutzer kann jegliche asynchrone Aktivität jederzeit abbrechen
Verbinden/Trennen
Message LED
Request LED
Asynchrone Client Aktivität auf dem Server
33
EsprIT
EsprIT Admin-Client
Administrations-Client zur Kontrolle des EsprIT Servers
• Beobachtet Server-Aktivität (Parameter Profil)
• Zeigt Console-Ausgaben und Server-Events online
• Erlaubt das interaktive Auswerten der Server Logfiles
• Dynamische Konfiguration der Server Runtime-Parameter
• Beobachtet und kontrolliert Clients
• Administrator Nachrichten an Clients
34
EsprIT
EsprIT Server
Voll ausgestatteter Multikanal Middleware Server
• Läuft als Hintergrundprozeß
• Unabhängig von Plattform oder Datenbank (pure Java)
• Skalierbar, dynamisch konfigurierbare Thread-Pools
• Integrierter User-Manager
• Verwaltet Editier-Sperren für Server-Resourcen
• Automatisches Logfile-Management
Div. Logfiles für div. Applikationen
ServerContext
• Leicht auf kundenspezifische
Funktionalitäten zu erweitern
Viele fertige Server-Komponenten verfügbar...
MyServerContext
Eigene Komponenten
35
EsprIT
Server Profil
Server Aktivitäts-Profil
• Beobachtbare Server-Statistiken
36
EsprIT
Integrierter WebServer
Integrierter Webserver
• HTML Dokumentation, Webservice, Classdownloading
37
EsprIT
Datenbank-Zugriff
Remote-Zugriff auf Datenbank (Volle Editier-Funktionalät)
38
EsprIT
Server Kaskadierung
Mehrere Server können zu einem Verbund kaskadiert werden
• Ein Server kann Client eines anderen Servers sein
• Co-Client/Co-Server Verbindungen sind ausfallsicher (monitored)
• Requests können zu einem Ziel-Server gerouted werden
• Agenten können über mehrere Server durchgereicht werden
39
EsprIT
Co-Clients, Co-Server
Co-Client und Co-Server Verbindungen
Dieser Server hat einen
anderen Server als Co-Client
Dieser Server is Co-Client
von zwei anderen Servern
3 Benutzer sind aktiv
Ein Benutzer hält eine
exclusive Sperre auf einer
Server Resource
40
Ein Benutzer führt eine
Datei-Übertragung aus
EsprIT
Weitere Server Features
Weitere Server Features
• Server-Prozesse (Zeitgesteuerte Hintergrund-Jobs)
• Alarm-Benachrichtigung an Administrator über Email
• Exclusive/Shared Sperren auf Server-Resourcen
• Datenbankverbindung mit Connection-Pool (parallele Transaktionen)
• Simultane Verbindungen zu mehreren Datenbanken
(Direkter Daten-Transfer zwischen unterschiedlichen DB-Systemen)
41
EsprIT
BGR
BGR Bundesanstalt für Geowissenschaften und Rohstoffe, Hannover
Finite Elemente Analyse geologischer Prozesse
42
EsprIT
Anwendungsbeispiel I
INCA Projekt, BGR Hannover
43
EsprIT
Anwendungsbeispiel I
INCA Projekt, BGR Hannover, TimeHistory Tool
44
EsprIT
Anwendungsbeispiel II
HiLocate Projekt, ISA Telematics
45
EsprIT
Anwendungsbeispiel III
BDE-IS Project, Hydro Aluminium Hamburg
46
EsprIT
Key-Vorteile
Wichtigste Vorteile der EsprIT Client/Server Technologie
 Echte Sessions aus Request/Response und Message Kanal
Client-Aktualisierung per Nachricht, kein Server-Polling erforderlich.
Echtes Model-View-Controller Prinzip (MVC) über Netz
 Höchstmögliche Performance
Einfache Datenübertragung per Java-Serialisierung, stehende TCP Verbindung.
Kein Overhead durch Daten-Konvertierungen (XML oder ähnl.)
 Transaktionaler File-Transfer
Zum Austausch großer Datenmengen, ClientServer, ServerServer
 Sehr flexibles Agenten Konzept
Agenten als elegante Programmier-Schnittstelle
 Alive Business Objects (ABOs)
Mit automatischer, dynamischer Aktualisierung auf Clients
Alle Clients haben genau eine Sicht der Welt
 Server Kaskadierung
Ermöglicht Aufgabenteilung, Involvierung vieler Systeme, Filetransfers uvm...
47
EsprIT
Key-Vorteile II
Wichtigste Vorteile der EsprIT Server Technologie
 Verkettung komplexer synchroner/asynchroner Operationen mit
Agenten, ClientKommandos, Tasks, FileTransfers
Beispiel:
Client startet CAD System und erzeugt Input-Datei
Input-Datei wird automatisch zum Zentral-Server übertragen
Zentral-Server macht Datenbankeintrag und überträgt weiter an Compute-Server
Compute-Server startet Berechung und überträgt Zwischenergebnis an Zentral-Server
Zentral-Server macht Datenbankeintrag und meldet Ergebnis an wartenden Client
Client holt Ergebnisdatei von Zentral-Server ab
Client startet CAD-System zur Darstellung des Ergebnisses
...
Alles in einem automatischen Ablauf, gesteuert durch den Workflow
 Unabhängig vom Datenbanksystem (pure JDBC)
 Unabhängig von Hardwareplattform (pure Java)
Äußerst vielfältige Anwendungsmöglichkeiten
48
EsprIT
Einsatzmöglichkeiten
Wo kann man den EsprIT Server einsetzen?
 Der ideale Standard-Server für Rich-Client Unterstützung
 Für Entwicklung hochperfomanter Client/Server Anwendungen
 Beste Unterstützung für Clients...
...mit komplexer Funktionalität (mit Web-Clients schwer zu realisieren),
...die kurze Antwortzeiten haben müssen,
...die stets aktuelle Daten anzeigen müssen (Meßwerte, Aktienkurse, Fahrstrecken...)
 EsprIT Server kann beobachten und kontrollieren:
- Ausführung/Monitoring anderer Betriebssystem-Prozesse, Sensoren etc.
- Ausführung/Monitoring zeitgesteuerter Server-Prozesse
 Server-Kaskadierung kann benutzt werden...
...zum Ausführen verschiedener Aufgaben auf verschiedenen Rechnern
...zur Überwachung der Aktivität anderer Rechner und deren Prozesse
49
EsprIT
Vergleich
EsprIT-Server oder Applikations-Server?
EsprIT-Server
Applikations-Server
+ Preisgünstig
+ Wenig Wartungsaufwand
+ Kleine Lernkurve (standard Java)
+ Server-Kaskadierung möglich
+ Leichte Programmier-API (Agent)
+ Keine Einschränkung in Funktion
+ Client Benachrichtigung inklusive
+ Bestmögliche Performance
(dual TCP, keine Konvertierung)
- Relativ Teuer
- Hoher Wartungsaufwand
- Steile und hohe Lernkurve
- Keine Server-Kaskadierung
- Komplizierter Technologie-Mix
- Eingeschränkt auf EJBs
- Keine Client-Benachrichtigung
- Eingeschränkte Performance
(RMI, SOAP, XML etc...)
- Kein Clustering
+ Kann im Cluster arbeiten
50
EsprIT
Kleine Firmen bauen einer Arche
Große Firmen bauen die Titanic
51
Herunterladen

*****************xH****************** ***** ***G***G***H***H***H***H