Transcript
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