Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ein Java Framework für Agenten-basierende Client/Server Programmierung

Ähnliche Präsentationen


Präsentation zum Thema: "Ein Java Framework für Agenten-basierende Client/Server Programmierung"—  Präsentation transkript:

1 Ein Java Framework für Agenten-basierende Client/Server Programmierung
Esprit Network Suite Ein Java Framework für Agenten-basierende Client/Server Programmierung

2 Deine Taten sind sinnlos wenn niemand davon erfährt
Just do it Deine Taten sind sinnlos wenn niemand davon erfährt

3 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 Welt-Netzwerk

5 Web- oder Fat-Client? Web Server EsprIT Server
Servlet JSPs JSF Struts Spring Html XML Taglibs PHP ASP PEARL CGI Web-Browser HTTP/HTML Web Server Web Client stateless unidirektional Was der Web-Server für Web-Clients... Java VM Java Objekt- Serialisierung EsprIT Server Rich Client Pure Java Agenten Alive Business Objects statefull bidirektional ...ist der EsprIT Server für Rich-Clients

6 Rückkehr der Rich-Clients
Vorteile/Nachteile Web/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

7 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 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 EsprIT Server Client Datenbank Response

9 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 EsprIT Server Client Datenbank

10 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 EsprIT Server Transfer Kanal Client Datenbank

11 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 Web Kanal Client Datenbank Html Bilder etc...

12 Runtime-Umgebung Austausch-Objekte (Agenten) ClientContext ServerContext

13 Ausführung executeOnServer()
Agenten Lebenszyklus Agent als zwei-Welten Objekt Instantiierung im Client (ClientContext ctx) Transfer zum Server und Ausführung (ServerContext) Rücktransfer zum Client und Ergebnis-Verarbeitung MyAgent agent = new MyAgent(ctx); agent = agent.sendForExecution(); Result result = agent.getResult(); ClientContext ServerContext sendForExecution() Erzeugung new MyAgent(ctx) doBeforeSend() Ausführung executeOnServer() Ergebnis doOnResponseReceived() doOnMessageReceived()

14 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

15 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 Datenbank Async Message

16 Parallel-Ausführung Parallel-Ausführung von Agenten auf Client und Server Asynchroner Agent wird teilw. synchron auf Server ausgeführt und sofort in Response zum Client geschickt (mit Teilergebnissen) Server startet asynchrone Ausführung des Agenten Client startet Postprozessing des Response-Agenten Server sendet fertigen Agenten in Message (mit Vollergebnis) Client postprozesst den erhaltenen Message-Agenten So findet gleichzeitiges Prozessing auf Server und Client statt Request Sync Client Datenbank Response Async Message

17 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 Datenbank Async Async Async Sequenz von Messages

18 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- Kommando Datenbank EsprIT Server Client

19 Fortschritts-Monitoring
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 Remote Thread Datenbank TaskEvent EsprIT Server Client Fortschritts-Monitoring

20 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-Nachricht EsprIT Server Client 2 Client 3 Integriertes Client Chat-Tool

21 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 Anwendungen schreiben II
Programmierung von Anwendungen MyAgentXY ClientContext MyClientContext Custom Components ServerContext MyServerContext Eigene Komponenten Custom Components

23 MVC über Netz

24 Alive Business Objects
"Lebende" Business Objekte, global zugreifbare Server-Objekte mit dynamischer Aktualiserung auf allen Clients - ohne deren Zutun Tank ... Datenbank Tank 5 EsprIT Server Tank 4 Ein Client modifiziert das Business-Objekt Alle Clients werden benachrichtigt und aktualisieren ihre Darstellung

25 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 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

27 ABO-Anwendung Anwendung bei Hydro Aluminium Hamburg Datenbank
Client 1 Datenbank Vorher SQL Client 2 ABO Filter EsprIT Server Client 1 ABO-Cache Nachher Datenbank SQL ca MFStateABOs Client 2

28 Fortschritts-Monitoring
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 Remoter Thread Datenbank TaskEvent EsprIT Server Client Fortschritts-Monitoring

29 Async Task Framework Robust kontrollierter Ablauf asynchroner Tasks

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

31 Server Sperren Server Resource Sperren
Beliebige Server-Objekte können mit Zugriffssperre belegt werden SHARED mehrere Zugriffe erlaubt - schützt vor Löschen EXCLUSIVE 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)

32 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 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

34 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 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 erweitern Viele fertige Server-Komponenten verfügbar... ServerContext MyServerContext Eigene Komponenten

36 Server Profil Server Aktivitäts-Profil Beobachtbare Server-Statistiken

37 Integrierter WebServer
HTML Dokumentation, Webservice, Classdownloading

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

39 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 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 Weitere Server Features
Server-Prozesse (Zeitgesteuerte Hintergrund-Jobs) Alarm-Benachrichtigung an Administrator über 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 Finite Elemente Analyse geologischer Prozesse
BGR BGR Bundesanstalt für Geowissenschaften und Rohstoffe, Hannover Finite Elemente Analyse geologischer Prozesse

43 Anwendungsbeispiel I INCA Projekt, BGR Hannover

44 Anwendungsbeispiel I INCA Projekt, BGR Hannover, TimeHistory Tool

45 Anwendungsbeispiel II
HiLocate Projekt, ISA Telematics

46 Anwendungsbeispiel III
BDE-IS Project, Hydro Aluminium Hamburg

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

48 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

49 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-Server oder Applikations-Server?
Vergleich EsprIT-Server oder Applikations-Server? 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

51 Kleine Firmen bauen einer Arche
Große Firmen bauen die Titanic


Herunterladen ppt "Ein Java Framework für Agenten-basierende Client/Server Programmierung"

Ähnliche Präsentationen


Google-Anzeigen