510 likes | 678 Views
Esprit Network Suite Ein Java Framework für Agenten-basierende Client/Server Programmierung. Just do it. Deine Taten sind sinnlos wenn niemand davon erfährt. Inhalt. Esprit Network Suite Web- contra Rich-Client Multi-Kanal Client Sessions Agenten Konzept Client-Kommandos, Server-Calls
E N D
Esprit Network Suite • Ein Java Framework für Agenten-basierendeClient/Server Programmierung
Just do it Deine Taten sind sinnlos wenn niemand davon erfährt
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
Web- oder Fat-Client? ServletJSPsJSFStrutsSpringHtmlXMLTaglibsPHPASPPEARLCGI Web-Browser HTTP/HTML WebServer WebClient statelessunidirektional Was der Web-Server für Web-Clients... Java VM Java Objekt- Serialisierung EsprITServer RichClient Pure JavaAgentenAlive Business Objects statefullbidirektional ...ist der EsprIT Server für 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 Rückkehr der Rich-Clients Vorteile/Nachteile Web/Rich Clients
Client Verbindung • Esprit Multi-Kanal Client Verbindungen • Request/Response Kanalfür sync/async Client Anfragen • Message Kanalfü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älebilden eine Client-Session
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 Datenbank Client Response
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 erhaltenKommando wird synchron oder asynchron im Client ausgeführt Client registriert sich für bestimmte Messages EsprITServer Message Datenbank Client
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-DownStreamingAuswertung des Datei-Inhalts direkt aus dem Streamohne Speicherung auf Client transaktionaleUp/Downloadsvon Dateien EsprIT Server Transfer Kanal Datenbank Client
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 Datenbank Client HtmlBilder etc...
Runtime-Umgebung Austausch-Objekte (Agenten) ClientContext ServerContext
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() Erzeugungnew MyAgent(ctx)doBeforeSend() AusführungexecuteOnServer() ErgebnisdoOnResponseReceived()doOnMessageReceived()
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 Datenbank Client Response
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 Datenbank Client Async Message
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 Datenbank Client Response Async Message
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
Datenbank 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-Kommando EsprIT Server Client
Datenbank 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 TaskEvent EsprIT Server Client Fortschritts-Monitoring
Client 1 Client 2 Client 3 EsprIT Server 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-Nachricht Integriertes Client Chat-Tool
Anwendungen schreiben • Agentensind 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
MyAgentXY ClientContext ServerContext MyClientContext MyServerContext Custom Components Eigene Komponenten Custom Components Anwendungen schreiben II • Programmierung von Anwendungen
Tank ... Tank 5 Tank 4 Datenbank Alive Business Objects • "Lebende" Business Objekte, global zugreifbare Server-Objektemit dynamischer Aktualiserung auf allen Clients - ohne deren Zutun EsprIT Server Ein Client modifiziertdas Business-Objekt Alle Clients werden benachrichtigt und aktualisieren ihre Darstellung
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
Client 1 Client 2 ABO-Cache TrackABO GraphABO 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
Datenbank Client 1 Client 2 Client 1 Client 2 Datenbank ABO-Anwendung • Anwendung bei Hydro Aluminium Hamburg Vorher SQL ABO Filter EsprIT Server ABO-Cache Nachher SQL ca. 1000MFStateABOs
Datenbank 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 TaskEvent EsprIT Server Client Fortschritts-Monitoring
Async Task Framework • Robust kontrollierter Ablauf asynchroner Tasks
Workflows • Workflows • Kontrollierter Ablauf mehrerer asynchroner Tasks • Incl. Remote-Tasks, File-Transfers, Stream-Downloads uva... • Workflow Monitor zeigt geplante/laufende/erledigte Tasks
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 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)
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
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
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
ServerContext MyServerContext Eigene Komponenten Eigene Komponenten 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-ManagementDiv. Logfiles für div. Applikationen • Leicht auf kundenspezifische Funktionalitäten zu erweiternViele fertige Server-Komponenten verfügbar...
Server Profil • Server Aktivitäts-Profil • Beobachtbare Server-Statistiken
Integrierter WebServer • Integrierter Webserver • HTML Dokumentation, Webservice, Classdownloading
Datenbank-Zugriff • Remote-Zugriff auf Datenbank (Volle Editier-Funktionalät)
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
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
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)
BGR • BGR Bundesanstalt für Geowissenschaften und Rohstoffe, Hannover • Finite Elemente Analyse geologischer Prozesse
Anwendungsbeispiel I • INCA Projekt, BGR Hannover
Anwendungsbeispiel I • INCA Projekt, BGR Hannover, TimeHistory Tool
Anwendungsbeispiel II • HiLocate Projekt, ISA Telematics
Anwendungsbeispiel III • BDE-IS Project, Hydro Aluminium Hamburg
Key-Vorteile Wichtigste Vorteile der EsprIT Client/Server Technologie • Echte Sessions aus Request/ResponseundMessage 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...
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
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
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 Vergleich EsprIT-Server oder Applikations-Server?