HighQSoft GmbH | www.highqsoft.de | 11.05.2016 ODS 6.0 Schnittstelle Dieter Müller Server Developer 1 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 Architektur ODS-Schnittstelle Vergleich ODS 5.x <-> ODS 6.0 ODS 5.x ODS 6.0 ODS Client Stub ORB Generiert aus CORBA IDL IIOP ODS Server ODS Client Skeleton Protobuf ORB RESTFul Webservice ODS Server Generiert aus Protobuf IDL HTTP 1.1 Protobuf RESTFul Webservice 2 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 Übersicht Protocol Buffer (Protobuf) Serialisierung von strukturierten Daten Eigene Schnittstellen-Beschreibungssprache Ziel: Einfachheit und Performance Entwicklung von Google seit 2001(seit 2008 Open Source mit Apache 2.0 Lizenz) Plattformneutral und Sprachenneutral Direkt unterstütze Sprachen: Java, C++, Python, JavaNano, Ruby, Objective-C, und C# Binärformat im Gegensatz zu XML und JSON Im Vergleich zu XML: 3-10 mal kleinere Nachrichten und 20 bis 100 mal schneller Aktuelle Version 2.6.1 (3.0 liegt als Beta-Release 2 vor) ODS verwendet 3.0 aufgrund der verfügbaren Sprachen 3 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 Übersicht REST (REpresentational State Transfer) Architekturstil für verteilte Systeme (Wurde 2000 in der Dissertation von Roy Thomas beschrieben Bedingungen: Client Server: Trennung der Zuständigkeiten in Client (UI) und Server (Datenmanagement) Stateless: Jede Operation muss in sich abgeschlossen sein. Zustand wird im Client gespeichert oder vom Server in einen Ressourcenstatus umgewandelt.) Caching: Rückgabedaten können als ‘cacheable’ markiert werden, -> Reduzierung des Datenvolumens Uniform Interface (Einheitliche Schnittstellen): Eindeutige URI’s zur Identifikation von Ressourcen Bearbeitung von Ressourcen unabhängig der Darstellung (XML, HTML, JSON, ..) Selbstbeschreibende Nachrichten mit allen Informationen, die zur Verabeitung notwendig sind (zum Beispiel bei HTML: Funktion, Content-Type) HATEOAS (Hypermedia as the engine of application state). Die Anwendung führt den Client durch die möglichen Interaktionen. Layerd System: Zwischen Client und Server können weitere Systeme vorhanden sein (zum Beispiel für Load Balancing) Code on Demand: Client kann Code vom Server laden bei Bedarf 4 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 Übersicht RESTFul Webservice RESTFul Webservice Umsetzung des REST Architekturstils auf Basis des HTTP(s) Protokolls. Verwendung der HTTP-Funktionen: GET, POST, PUT, DELETE Methode GET sicher idempotent cachefähig X X POST X Verwendung Anfordern von Ressourcen Update von Ressourcen PUT X Anlegen von Ressourcen DELETE X Löschen von Ressourcen Java API: JAX-RS (Implementierungen: Jersey, RESTEasy, …) 5 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 Übersicht RESTFul Webservice – Nachrichtenaufbau HTTP-Response HTTP-Request Verb URI HTTP Version Response Code Request Header Request Body (Entfällt bei GET) HTTP Version Response Header Response Body Verb: HTTP-Funktion, GET, POST, DELETE, PUT URI: Uniform Resource Identifier, zur Identifizierung der Ressource HTTP Version: Beispiel HTTP v 1.1 Request Header: Metadaten im Key/Value Format (z.B.: ‚Content-Type: application/x-protobuf‘) Request Body: Parameter für den Service Status/Response Code: Rückgabewert mit dem Status vom Server (z.B.: 200 für O.K.) Response Header: Enthält Metadaten im Key/Value Format Response Body: Enthält bei korrekter Verarbeitung, die angeforderten Informationen. (z.B.http://www.odsserver.de/applicationelements/12) 6 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 ODS 6.0 Anforderungen an die neue Schnittstelle Keine Daten in der URL (nur im Payload) Authentifizierung und Session Management Superuser Session Ein Client kann mehrere Sessions (Connections) öffnen Anfordern des Basis- und Applikationsmodells über die Schnittstelle Unterstützung von HTTPS ODS-Api muss nicht der Definition eines RESTFul Webservices entsprechen 7 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 ODS 6.0 Offene Punkte Authentifizierung (Aufgabe des HTTP-Servers, Verwendung von ‚Basic Authentication‘) Zuordnung zwischen HTTP-Benutzerkennung und ODS-Benutzerkennung notwendig Session-Verwaltung Wie sollen Authentifizierungs- bzw. Sessioninformationen übergeben werden (URL oder Payload) Maximale Nachrichtengröße von Protobuf ist 64 MB Definition sinnvoller Defaultwerte um Datentransfer zu reduzieren Verwendung von GET oder POST bei Abfragen (GET ist `cacheable` hat aber keine Nutzdaten) Soll eine Abstrahierung der Serveradresse ähnlich dem CORBA-Nameservice verwendet werden Übertragung von Metadaten und Massendaten zusammen oder in separaten Requests Notifications (NEW, MODIFY, DELETE, MODEL, SECURITY) 8 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 Notifications Vorschlag von HighQSoft Verwendung von ServerSentEvents SSE Registrierung über Webservice Aufruf Bestätigung der Registrierung ODS Client Event 1 ODS Server Event 2 Event … 9 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 ODS 6 im Hands-On Zugriff auf ODS 6.0 Schnittstelle mit Java Vorbereitungen: Protobuf Compiler (Version 3) herunterladen und entpacken (https://github.com/google/protobuf/releases) Java Bibliotheken in das entsprechende Verzeichnis kopieren Generieren der Javadateien aus den Protobuf Beschreibungsdateien protoc --java_out=src/main/java -I../src .. /src/asam/ods/ods.proto protoc --java_out=src/main/java -I../src ../src/google/protobuf/descriptor.proto protoc --java_out=src/main/java -I../src ../src/google/protobuf/timestamp.proto Hinweis: Zur Verwendung von Java Basis Datentypen muss die Generierung mit ‘--javanano’ erfolgen und die Java Nano Bibliothek herunterladen und in das entsprechende Verzeichnis kopiert warden. 10 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 ODS 6 im Hands-On Zugriff auf ODS 6.0 Schnittstelle mit Java (Teil 2) Beispiel für einen Client (Abfrage der Applikationselemente ohne Session-Verwaltung) 11 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 ODS 6 im Fazit Hands-On Erste Zugriffsimplementierungen im Hause waren …schnell und gut zu erledigen. 12 HighQSoft GmbH | www.highqsoft.de | 11.05.2016 ODS 6 im Fazit Performanz Der Zugriff auf Daten in Oracale ist … (gleich) Der getestete Datentransfer (bis 64 MB) ergab Protobuf ist um einen Faktor 2 schneller…aber …die Testumgebungen sind nicht 1:1 vergleichbar …es wurde kein JacORB verwendet …umgekehrt ist eine weiterer Performanzschub durch die Defaultwerte zu berücksichtigen Die ODS 6.0 Schnittstelle wird erwartungsgemäß genauso performant wie die jetzige. 13
© Copyright 2024 ExpyDoc