1 / 51

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

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

butch
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Esprit Network Suite • Ein Java Framework für Agenten-basierendeClient/Server Programmierung

  2. 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? 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

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

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

  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 Datenbank Client 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 erhaltenKommando wird synchron oder asynchron im Client ausgeführt Client registriert sich für bestimmte Messages EsprITServer Message Datenbank Client

  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-DownStreamingAuswertung des Datei-Inhalts direkt aus dem Streamohne Speicherung auf Client transaktionaleUp/Downloadsvon Dateien EsprIT Server Transfer Kanal Datenbank Client

  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 Datenbank Client HtmlBilder etc...

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

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

  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 Datenbank Client 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 Datenbank Client 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 Datenbank Client 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. 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

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

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

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

  22. MyAgentXY ClientContext ServerContext MyClientContext MyServerContext Custom Components Eigene Komponenten Custom Components Anwendungen schreiben II • Programmierung von Anwendungen

  23. MVC über Netz

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

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

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

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

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

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

  37. Integrierter WebServer • 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 • 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. 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/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, ClientServer, ServerServer • 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. 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. 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 + 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?

More Related