50
1 EsprIT 7.x JUGS-Talklet Client/Server Technologie mit Event-gesteuerten Clients Java Framework für Agenten-basierende Client/Server Programmierung

EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

1

EsprIT 7.xJUGS-Talklet

Client/Server Technologie mit Event-gesteuerten ClientsJava Framework für Agenten-basierende Client/Server Programmierung

Page 2: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

2

EsprIT 7.x

Deine Taten sind sinnlos

wenn niemand davon erfährt

Page 3: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

3

EsprIT 7.xInhalt

EsprIT Technologie

• Multi-Kanal Client Sessions• Agenten Konzept• Client-Kommandos• MVC & Alive Business Objects• AsyncTaks und Workflows• EsprIT Client Framework• EsprIT Server Funktionen• Server Verbundnetze• Anwendungsbeispiele• Key-Vorteile, Vergleich

Page 4: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

4

EsprIT 7.xClient/Server Historie

Client-Funktionalität

Mainframe

Serv

er-F

unkt

iona

lität

Client/Server

Web-Clients Rich-Clients

1990 1995

2000 2005

Page 5: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

5

EsprIT 7.xWeb- oder Rich-Client?

WebServer

HTTP/HTMLWebClient

statelessunidirektional

ServletJSPsJSF

StrutsSpringHtmlXML

TaglibsPHPASP

PEARLCGI

Web-Browser

...ist der EsprIT-Server für Rich-Clients

EsprIT-Server

Java Objekt- Serialisierung

RichClient

statefullbidirektional

AgentenAlive Business Objects

Java VM

Was der Web-Server für Web-Clients...

Page 6: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

6

EsprIT 7.xRü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 schwer wartbar/testbar- 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/testbar+ Dynamische Benachrichtigung + Bestmögliche Performance+ Last verteilt auf Client und Server

Vorteile/Nachteile Web/Rich Clients

Page 7: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

7

EsprIT 7.xClient 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

Page 8: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

8

EsprIT 7.xRequest/Response

Request/Response Kanal• Request wird zum Server geschickt, Client erhält Response • Request und Response tragen ein beliebiges Argument-Objekt• Request kann auf Client oder Server in Timeout laufen• Request kann hohe/niedrige Priorität haben• Request wird synchron abgearbeitet

Client GUI blockiert vollständig bis Response empfangen wurde

EsprIT Server

DatenbankRequest

ClientResponse

Page 9: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

9

EsprIT 7.xMessage

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 Messagetypen

Page 10: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

10

EsprIT 7.xAsynchrone Requests

Asynchrone Requests • Request (vom Typ async) wird zum Server geschickt• Response bestätigt den Start der asynchronen Abarbeitung• Message bestätigt Ende der Abarbeitung und enthält Ergebnis• Im Client blockiert nur die aufrufende Action solange bis Message

empfangen wurde• Für asynchrone Aktivität kann ein Timeout vergeben werden

EsprITServer

DatenbankClientMessage

Request

Page 11: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

11

EsprIT 7.xAgenten 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

Page 12: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

12

EsprIT 7.xAgenten Lebenszyklus

ClientContext ServerContext

Agent als zwei-Welten Objekt1. Instantiierung im Client (ClientContext)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();

Page 13: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

13

EsprIT 7.xAsynchrone 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

Page 14: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

14

EsprIT 7.xParallel-Ausführung

Parallel-Ausführung von Agenten auf Client und Server1. 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 Gesamtergebnis)5. Client postprozesst den erhaltenen Message-Agenten

So findet gleichzeitiges Prozessing auf Server und Client statt

Datenbank

Request

Client

Message

Response Async

Sync

Page 15: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

15

EsprIT 7.xSequenzierte Agenten

Sequenzierte Agenten erstrecken sich über mehrere Messages • Große Ergebnismengen werden in mehreren Teilmengen geschickt• Größe der Teilmengen ist Benutzer-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

Page 16: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

16

EsprIT 7.xClient 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-KommandoClient Datenbank

EsprIT Server

Page 17: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

17

EsprIT 7.xClient 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

Page 18: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

18

EsprIT 7.xTransfer Kanal

Transfer Kanal für transaktionale Datei-Übertragungen• Tempoäre TCP Verbindung ausschließlich für Datei-Transfer• Gemischte Up/Downloads von Dateien als 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 ServerTransfer Kanal

DatenbankClient

transaktionaleUp/Downloadsvon Dateien

Page 19: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

19

EsprIT 7.xWeb-Kanal

Web Kanal - Integrierter Web-Server• Erlaubt Zugriff auf HTML Dokumente, Bilder, etc.• PUBLIC Web root-Directory für unauthorisierte Zugriffe• PRIVAT Web root-Directory für authorisierte Zugriffe

EsprIT ServerWeb Kanal

DatenbankClient

HtmlBilder etc...

HTTP Request

Public Bereich Privat Bereich

Page 20: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

20

EsprIT 7.xMVC über Netz

Model-View-Controller Prinzip über Netz

Ein Client (Controller) modifiziert das Modell

EsprIT Server

Alle Clients werden benachrichtigt und aktualisieren ihre Darstellung (View)

DatenbankModel

Page 21: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

21

EsprIT 7.xAlive Business Objects I

"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

DatenbankTank ...

Tank 5Tank 4

Page 22: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

22

EsprIT 7.xAlive 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

Page 23: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

23

EsprIT 7.xAlive 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 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 ServerClient 1

Client 2

ABO-CacheTrackABO

GraphABO

Page 24: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

24

EsprIT 7.xABO-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

