Date post: | 06-Apr-2015 |
Category: |
Documents |
Upload: | baldhild-mottern |
View: | 106 times |
Download: | 0 times |
1
EsprIT
Esprit Network SuiteEin Java Framework für Agenten-basierende
Client/Server Programmierung
2
EsprIT Just do it
Deine Taten sind sinnlos
wenn niemand davon erfährt
3
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
4
EsprIT Welt-Netzwerk
5
EsprIT Web- oder Fat-Client?
WebServer
HTTP/HTMLWeb
Clientstateless
unidirektional
ServletJSPsJSF
StrutsSpringHtmlXML
TaglibsPHPASP
PEARLCGI
Web-Browser
...ist der EsprIT Server für Rich-Clients
EsprITServer
Java Objekt- Serialisierung
RichClient
statefullbidirektional
Pure JavaAgenten
Alive Business Objects
Java VM
Was der Web-Server für Web-Clients...
6
EsprIT Rückkehr der Rich-Clients
Web-Client
+ Keine Software Installation nötig
+ Zugriff auf Server von überall
- 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
Rich-Client
- Installation nötig auf Client
(Automatisch seit Java-Webstart)
+ 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
Vorteile/Nachteile Web/Rich Clients
7
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
8
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
EsprIT Server
DatenbankRequest
Client
Response
9
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
EsprITServer
DatenbankClientMessage
Client registriert sich für bestimmte Messages
10
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
EsprIT Server
Transfer KanalDatenbankClient
transaktionaleUp/Downloadsvon Dateien
11
EsprIT Web
Web Kanal - Integrierter Web-Server
• Zugriff auf HTML Dokumente, Bilder, etc.
• Client SW-Installation/SW-Aktualisierung per Java-Web-Start
EsprIT Server
Web KanalDatenbankClient
HtmlBilder etc...
HTTP Request
Web Bereich
12
EsprIT Runtime-Umgebung
Austausch-Objekte (Agenten)
ClientContext ServerContext
13
EsprIT Agenten Lebenszyklus
ClientContext ServerContext
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
Erzeugungnew MyAgent(ctx)doBeforeSend()
AusführungexecuteOnServer()Ergebnis
doOnResponseReceived()doOnMessageReceived()
sendForExecution()
MyAgent agent = new MyAgent(ctx);agent = agent.sendForExecution();Result result = agent.getResult();
14
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)
Datenbank
Request
Client
Response
Sync
15
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
Datenbank
Request
Client
Message
Async
16
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
Datenbank
Request
Client
Message
Response Async
Sync
17
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
Datenbank
Request
Client
Sequenz von Messages
AsyncAsync
Async
18
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 kontrollierenBeispiel: Erzwungenes Beenden eines Clients
• Benutzer können Client-Kommandos zu anderen Clients schicken
Client-KommandoClient Datenbank
EsprIT Server
19
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
TaskEventClient Datenbank
EsprIT Server
Lokaler Thread Remote Thread
Fortschritts-Monitoring
20
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
EsprIT Server
Client 1
Client 2
Client 3
Integriertes Client Chat-Tool
Client-Nachricht
21
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
22
EsprIT Anwendungen schreiben II
Programmierung von Anwendungen
ClientContext
MyClientContext
Custom Components
ServerContext
MyServerContext
Eigene KomponentenCustom Components
MyAgentXY
23
EsprIT MVC über Netz
24
EsprIT Alive Business Objects
"Lebende" Business Objekte, global zugreifbare Server-Objektemit dynamischer Aktualiserung auf allen Clients - ohne deren Zutun
Ein Client modifiziertdas Business-Objekt
EsprIT Server
Alle Clients werden benachrichtigt und aktualisieren ihre Darstellung
Datenbank
Tank ...
Tank 5
Tank 4
25
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) Zugriff mit PrimaryKey (ggf. mit gleichzeitiger Editier-Sperre)
• find(SqlCondition) Suche nach allen, die SQL-Bedingung erfüllen
• drop() Vergiß dieses Objekt (keine Aktualiserung mehr)
• create() Erzeuge neues Objekt auf Serverseite
• update() Aktualisiere Objekt auf Serverseite
• delete() Lösche Objekt auf Serverseite
26
EsprIT Alive Business Objects III
ABO Server-Cache
• ABOs werden auf Serverseite gecached für schnellen Zugriff
• ABO-Access-ListServer weiß, welcher Client welches ABO im Zugriff hatund 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
Client 2
ABO-Cache
TrackABO
GraphABO
27
EsprIT ABO-Anwendung
Anwendung bei Hydro Aluminium Hamburg
EsprIT ServerClient 1
Client 2
ABO-Cache
ca. 1000MFStateABOs
Client 1
Client 2
Datenbank
Datenbank
Vorher
NachherSQL
ABO Filter
SQL
28
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
TaskEventClient Datenbank
EsprIT Server
Lokaler Thread Remoter Thread
Fortschritts-Monitoring
29
EsprIT Async Task Framework
Robust kontrollierter Ablauf asynchroner Tasks
30
EsprIT Workflows
Workflows
• Kontrollierter Ablauf mehrerer asynchroner Tasks
• Incl. Remote-Tasks, File-Transfers, Stream-Downloads uva...
• Workflow Monitor zeigt geplante/laufende/erledigte Tasks
31
EsprIT Server Sperren
Server Resource Sperren
• Beliebige Server-Objekte können mit Zugriffssperre belegt werdenSHARED mehrere Zugriffe erlaubt - schützt vor LöschenEXCLUSIVE nur ein Zugriff - schützt vor fremden Änderungen
Sperren sind "geleased"
• Client muss eine Sperre regelmäßig retriggernFä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)
32
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
33
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
Asynchrone Client Aktivität auf dem Server
Verbinden/Trennen
Message LED
Request LED
34
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
35
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
• Leicht auf kundenspezifische Funktionalitäten zu erweiternViele fertige Server-Komponenten verfügbar...
ServerContext
MyServerContext
Eigene KomponentenEigene Komponenten
36
EsprIT Server Profil
Server Aktivitäts-Profil
• Beobachtbare Server-Statistiken
37
EsprIT Integrierter WebServer
Integrierter Webserver• HTML Dokumentation, Webservice, Classdownloading
38
EsprIT Datenbank-Zugriff
Remote-Zugriff auf Datenbank (Volle Editier-Funktionalät)
39
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
40
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
Ein Benutzer führt eine Datei-Übertragung aus
41
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)
42
EsprIT BGR
BGR Bundesanstalt für Geowissenschaften und Rohstoffe, Hannover
Finite Elemente Analyse geologischer Prozesse
43
EsprIT Anwendungsbeispiel I
INCA Projekt, BGR Hannover
44
EsprIT Anwendungsbeispiel I
INCA Projekt, BGR Hannover, TimeHistory Tool
45
EsprIT Anwendungsbeispiel II
HiLocate Projekt, ISA Telematics
46
EsprIT Anwendungsbeispiel III
BDE-IS Project, Hydro Aluminium Hamburg
47
EsprIT Key-Vorteile
Wichtigste Vorteile der EsprIT Client/Server Technologie
Echte Sessions aus Request/Response und Message KanalClient-Aktualisierung per Nachricht, kein Server-Polling erforderlich.Echtes Model-View-Controller Prinzip (MVC) über Netz
Höchstmögliche PerformanceEinfache Datenübertragung per Java-Serialisierung, stehende TCP Verbindung.Kein Overhead durch Daten-Konvertierungen (XML oder ähnl.)
Transaktionaler File-TransferZum Austausch großer Datenmengen, ClientServer, ServerServer
Sehr flexibles Agenten KonzeptAgenten als elegante Programmier-Schnittstelle
Alive Business Objects (ABOs)Mit automatischer, dynamischer Aktualisierung auf ClientsAlle Clients haben genau eine Sicht der Welt
Server Kaskadierung Ermöglicht Aufgabenteilung, Involvierung vieler Systeme, Filetransfers uvm...
48
EsprIT Key-Vorteile II
Wichtigste Vorteile der EsprIT Server Technologie
Verkettung komplexer synchroner/asynchroner Operationen mit Agenten, ClientKommandos, Tasks, FileTransfersBeispiel: Client startet CAD System und erzeugt Input-DateiInput-Datei wird automatisch zum Zentral-Server übertragenZentral-Server macht Datenbankeintrag und überträgt weiter an Compute-Server Compute-Server startet Berechung und überträgt Zwischenergebnis an Zentral-ServerZentral-Server macht Datenbankeintrag und meldet Ergebnis an wartenden ClientClient holt Ergebnisdatei von Zentral-Server abClient 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
49
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
50
EsprIT Vergleich
EsprIT-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)
- Kein Clustering
Applikations-Server
- 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...)
+ Kann im Cluster arbeiten
EsprIT-Server oder Applikations-Server?
51
EsprIT
Kleine Firmen bauen einer Arche
Große Firmen bauen die Titanic