Page 25: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

25

EsprIT 7.xRemote Tasks

Synchronisierter Ablauf zwischen lokalem und remote 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 DatenbankEsprIT Server

Lokaler Thread Remoter Thread

Fortschritts-Monitoring

Page 26: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

26

EsprIT 7.xAsync Task Framework

Tasks können in beliebiger Tiefe schachteln

Page 27: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

27

EsprIT 7.xWorkflows

Workflows• Kontrollierter Ablauf mehrerer asynchroner Tasks• Incl. Remote-Tasks, File-Transfers, Stream-Downloads etc...• Workflow Monitor zeigt geplante/laufende/erledigte Tasks

Decision-Points erlaubenbenutzergesteuerten Ablauf

• An beliebiger Stelle abbrechbar

• Klare Fehlerbehandlung• Viele Workflows können

gleichzeitig laufen

Page 28: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

28

EsprIT 7.xServer Sperren

Server Resource Sperren• Beliebige Server-Objekte können mit Zugriffssperre belegt werden

SHARED 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 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)

Page 29: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

29

EsprIT 7.xAnwendungen schreiben I

Agenten sind Programmier-Schnittstelle für Kunden-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!

• Umfangreiche Agenten-Bibliothek für Standardfunktionen inklusive

Page 30: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

30

EsprIT 7.xAnwendungen schreiben II

Programmierung von Anwendungen

ClientContext

MyClientContext

Eigene Komponenten

ServerContext

MyServerContext

Eigene KomponentenEigene Komponenten

MyAgentXY

Page 31: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

31

EsprIT 7.xEsprIT 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ähiges Async-Task Framework

Page 32: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

32

EsprIT 7.xClient Aktivitäts-Monitor

Clientseitige asynchrone Aktivität besteht aus:Agenten: Laufende AgentenTransfers: Laufende File-Transfers/Stream-DownloadsProzesse: Laufende lokale/remote OS-ProzesseCommands: Laufende (empfangene) Client-KommandosSperren: Vom Client belegte Sperren auf Server-ResourcenABOs: 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

Page 33: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

33

EsprIT 7.xEsprIT Admin-Client

Administrations-Client zur Kontrolle des EsprIT Servers • Beobachtet Server-Aktivität (Parameter Profil)• Zeigt Console-Ausgaben und Server-Events online• Erlaubt interaktives Auswerten der Server Logfiles• Dynamische Konfiguration der Server Runtime-Parameter• Beobachtet und kontrolliert Clients• Administrator Nachrichten an Clients

Page 34: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

34

EsprIT 7.xEsprIT 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

Page 35: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

35

EsprIT 7.xServer Profil

Server Aktivitäts-Profil • Beobachtbare Server-Statistiken

Page 36: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

36

EsprIT 7.xIntegrierter WebServer

Integrierter Webserver• HTML Dokumentation, Webservice, Classdownloading

Page 37: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

37

EsprIT 7.xDatenbank-Zugriff

Remote-Zugriff auf Datenbank (Volle Editier-Funktionalät)

Page 38: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

38

EsprIT 7.xServer Verbundnetz

Mehrere Server können zu einem Verbund geschaltet 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

Page 39: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

39

EsprIT 7.xCo-Clients, Co-Server

Co-Client und Co-Server Verbindungen

Mein Server hat einen anderen Server als Co-Client

Mein 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 einen File-Transfer aus

Page 40: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

40

EsprIT 7.xWeitere Server Features

Weitere Server Features• Server-Batch-Prozesse (Zeitgesteuerte Hintergrund-Jobs)• Alarm-Benachrichtigung an Administrator per 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

Page 41: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

41

EsprIT 7.xBGR

BGR Bundesanstalt für Geowissenschaften und Rohstoffe, HannoverFinite Elemente Analyse geologischer Prozesse

Page 42: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

42

EsprIT 7.xProjekt INCA

BGR Hannover, Finite Elemente Berechnungen

Page 43: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

43

EsprIT 7.xProjekt INCA

BGR Hannover, Ergebnis Analyse Tool

Page 44: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

44

EsprIT 7.xProjekt HiLocate

ISA Telematics, Flotten Management System HiLocate

Page 45: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

45

EsprIT 7.xProjekt BDE

Hydro Aluminium Hamburg, Online Betriebsdaten Erfassung

Page 46: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

46

EsprIT 7.xKey-Vorteile I

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.)

• 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

• Transaktionaler File-TransferZum Austausch großer Datenmengen, ClientServer, ServerServer

• Server Verbundnetz Ermöglicht Aufgabenteilung, Involvierung vieler Systeme, Filetransfers uvm...

Page 47: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

47

EsprIT 7.xKey-Vorteile II

Wichtigste Vorteile der EsprIT Server Technologie

• Verkettung komplexer synchroner/asynchroner Operationen mit Agenten, ClientKommandos, Tasks, FileTransfers etc…Beispiel: 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)

Vielfältige Anwendungsmöglichkeiten

Page 48: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

48

EsprIT 7.xEinsatzmöglichkeiten

Wo kann man den EsprIT Server einsetzen?

• 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

Page 49: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

49

EsprIT 7.xVergleich

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, reine Serialisierung)

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...)

EsprIT-Server oder Applikations-Server?

Page 50: EsprIT JUGS-Talklet 7 · • Ausführung kann synchron oder asynchron im Client laufen • Client-Kommando kann beliebige Funktionen des Clients ausführen • Server benutzt Client-Kommando,

50

EsprIT 7.x

Kleine Firmen bauen einer Arche

Große Firmen bauen die Titanic