GraphQL, das bessere REST?

Größe: px
Ab Seite anzeigen:

Download "GraphQL, das bessere REST?"

Transkript

1 Die Beschaffungsplattform für Geschäftskunden GraphQL, das bessere REST? Jörg Adler, Benjamin Otto,

2 Mercateo Mercateo ist Europas führende Beschaffungsplattform. > 1 Mio. Geschäftskunden 21 Mio. Artikel mehr als Hersteller Die Beschaffungsplattform für Geschäftskunden 2

3 Mercateo Mercateo ist Europas führende Beschaffungsplattform. > 1 Mio. Geschäftskunden 21 Mio. Artikel mehr als Hersteller Entwicklung von der Beschaffungsplattform zur Transaktionsplattform Massive Veränderungen in der IT-Landschaft Jörg Adler adler Benjamin Otto otbe Die Beschaffungsplattform für Geschäftskunden 2

4 Beispiel Beispiel Nachfolgend beziehen sich alle Folien auf das folgende Beispiel Order API Die Beschaffungsplattform für Geschäftskunden 3

5 Beispiel Beispiel Nachfolgend beziehen sich alle Folien auf das folgende Beispiel Order API Order mit id, state und articles Die Beschaffungsplattform für Geschäftskunden 3

6 Beispiel Beispiel Nachfolgend beziehen sich alle Folien auf das folgende Beispiel Order API Order mit id, state und articles Order mit States processing, canceled, shipped, returned Die Beschaffungsplattform für Geschäftskunden 3

7 Beispiel Beispiel Nachfolgend beziehen sich alle Folien auf das folgende Beispiel Order API Order mit id, state und articles Order mit States processing, canceled, shipped, returned Übergang processing canceled (optional) Die Beschaffungsplattform für Geschäftskunden 3

8 Beispiel Beispiel Nachfolgend beziehen sich alle Folien auf das folgende Beispiel Order API Order mit id, state und articles Order mit States processing, canceled, shipped, returned Übergang processing canceled (optional) Übergang processing shipped returned (optional) Die Beschaffungsplattform für Geschäftskunden 3

9 Beispiel Beispiel Nachfolgend beziehen sich alle Folien auf das folgende Beispiel Order API Order mit id, state und articles Order mit States processing, canceled, shipped, returned Übergang processing canceled (optional) Übergang processing shipped returned (optional) Implementiertes Java-Beispiel: Die Beschaffungsplattform für Geschäftskunden 3

10 GraphQL? Was ist GraphQL? Die Beschaffungsplattform für Geschäftskunden 4

11 GraphQL? GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. Die Beschaffungsplattform für Geschäftskunden 5

12 GraphQL? GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. gedacht als dünner API Layer zwischen Client und Backend Die Beschaffungsplattform für Geschäftskunden 5

13 GraphQL? GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. gedacht als dünner API Layer zwischen Client und Backend initialer Draft von 2015 von Facebook Die Beschaffungsplattform für Geschäftskunden 5

14 GraphQL? GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. gedacht als dünner API Layer zwischen Client und Backend initialer Draft von 2015 von Facebook Spec (OWFA 1.0) + Referenzimplementierung (MIT) auf Github verfügbar Die Beschaffungsplattform für Geschäftskunden 5

15 GraphQL? GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. gedacht als dünner API Layer zwischen Client und Backend initialer Draft von 2015 von Facebook Spec (OWFA 1.0) + Referenzimplementierung (MIT) auf Github verfügbar wird seither als Community Draft weiterentwickelt Die Beschaffungsplattform für Geschäftskunden 5

16 GraphQL? GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. gedacht als dünner API Layer zwischen Client und Backend initialer Draft von 2015 von Facebook Spec (OWFA 1.0) + Referenzimplementierung (MIT) auf Github verfügbar wird seither als Community Draft weiterentwickelt GraphQL Schema als Contract zwischen Client und Server Die Beschaffungsplattform für Geschäftskunden 5

17 GraphQL Schema Schema besteht aus Query, Mutation und Subscription Die Beschaffungsplattform für Geschäftskunden 6

18 GraphQL Schema Schema besteht aus Query, Mutation und Subscription Primitive Datentypen: Int, Float, String, Boolean, ID Die Beschaffungsplattform für Geschäftskunden 6

19 GraphQL Schema Schema besteht aus Query, Mutation und Subscription Primitive Datentypen: Int, Float, String, Boolean, ID Neue Datentypen können mit scalar, type, interface, union, enum oder input definiert werden Die Beschaffungsplattform für Geschäftskunden 6

20 GraphQL Schema Schema besteht aus Query, Mutation und Subscription Primitive Datentypen: Int, Float, String, Boolean, ID Neue Datentypen können mit scalar, type, interface, union, enum oder input definiert werden Cheat Sheet Die Beschaffungsplattform für Geschäftskunden 6

21 Die Beschaffungsplattform für Geschäftskunden 7

22 GraphQL Status Quo Status Quo Die Beschaffungsplattform für Geschäftskunden 8

23 GraphQL Status Quo Transport: HTTP POST* auf /graphql Endpoint mit Query im Body Die Beschaffungsplattform für Geschäftskunden 9

24 GraphQL Status Quo Transport: HTTP POST* auf /graphql Endpoint mit Query im Body * dadurch ist Caching schwierig; allerdings kann auch GET mit Query Parameter verwendet werden oder Persisted Queries Die Beschaffungsplattform für Geschäftskunden 9

25 GraphQL Status Quo Transport: HTTP POST* auf /graphql Endpoint mit Query im Body * dadurch ist Caching schwierig; allerdings kann auch GET mit Query Parameter verwendet werden oder Persisted Queries one query to rule them all - beliebig tief geschachtelte Queries können geschrieben werden Die Beschaffungsplattform für Geschäftskunden 9

26 GraphQL Status Quo Transport: HTTP POST* auf /graphql Endpoint mit Query im Body * dadurch ist Caching schwierig; allerdings kann auch GET mit Query Parameter verwendet werden oder Persisted Queries one query to rule them all - beliebig tief geschachtelte Queries können geschrieben werden Tooling Die Beschaffungsplattform für Geschäftskunden 9

27 GraphQL Tooling - GraphiQL Die Beschaffungsplattform für Geschäftskunden 10

28 GraphQL Tooling - Launchpad Die Beschaffungsplattform für Geschäftskunden 11

29 GraphQL Tooling - Apollo Dev Die Beschaffungsplattform für Geschäftskunden 12

30 GraphQL Tooling - graphql-faker Die Beschaffungsplattform für Geschäftskunden 13

31 GraphQL Status Quo Transport: HTTP POST* auf /graphql Endpoint mit Query im Body * dadurch ist Caching schwierig; allerdings kann auch GET mit Query Parameter verwendet werden oder Persisted Queries one query to rule them all - beliebig tief geschachtelte Queries können geschrieben werden Tooling Wer nutzt GraphQL? Die Beschaffungsplattform für Geschäftskunden 14

32 Die Beschaffungsplattform für Geschäftskunden 15

33 GraphQL Beispiel Die Beschaffungsplattform für Geschäftskunden 16

34 GraphQL Beispiel Datenbeschreibung 1 enum STATE { 2 SHIPPED 3 PROCESSING 4 CANCELED 5 RETURNED 6 } 7 8 type Order { 9 id: ID! 10 state : STATE 11 articles : [ Article ]! 12 } type Query { 15 orders ( limit : Int, offset : Int ): [ Order ]! 16 } Die Beschaffungsplattform für Geschäftskunden 17

35 GraphQL Beispiel Datenbeschreibung 1 enum STATE { 2 SHIPPED 3 PROCESSING 4 CANCELED 5 RETURNED 6 } 7 8 type Order { 9 id: ID! 10 state : STATE 11 articles : [ Article ]! 12 } type Query { Anfrage 1 { 2 orders { 3 id 4 state 5 } 6 } 15 orders ( limit : Int, offset : Int ): [ Order ]! 16 } Die Beschaffungsplattform für Geschäftskunden 17

36 GraphQL Beispiel Datenbeschreibung 1 enum STATE { 2 SHIPPED 3 PROCESSING 4 CANCELED 5 RETURNED 6 } 7 8 type Order { 9 id: ID! 10 state : STATE 11 articles : [ Article ]! 12 } type Query { Anfrage 1 { 2 orders { 3 id 4 state 5 } 6 } Ergebnis 1 { 2 " orders ": [ { 3 "id": " ", 4 " state ": " PROCESSING " 5 } ] 6 } 15 orders ( limit : Int, offset : Int ): [ Order ]! 16 } Die Beschaffungsplattform für Geschäftskunden 17

37 REST Die Beschaffungsplattform für Geschäftskunden 18

38 REST Einführung REST ist eine Architektur Die Beschaffungsplattform für Geschäftskunden 19

39 REST Einführung REST ist eine Architektur es gibt keinen (Implementierungs-)Standard, nur Constraints (Client-Server, Stateless, Cache, Uniform Interface, Layered System, Code on Demand) Die Beschaffungsplattform für Geschäftskunden 19

40 REST Einführung REST ist eine Architektur es gibt keinen (Implementierungs-)Standard, nur Constraints (Client-Server, Stateless, Cache, Uniform Interface, Layered System, Code on Demand) speziell die Forderung nach einem uniformen Interface macht REST langsam The trade-off, though, is that a uniform interface degrades efficiency, since information is transferred in a standardized form rather than one which is specific to an application s needs. Fielding, Roy T., Dissertation Die Beschaffungsplattform für Geschäftskunden 19

41 REST Einführung REST ist eine Architektur es gibt keinen (Implementierungs-)Standard, nur Constraints (Client-Server, Stateless, Cache, Uniform Interface, Layered System, Code on Demand) speziell die Forderung nach einem uniformen Interface macht REST langsam The trade-off, though, is that a uniform interface degrades efficiency, since information is transferred in a standardized form rather than one which is specific to an application s needs. Fielding, Roy T., Dissertation Software design on the scale of decades: every detail is intended to promote software longevity and independent evolution. Many of the constraints are directly opposed to short-term efficiency. Fielding, Roy T. REST APIs must be hypertext-driven Die Beschaffungsplattform für Geschäftskunden 19

42 REST HATEOAS Hypermedia as the Engine of Application State Die Beschaffungsplattform für Geschäftskunden 20

43 REST HATEOAS Hypermedia as the Engine of Application State integraler Bestandteil von REST REST is defined by four interface constraints: identification of resources; manipulation of resources through representations; self-descriptive messages; and, hypermedia as the engine of application state Fielding, Roy T., Dissertation Die Beschaffungsplattform für Geschäftskunden 20

44 REST HATEOAS Hypermedia as the Engine of Application State integraler Bestandteil von REST REST is defined by four interface constraints: identification of resources; manipulation of resources through representations; self-descriptive messages; and, hypermedia as the engine of application state Fielding, Roy T., Dissertation Zustandsübergänge am Client ausschließlich über Links vom Server Die Beschaffungsplattform für Geschäftskunden 20

45 REST HATEOAS Hypermedia as the Engine of Application State integraler Bestandteil von REST REST is defined by four interface constraints: identification of resources; manipulation of resources through representations; self-descriptive messages; and, hypermedia as the engine of application state Fielding, Roy T., Dissertation Zustandsübergänge am Client ausschließlich über Links vom Server Links kommen nur dynamisch vom Server Die Beschaffungsplattform für Geschäftskunden 20

46 REST HATEOAS Hypermedia as the Engine of Application State integraler Bestandteil von REST REST is defined by four interface constraints: identification of resources; manipulation of resources through representations; self-descriptive messages; and, hypermedia as the engine of application state Fielding, Roy T., Dissertation Zustandsübergänge am Client ausschließlich über Links vom Server Links kommen nur dynamisch vom Server im Client nur eine Einsprungs-URL und das Wissen über die Linknamen Die Beschaffungsplattform für Geschäftskunden 20

47 Ist GraphQL nun das bessere REST? Die Beschaffungsplattform für Geschäftskunden 21

48 Ist GraphQL nun das bessere REST? Es ist nicht vergleichbar. Die Beschaffungsplattform für Geschäftskunden 21

49 Vielen Dank für Ihre Aufmerksamtkeit :) Die Beschaffungsplattform für Geschäftskunden 22

50 DDD Domain Driven Design hilft beim Schnitt von Microservices Die Beschaffungsplattform für Geschäftskunden 23

51 DDD Domain Driven Design hilft beim Schnitt von Microservices wir legen hier Wert auf die Abgrenzung von Bounded Contexts Die Beschaffungsplattform für Geschäftskunden 23

52 DDD Domain Driven Design hilft beim Schnitt von Microservices wir legen hier Wert auf die Abgrenzung von Bounded Contexts auch für Monolithen mit Schnittstellen wichtig Die Beschaffungsplattform für Geschäftskunden 23

53 DDD Domain Driven Design hilft beim Schnitt von Microservices wir legen hier Wert auf die Abgrenzung von Bounded Contexts auch für Monolithen mit Schnittstellen wichtig Businesslogik am Server kapseln Die Beschaffungsplattform für Geschäftskunden 23

54 DDD REST-Naiv reines CRUD 1 GET / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " SHIPPED " 6 } 1 PUT / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " RETURNED ", 6 } Die Beschaffungsplattform für Geschäftskunden 24

55 DDD REST-Naiv reines CRUD 1 GET / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " SHIPPED " 6 } 1 PUT / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " RETURNED ", 6 } Es muss dokumentiert werden, wann welche Statusübergänge möglich sind Die Beschaffungsplattform für Geschäftskunden 24

56 DDD REST-Naiv reines CRUD 1 GET / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " SHIPPED " 6 } 1 PUT / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " RETURNED ", 6 } Es muss dokumentiert werden, wann welche Statusübergänge möglich sind Alle Clients implementieren dafür Code Businesslogik sehr schwer änderbar Die Beschaffungsplattform für Geschäftskunden 24

57 DDD REST-HATEOAS Entscheidung wann etwas möglich ist kommt vom Server über Links 1 GET / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " SHIPPED " 6 " _links ": { 7 " return ": { " href ": "/ orders /1" } 8 } 9 } Die Beschaffungsplattform für Geschäftskunden 25

58 DDD REST-HATEOAS Entscheidung wann etwas möglich ist kommt vom Server über Links 1 GET / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " SHIPPED " 6 " _links ": { 7 " return ": { " href ": "/ orders /1" } 8 } 9 } Es muss dokumentiert werden, welche und wie Statusübergänge möglich sind Die Beschaffungsplattform für Geschäftskunden 25

59 DDD REST-HATEOAS Entscheidung wann etwas möglich ist kommt vom Server über Links 1 GET / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " SHIPPED " 6 " _links ": { 7 " return ": { " href ": "/ orders /1" } 8 } 9 } Es muss dokumentiert werden, welche und wie Statusübergänge möglich sind Clients können uniform feststellen, wann Statusübergänge möglich sind Die Beschaffungsplattform für Geschäftskunden 25

60 DDD HATEOAS und Schema II mit Schema: CRUD wird etwas abgemildert mit Schema: Clients können flexibel auf Payloadänderungen reagieren 1 GET / orders /1 2 { 3 "id": "1", 4 " articles ":..., 5 " state ": " SHIPPED " 6 " _schema ": { 7 " links ": [ 8 { " href ": " http :// localhost :9090/ orders /1", 9 " schema ": { " type ": " object ", 10 " properties ": { 11 " state ": { " type ": " string ", 12 " enum ": [" RETURNED "] }}}, 13 " rel ": " return ", 14 " method ": " PATCH "}]}} Die Beschaffungsplattform für Geschäftskunden 26

61 DDD REST-HATEOAS ohne CRUD zusätzlich sollte ein Update von komplexen Ressourcen nicht möglich sein Die Beschaffungsplattform für Geschäftskunden 27

62 DDD REST-HATEOAS ohne CRUD zusätzlich sollte ein Update von komplexen Ressourcen nicht möglich sein Man erstellt eine Art Kommando Die Beschaffungsplattform für Geschäftskunden 27

63 DDD REST-HATEOAS ohne CRUD zusätzlich sollte ein Update von komplexen Ressourcen nicht möglich sein Man erstellt eine Art Kommando Welches Kommando man erstellen darf, wird über Links kommuniziert Die Beschaffungsplattform für Geschäftskunden 27

64 DDD REST-HATEOAS ohne CRUD zusätzlich sollte ein Update von komplexen Ressourcen nicht möglich sein Man erstellt eine Art Kommando Welches Kommando man erstellen darf, wird über Links kommuniziert Die Implementierung wird hier sehr viel einfacher, kein rätseln am Server mehr Die Beschaffungsplattform für Geschäftskunden 27

65 DDD REST-HATEOAS ohne CRUD zusätzlich sollte ein Update von komplexen Ressourcen nicht möglich sein Man erstellt eine Art Kommando Welches Kommando man erstellen darf, wird über Links kommuniziert Die Implementierung wird hier sehr viel einfacher, kein rätseln am Server mehr Zusätzliche Daten können erhoben werden Die Beschaffungsplattform für Geschäftskunden 27

66 DDD HATEOAS und Schema 1 GET / orders / { " href ": " http :// localhost :9090/ returns ", 4 " schema ": {" type ": " object ", 5 " properties ": { 6 "id": {" type ": " uuid "}, 7 " message ": {" type ": " string "}, 8 " orderid ": {" type ": " string ", 9 " enum ": ["1"]}}, 10 " required ": [" message "," orderid ","id"]}, 11 " method ": " PUT ", 12 " rel ": " return "}... Die Beschaffungsplattform für Geschäftskunden 28

67 DDD GraphQL-Naiv reine CRUD Mutations 1 createorder ( order ) 2 updateorder ( order ) Die Beschaffungsplattform für Geschäftskunden 29

68 DDD GraphQL-Naiv reine CRUD Mutations 1 createorder ( order ) 2 updateorder ( order ) Es muss dokumentiert werden, wann welche Statusübergänge möglich sind Die Beschaffungsplattform für Geschäftskunden 29

69 DDD GraphQL-Naiv reine CRUD Mutations 1 createorder ( order ) 2 updateorder ( order ) Es muss dokumentiert werden, wann welche Statusübergänge möglich sind Alle Clients implementieren dafür Code Die Beschaffungsplattform für Geschäftskunden 29

70 DDD GraphQL-Naiv reine CRUD Mutations 1 createorder ( order ) 2 updateorder ( order ) Es muss dokumentiert werden, wann welche Statusübergänge möglich sind Alle Clients implementieren dafür Code Businesslogik sehr schwer änderbar Die Beschaffungsplattform für Geschäftskunden 29

71 DDD GraphQL-Naiv reine CRUD Mutations 1 createorder ( order ) 2 updateorder ( order ) Es muss dokumentiert werden, wann welche Statusübergänge möglich sind Alle Clients implementieren dafür Code Businesslogik sehr schwer änderbar Kommt bekannt vor? :) Die Beschaffungsplattform für Geschäftskunden 29

72 DDD GraphQL Commands Kein CRUD mehr 1 cancelorder ( orderid : ID!, message : String ) 2 returnorder ( orderid : ID!, message : String ) Die Beschaffungsplattform für Geschäftskunden 30

73 DDD GraphQL Commands Kein CRUD mehr 1 cancelorder ( orderid : ID!, message : String ) 2 returnorder ( orderid : ID!, message : String ) Es muss immer noch dokumentiert werden, wann welche Statusübergänge möglich sind Die Beschaffungsplattform für Geschäftskunden 30

74 DDD GraphQL Commands Kein CRUD mehr 1 cancelorder ( orderid : ID!, message : String ) 2 returnorder ( orderid : ID!, message : String ) Es muss immer noch dokumentiert werden, wann welche Statusübergänge möglich sind Reduziert Komplexität im Client und Server Die Beschaffungsplattform für Geschäftskunden 30

75 DDD GraphQL HATEOAS Extensions Wie können wir darstellen, welche Statusübergänge im aktuellen Zustand möglich sind? Die Beschaffungsplattform für Geschäftskunden 31

76 DDD GraphQL HATEOAS Extensions Wie können wir darstellen, welche Statusübergänge im aktuellen Zustand möglich sind? Relay-Style Pagination 1 { 2 orders { 3 edges { 4 node { 5 id 6 state 7 } } 12 } 13 } Die Beschaffungsplattform für Geschäftskunden 31

77 DDD GraphQL HATEOAS Extensions Wie können wir darstellen, welche Statusübergänge im aktuellen Zustand möglich sind? Relay-Style Pagination Statusinformationen in den Kanten 1 { 2 orders { 3 edges { 4 node { 5 id 6 state 7 } } 12 } 13 } 1 { 2 orders { 3 edges { 4 node { 5 id 6 state 7 } 8 9 returnorder 10 cancelorder 11 } 12 } 13 } Die Beschaffungsplattform für Geschäftskunden 31

78 CQRS Command/Query Responsibility Segregation Trennung von Kommandos (Schreiben) und Querys (Lesen) Die Beschaffungsplattform für Geschäftskunden 32

79 CQRS Command/Query Responsibility Segregation Trennung von Kommandos (Schreiben) und Querys (Lesen) auf Modellierungs- und Deploymentebene Die Beschaffungsplattform für Geschäftskunden 32

80 CQRS Command/Query Responsibility Segregation Trennung von Kommandos (Schreiben) und Querys (Lesen) auf Modellierungs- und Deploymentebene dadurch getrennt entwickelbar, skalierbar, deploybar Die Beschaffungsplattform für Geschäftskunden 32

81 CQRS Command/Query Responsibility Segregation Trennung von Kommandos (Schreiben) und Querys (Lesen) auf Modellierungs- und Deploymentebene dadurch getrennt entwickelbar, skalierbar, deploybar Voraussetzung für Eventsourcing Die Beschaffungsplattform für Geschäftskunden 32

82 CQRS Command/Query Responsibility Segregation Trennung von Kommandos (Schreiben) und Querys (Lesen) auf Modellierungs- und Deploymentebene dadurch getrennt entwickelbar, skalierbar, deploybar Voraussetzung für Eventsourcing Bedeutet aber auch Aufwand! Nutzen abwägen. Die Beschaffungsplattform für Geschäftskunden 32

83 CQRS REST Mit Ressourcen auf Command-Ebene geht dies sehr gut Aufpassen bei Rückgabe von PUT/POST Die Beschaffungsplattform für Geschäftskunden 33

84 CQRS REST Mit Ressourcen auf Command-Ebene geht dies sehr gut Aufpassen bei Rückgabe von PUT/POST Auf natürliche Weise kann Eventsourcing unterstützt werden Die Beschaffungsplattform für Geschäftskunden 33

85 CQRS Command/Query Responsibility Segregation Die Beschaffungsplattform für Geschäftskunden 34

86 CQRS REST II auch spätere Einführung möglich. 1 PUT / returns... 2 { 3 " _links ": { 4 " canonical ": { " href ": "/ returns /4?eventSeq=47" } 5 } 6 } Die Beschaffungsplattform für Geschäftskunden 35

87 CQRS GraphQL Mutations (als Commands) sind bereits von Queries getrennt Die Beschaffungsplattform für Geschäftskunden 36

88 CQRS GraphQL Mutations (als Commands) sind bereits von Queries getrennt Grundsätzlich kann bei einer Mutation ein beliebiges Objekt gelesen/zurückgegeben werden Die Beschaffungsplattform für Geschäftskunden 36

89 CQRS GraphQL Mutations (als Commands) sind bereits von Queries getrennt Grundsätzlich kann bei einer Mutation ein beliebiges Objekt gelesen/zurückgegeben werden Im Relay Umfeld werden häufig alle abhängigen Änderungen gelesen damit der Client die Caches updaten kann Die Beschaffungsplattform für Geschäftskunden 36

90 CQRS GraphQL Mutations (als Commands) sind bereits von Queries getrennt Grundsätzlich kann bei einer Mutation ein beliebiges Objekt gelesen/zurückgegeben werden Im Relay Umfeld werden häufig alle abhängigen Änderungen gelesen damit der Client die Caches updaten kann Alternative: Mutation + Subscription nutzen Die Beschaffungsplattform für Geschäftskunden 36

91 API First API First in GraphQL ist das Schema fester Bestandteil des Standards Die Beschaffungsplattform für Geschäftskunden 37

92 API First API First in GraphQL ist das Schema fester Bestandteil des Standards Entwickler von Server und Client haben dies jederzeit, API first at its best. Die Beschaffungsplattform für Geschäftskunden 37

93 API First API First in GraphQL ist das Schema fester Bestandteil des Standards Entwickler von Server und Client haben dies jederzeit, API first at its best. API-First Hilfsmittel für REST prinzipiell vorhanden (Open-API 3.0, Json-Hyperschema, RAML) Die Beschaffungsplattform für Geschäftskunden 37

94 API First API First in GraphQL ist das Schema fester Bestandteil des Standards Entwickler von Server und Client haben dies jederzeit, API first at its best. API-First Hilfsmittel für REST prinzipiell vorhanden (Open-API 3.0, Json-Hyperschema, RAML) native Unterstützung nur für statische Links Die Beschaffungsplattform für Geschäftskunden 37

95 API First API First in GraphQL ist das Schema fester Bestandteil des Standards Entwickler von Server und Client haben dies jederzeit, API first at its best. API-First Hilfsmittel für REST prinzipiell vorhanden (Open-API 3.0, Json-Hyperschema, RAML) native Unterstützung nur für statische Links Bei beiden: HATEOAS mit dynamischen Links erfordert basteln Die Beschaffungsplattform für Geschäftskunden 37

96 Fazit Disclaimer Man kann auch für REST auf wenige Requests optimieren Die Beschaffungsplattform für Geschäftskunden 38

97 Fazit Disclaimer Man kann auch für REST auf wenige Requests optimieren durch Schaffen von sehr großen Read-Only Ressourcen Die Beschaffungsplattform für Geschäftskunden 38

98 Fazit Disclaimer Man kann auch für REST auf wenige Requests optimieren durch Schaffen von sehr großen Read-Only Ressourcen durch eingebettete Ressourcen (siehe zum Beispiel HAL-Format) Die Beschaffungsplattform für Geschäftskunden 38

99 Fazit Disclaimer Man kann auch für REST auf wenige Requests optimieren durch Schaffen von sehr großen Read-Only Ressourcen durch eingebettete Ressourcen (siehe zum Beispiel HAL-Format) durch Auflösen von Links bis zu einer gewissen Tiefe (siehe zum Beispiel Contentful-API) Die Beschaffungsplattform für Geschäftskunden 38

100 Fazit Disclaimer Man kann auch für REST auf wenige Requests optimieren durch Schaffen von sehr großen Read-Only Ressourcen durch eingebettete Ressourcen (siehe zum Beispiel HAL-Format) durch Auflösen von Links bis zu einer gewissen Tiefe (siehe zum Beispiel Contentful-API) alles händischer Aufwand Die Beschaffungsplattform für Geschäftskunden 38

101 Fazit Disclaimer Man kann auch für REST auf wenige Requests optimieren durch Schaffen von sehr großen Read-Only Ressourcen durch eingebettete Ressourcen (siehe zum Beispiel HAL-Format) durch Auflösen von Links bis zu einer gewissen Tiefe (siehe zum Beispiel Contentful-API) alles händischer Aufwand beim Formulieren von Queries häufig kompliziert Die Beschaffungsplattform für Geschäftskunden 38

102 Fazit Wann REST Firma/Kunden haben sich schon längere Zeit auf REST commitet in diesem Fall kann man aber trotzdem beides anbieten (schlankes Graph-QL-Lambda vor den REST-Schnittstellen) Die Beschaffungsplattform für Geschäftskunden 39

103 Fazit Wann REST Firma/Kunden haben sich schon längere Zeit auf REST commitet in diesem Fall kann man aber trotzdem beides anbieten (schlankes Graph-QL-Lambda vor den REST-Schnittstellen) HTTP-Caching ist relevant (interne Schnittstellen, öffentliche Schnittstellen ohne HTTPS,...) Die Beschaffungsplattform für Geschäftskunden 39

104 Fazit Wann GraphQL man möchte eine hohe Standardisierung in Schnittstellen-Design und Tooling Die Beschaffungsplattform für Geschäftskunden 40

105 Fazit Wann GraphQL man möchte eine hohe Standardisierung in Schnittstellen-Design und Tooling Performance spielt wesentliche Rolle (Frontends,...) Die Beschaffungsplattform für Geschäftskunden 40

106 Fazit Wann GraphQL man möchte eine hohe Standardisierung in Schnittstellen-Design und Tooling Performance spielt wesentliche Rolle (Frontends,...) Umfeld akzeptiert neue Herangehensweisen Die Beschaffungsplattform für Geschäftskunden 40

107 Fazit Wann GraphQL man möchte eine hohe Standardisierung in Schnittstellen-Design und Tooling Performance spielt wesentliche Rolle (Frontends,...) Umfeld akzeptiert neue Herangehensweisen If your API is not using hypermedia controls, then GraphQL could be a more relevant approach, because you weren t really using REST anyway. Phil Sturgeon, Platform WeWork Die Beschaffungsplattform für Geschäftskunden 40

108 Fazit Wann GraphQL man möchte eine hohe Standardisierung in Schnittstellen-Design und Tooling Performance spielt wesentliche Rolle (Frontends,...) Umfeld akzeptiert neue Herangehensweisen If your API is not using hypermedia controls, then GraphQL could be a more relevant approach, because you weren t really using REST anyway. Empfehlung: unbedingt anschauen! :) Phil Sturgeon, Platform WeWork Die Beschaffungsplattform für Geschäftskunden 40

109 Vielen Dank für Ihre Aufmerksamkeit. Fragen? :) Die Beschaffungsplattform für Geschäftskunden 41

110 Fazit Verweise Seite 10: GraphiQL Seite 11: Launchpad Seite 12: Apollo Developers Seite 13: graphql-faker Seite 15: Die Beschaffungsplattform für Geschäftskunden 42

MICROSERVICES-SCHNITT JETZT MIT GRAPHQL!

MICROSERVICES-SCHNITT JETZT MIT GRAPHQL! MICROSERVICES-SCHNITT JETZT MIT GRAPHQL! 05.07.2018 Matthias Koch Agenda 1. Überblick über das Framework 2. GraphQL vs. REST 3. GraphQL als API-Gateway? 2 Agenda 1. Überblick über das Framework 2. GraphQL

Mehr

Backend. Hochschule Darmstadt, Fachbereich Informatik, Wintersemester 2016/2017. Christopher Dörge, Thomas Sauer, David Müller

Backend. Hochschule Darmstadt, Fachbereich Informatik, Wintersemester 2016/2017. Christopher Dörge, Thomas Sauer, David Müller Backend Hochschule Darmstadt, Fachbereich Informatik, Wintersemester 2016/2017 Christopher Dörge, Thomas Sauer, David Müller Aufbau einer RESTful API mit... Ziel node.js, express und MongoDB Symfony und

Mehr

Wenn. Schnittstellen. alt werden... Claus Straube IT Architekt

Wenn. Schnittstellen. alt werden... Claus Straube IT Architekt Wenn Schnittstellen alt werden... Claus Straube IT Architekt claus.straube@muenchen.de A B Provider Consumer Request A Response B Provider Consumer Payload Request A Response B Provider Consumer Payload

Mehr

Architektur von REST basierten Webservices

Architektur von REST basierten Webservices 28.11.2005 Architektur von REST basierten Webservices Referent MARK ALTHOFF REST was invented by ROY T. FIELDING and RICHARD N. TAYLOR Geschichtlicher Hintergrund von REST 1994-1995 taucht der Begriff

Mehr

BRÜHL MÄRZ

BRÜHL MÄRZ NILS HARTMANN GraphQL für Java-Entwickler Slides: https://bit.ly/javaland-graphql JAVALAND, BRÜHL MÄRZ 2019 @NILSHARTMANN NILS HARTMANN Freiberuflicher Entwickler, Architekt, Trainer aus Hamburg Java JavaScript,

Mehr

als Alternative zu REST Manuel

als Alternative zu REST Manuel als Alternative zu REST Manuel Mauky @manuel_mauky Single-Page-Apps und mobile Apps API Wie kommen die Daten zum Client? API? Klassisch: REST/Hypermedia zahlreiche Ressourcen, jeweils über URIs erreichbar

Mehr

Serverless Computing mit AWS-Lambda

Serverless Computing mit AWS-Lambda Die Beschaffungsplattform für Geschäftskunden Serverless Computing mit AWS-Lambda Jörg Adler und Benjamin Otto, 29.9.2017 Wir @ Mercateo Mercateo ist Europas führende Beschaffungsplattform. > 1 Mio. Geschäftskunden

Mehr

Neue Welten: Externe Daten mit APEX nutzen

Neue Welten: Externe Daten mit APEX nutzen Neue Welten: Externe Daten mit APEX nutzen Carsten Czarski Oracle Application Express Development-Team DOAG Regio München - 17. Mai 2018 Copyright 2017 Oracle and/or its affiliates. All rights reserved.

Mehr

Schnittstellenarchitektur in Zeiten sich wandelnder Frontend-Technologien

Schnittstellenarchitektur in Zeiten sich wandelnder Frontend-Technologien Schnittstellenarchitektur in Zeiten sich wandelnder Frontend-Technologien Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Ihr Sprecher Thorsten Maier Trainer,

Mehr

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG SODA Die Datenbank als Document Store Rainer Willems Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG vs No Anforderungskonflikte Agile Entwicklung Häufige Schema-Änderungen Relationales

Mehr

Serverless Computing

Serverless Computing Die Bescha ungsplattform für Geschäftskunden Serverless Computing mit AWS-Lambda Jörg Adler, 31.3.2017 Wir @ Mercateo Mercateo ist Europas führende Bescha ungsplattform. > 1Mio.Geschäftskunden 21 Mio.

Mehr

Unified-E Standard WebHttp Adapter

Unified-E Standard WebHttp Adapter Unified-E Standard WebHttp Adapter Version: 1.5.0.2 und höher Juli 2017 Inhalt 1 Allgemeines... 2 2 Adapter-Parameter in Unified-E... 2 3 Symbolische Adressierung... 3 3.1 ReadValues-Methode... 4 3.2 WriteValues

Mehr

Entwicklung einer REST-API zur Erstellung und Konfiguration von Microsoft Teams. Jan Kruse, utilitas GmbH

Entwicklung einer REST-API zur Erstellung und Konfiguration von Microsoft Teams. Jan Kruse, utilitas GmbH Entwicklung einer REST-API zur Erstellung und Konfiguration von Microsoft Teams Jan Kruse, utilitas GmbH 15.01.2018 Gliederung Einleitung Motivation Ziele Grundlagen ASP.Net Web API REST-API Microsoft

Mehr

Deep-Dive Workshop: Virtualisierung der Softwareentwicklung

Deep-Dive Workshop: Virtualisierung der Softwareentwicklung Deep-Dive Workshop: Virtualisierung der Softwareentwicklung Hanna Behnke, Lukas Böhme, Jonas Grunert, Alexander Reichenbach, Andreas Schmietendorf, Steffen Viebrock 1 Impuls Minuten 2 Hintergrund zum Forschungsbereich

Mehr

Web-API Design mit Java

Web-API Design mit Java @_openknowledge Web-API Design mit Java API-First Design mit ÜBER OPEN KNOWLEDGE BRANCHENNEUTRALE SOFTWAREENTWICKLUNG UND IT-BERATUNG ÜBER UNS SM STEPHAN MÜLLER Wer bin ich - und wenn ja, wie viele? Enterprise

Mehr

REST Grundlagen. Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web. Olga Liskin <olga.liskin@gmail.com>

REST Grundlagen. Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web. Olga Liskin <olga.liskin@gmail.com> REST Grundlagen Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web Olga Liskin Übersicht Motivation, Einführung Architekturstil REST RESTful Webservices Patterns,

Mehr

Dirk von der Weiden, Olaf Meyer C1 SetCon. REST in the Enterprise

Dirk von der Weiden, Olaf Meyer C1 SetCon. REST in the Enterprise Konferenz Dirk von der Weiden, Olaf Meyer C1 SetCon REST in the Enterprise REST in the Enterprise C1 SetCon GmbH Stand: Januar 2010 Copyright 2010 C1 SetCon GmbH Member of C1 Group Einleitung Worum geht

Mehr

Delphi MVC Framework. Mathias Pannier

Delphi MVC Framework. Mathias Pannier Delphi MVC Framework Mathias Pannier Über mich Name: Mathias Pannier Position: Softwareentwickler/Teamleiter Mehr als 15 Jahre Erfahrung mit Softwareentwicklung in Delphi Blog: DMVCFramework Delphi MVC

Mehr

GraphQL als Alternative zu REST

GraphQL als Alternative zu REST GraphQL als Alternative zu REST Manuel Mauky, Saxonia Systems AG GraphQL ist eine Abfragesprache für Web-APIs, mit der Web- und Mobile-Anwendungen Daten vom Server beziehen könnten. Es stellt damit eine

Mehr

REST Services in APEX Anwendungen nutzen

REST Services in APEX Anwendungen nutzen REST Services in APEX Anwendungen nutzen Carsten Czarski - @cczarski Consulting Member of technical Staff Oracle Application Express ORACLE Deutschland B.V. & Co KG REST: Representational State Transfer

Mehr

REST Services To-Go Einfacher Einstieg in die REST Programmierung

REST Services To-Go Einfacher Einstieg in die REST Programmierung REST Services To-Go Einfacher Einstieg in die REST Programmierung 04.07.2017 Version 1.0 Seite 1 Zur Person Marcus Blum Oracle Forms seit 1994 (Forms 3 / Oracle 6 aufwärts) Fokus auf Oracle APEX seit 2007

Mehr

IT S ALL ABOUT THE DOMAIN, HONEY!

IT S ALL ABOUT THE DOMAIN, HONEY! IT S ALL ABOUT THE DOMAIN, HONEY! Fachliche Architektur In hoher Qualitaet durch Domain-Driven design @hschwentner Was ist das für 1 Design? @hschwentner Vong Domain her @hschwentner HENNING SCHWENTNER

Mehr

NotesSession.GetPropertyBroker( )

NotesSession.GetPropertyBroker( ) Bestandteile von CA Laufen im Rich Client (Notes oder Expeditor) oder via Portal Server im Browser NSF-Komponenten sind Notes-Designelemente Eclipse Komponenten sind Eclipse ViewParts lokale oder Websphere

Mehr

Forms auf Tablets. Vision oder Realität?

Forms auf Tablets. Vision oder Realität? Forms auf Tablets Vision oder Realität? Die handelnden Personen Jan-Peter Timmermann Entwickler seit 1985 (Informix) OCP Oracle Forms/Reports, PL/SQL Seit 2000 bei Unternehmen wie Opitz, Trivadis und PITSS

Mehr

SOLID für.net und JavaScript

SOLID für.net und JavaScript SOLID für.net und JavaScript www.binarygears.de Stefan Dirschnabel Twitter: @StefanDirschnab #dncgn SOFTWARE ENTWICKLUNG BERATUNG SCHULUNG 5 Prinzipien für das Design von Software Wartbarer Code Leicht

Mehr

(Building) Flexible Functional Programming Interfaces. Von Amos Treiber

(Building) Flexible Functional Programming Interfaces. Von Amos Treiber (Building) Flexible Functional Programming Interfaces Von Amos Treiber Gliederung Funktionale Programmierung Einführung Aspekte Vergleich: Funktional vs Imperativ Bending the language towards the problem

Mehr

Web-Services mit Go. Sebastian tokkee Harl OpenRheinRuhr 07. November 2015 Oberhausen

Web-Services mit Go. Sebastian tokkee Harl OpenRheinRuhr 07. November 2015 Oberhausen Web-Services mit Go Sebastian tokkee Harl OpenRheinRuhr 07. November 2015 Oberhausen Überblick Was ist Go? Go is an open source programming language that makes it easy to build simple,

Mehr

Creating OpenSocial Gadgets. Bastian Hofmann

Creating OpenSocial Gadgets. Bastian Hofmann Creating OpenSocial Gadgets Bastian Hofmann Agenda Part 1: Theory What is a Gadget? What is OpenSocial? Privacy at VZ-Netzwerke OpenSocial Services OpenSocial without Gadgets - The Rest API Part 2: Practical

Mehr

Ist GraphQL das bessere REST?

Ist GraphQL das bessere REST? Ist GraphQL das bessere REST? checkdomain 174 TSD Aktive Domains 48 TSD 22 Aktive Kunden Festangestellte Mitarbeiter PHP, Symfony, NodeJS, React, MySQL, MongoDB, RabbitMQ, DDD, Git, Gitlab CI, Ansible,

Mehr

ODS 6.0 Schnittstelle

ODS 6.0 Schnittstelle ODS 6.0 Schnittstelle Dieter Müller Server Developer 1 Architektur ODS-Schnittstelle Vergleich ODS 5.x ODS 6.0 ODS 5.x ODS 6.0 ODS Client ODS Server ODS Client ODS Server Stub ORB IIOP Generiert aus

Mehr

Serverless IoT_. Serverless fleet tracking at scale with AWS IoT and Lambda Conrad Pöpke

Serverless IoT_. Serverless fleet tracking at scale with AWS IoT and Lambda Conrad Pöpke Serverless IoT_ Serverless fleet tracking at scale with AWS IoT and Lambda 29.03.2017 - Conrad Pöpke Anonymisiertes PoC Beispiel 2 Beispiel_ Bus Management Service für Busunternehmen Koordination der Flotte

Mehr

RESTful API Grundlagen mit PHP und Payrexx

RESTful API Grundlagen mit PHP und Payrexx RESTful API Grundlagen mit PHP und Payrexx Autor: Michael Räss, michael.raess@payrexx.com Stand: 21.11.2017 Payrexx AG Ziele Begriffe und Definition verstehen Prinzipien / Funktionsweise kennenlernen Grundlagen

Mehr

Context-adaptation based on Ontologies and Spreading Activation

Context-adaptation based on Ontologies and Spreading Activation -1- Context-adaptation based on Ontologies and Spreading Activation ABIS 2007, Halle, 24.09.07 {hussein,westheide,ziegler}@interactivesystems.info -2- Context Adaptation in Spreadr Pubs near my location

Mehr

datenlink-schnittstelle Version 1.0

datenlink-schnittstelle Version 1.0 www.datenlink.info datenlink-schnittstelle Version 1.0 Inhalt 1 Allgemeines 2 1.1 Datenaustausch... 2 1.2 Zugriffstypen... 2 2 Format der Rückgabewerte 3 2.1 HTTP-Statuscodes... 3 2.2 Rückgabewerte...

Mehr

REST IN PEACE MIT ORACLE

REST IN PEACE MIT ORACLE REST IN PEACE MIT ORACLE ORDS, NODE.JS, ADF, JAVA ODER OSB Ulrich Gerkmann-Bartels und Andreas Koop ÜBER UNS Ulrich Gerkmann-Bartels Geschäftsführung und Consulting Andreas Koop Geschäftsführung und Consultant

Mehr

JAX-RS 2.0 REST mit Java EE 7

JAX-RS 2.0 REST mit Java EE 7 Enterprise Java, Web Services und XML JAX-RS 2.0 REST mit Java EE 7 Java User Group Darmstadt 13. Juni 2013 http://www.frotscher.com thilo@frotscher.com Vorstellung Freiberuflicher Softwarearchitekt und

Mehr

p^db=`oj===pìééçêíáåñçêã~íáçå=

p^db=`oj===pìééçêíáåñçêã~íáçå= p^db=`oj===pìééçêíáåñçêã~íáçå= Error: "Could not connect to the SQL Server Instance" or "Failed to open a connection to the database." When you attempt to launch ACT! by Sage or ACT by Sage Premium for

Mehr

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016 Overview The Hamburg Süd VGM-Portal is an application which enables to submit VGM information directly to Hamburg Süd via our e-portal web page. You can choose to insert VGM information directly, or download

Mehr

Über mich. Daniel Bälz. Softwareentwickler (inovex GmbH) github.com/dbaelz

Über mich. Daniel Bälz. Softwareentwickler (inovex GmbH) github.com/dbaelz Quo vadis Dart? Über mich Daniel Bälz Softwareentwickler (inovex GmbH) dbaelz.de plus.dbaelz.de github.com/dbaelz Agenda Was Wie Warum Wohin Was ist Dart? Übersicht Einsatzgebiet Client (Browser, CLI)

Mehr

M2M-Serviceplattformen für das Internet der Dinge

M2M-Serviceplattformen für das Internet der Dinge M2M-Serviceplattformen für das Internet der Dinge Klaus-Dieter Walter SSV Software Systems GmbH, Hannover kdw@ssv-embedded.de 20.11.2013 1 Agenda Wer ist SSV Software Systems? Hintergründiges zu IoT, M2M,

Mehr

Web-Konzepte für das Internet der Dinge Ein Überblick

Web-Konzepte für das Internet der Dinge Ein Überblick Web-Konzepte für das Internet der Dinge Ein Überblick Samuel Wieland sawielan@student.ethz.ch ETH Zürich Seminar Das Internet der Dinge Historisches Tim Berners-Lee Erster Web-Server Bildquelle: Wikimedia

Mehr

Entwicklung einer Webapplikation zur Vereinfachung der Umsetzung webbasierter Anwendungen

Entwicklung einer Webapplikation zur Vereinfachung der Umsetzung webbasierter Anwendungen Entwicklung einer Webapplikation zur Vereinfachung der Umsetzung webbasierter Anwendungen Python-BarCamp 2016 02. 03. April 2016 Florian Macherey PGI / JCNS-TA Inhalt Einleitung Grundlagen Konzeption Implementierung

Mehr

FOLIO EINFÜHRUNG. Richard Redweik Universitätsbibliothek Leipzig

FOLIO EINFÜHRUNG. Richard Redweik Universitätsbibliothek Leipzig FOLIO EINFÜHRUNG Richard Redweik redweik@ub.uni-leipzig.de Universitätsbibliothek Leipzig 28.09.2017 AGENDA 1. Motivation 2. FOLIO a. Übersicht b. Okapi c. Stripes 3. Zusammenfassung MOTIVATION Warum FOLIO?

Mehr

Skalierbare Webanwendungen

Skalierbare Webanwendungen Skalierbare Webanwendungen Thomas Bachmann Lead Software Architect & CIO Mambu GmbH Twitter: @thobach Anwendungsbeispiel Hohe Nichtfunktionale Anforderungen Sicherheit Vertraulichkeit Integrität Verfügbarkeit

Mehr

BIW Wahlpflichtmodul. Einführung in Solr, Pipeline und REST. Philipp Schaer, TH Köln (University of Applied Sciences), Cologne, Germany

BIW Wahlpflichtmodul. Einführung in Solr, Pipeline und REST. Philipp Schaer, TH Köln (University of Applied Sciences), Cologne, Germany BIW Wahlpflichtmodul Einführung in Solr, Pipeline und REST Philipp Schaer, TH Köln (University of Applied Sciences), Cologne, Germany Version: 2018-05-29 Überblick über gängige Lösungen 2 3 in a nutshell

Mehr

Forms Desktop Kooperation

Forms Desktop Kooperation Forms Desktop Kooperation Oracle Forms in Integration & Interaktion Forms Day 2019 Motivation Kennen Sie diese Argumente? Kein modernes GUI.. fehlende Komponenten Forms zu starr und wird als Insel empfunden

Mehr

XML-Technologien Tutorium 6

XML-Technologien Tutorium 6 XML-Technologien Tutorium 6 Thema: Semantic Web Linked Data RDF SPARQL von: Kain Kordian Gontarska kainkordian@gmail.com Semantic Web Das Internet soll nicht nur aus "dummen" Inhalten bestehen. (Ansammlung

Mehr

Grundlagen der Programmierung in C Klassen

Grundlagen der Programmierung in C Klassen Grundlagen der Programmierung in C Klassen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple address pointer reference structured integral

Mehr

+++ Bitte nutzen Sie die integrierte Audio-Funktion von WebEx (Menü Audio -> Integrated Voice Conference -> Start auswählen), um uns zu hören!!!.

+++ Bitte nutzen Sie die integrierte Audio-Funktion von WebEx (Menü Audio -> Integrated Voice Conference -> Start auswählen), um uns zu hören!!!. +++ Bitte nutzen Sie die integrierte Audio-Funktion von WebEx (Menü Audio -> Integrated Voice Conference -> Start auswählen), um uns zu hören!!!. +++ Oracle Mobile Cloud Service (MCS) MCS SDK & MAF MCS

Mehr

Vom MicroService zum Geschäftsprozess Thomas Bröll Principal Consultant Trivadis GmbH, Stuttgart

Vom MicroService zum Geschäftsprozess Thomas Bröll Principal Consultant Trivadis GmbH, Stuttgart Vom MicroService zum Geschäftsprozess Thomas Bröll Principal Consultant Trivadis GmbH, Stuttgart BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART

Mehr

GridMate The Grid Matlab Extension

GridMate The Grid Matlab Extension GridMate The Grid Matlab Extension Forschungszentrum Karlsruhe, Institute for Data Processing and Electronics T. Jejkal, R. Stotzka, M. Sutter, H. Gemmeke 1 What is the Motivation? Graphical development

Mehr

Wie man heute die Liebe fürs Leben findet

Wie man heute die Liebe fürs Leben findet Wie man heute die Liebe fürs Leben findet Sherrie Schneider Ellen Fein Click here if your download doesn"t start automatically Wie man heute die Liebe fürs Leben findet Sherrie Schneider Ellen Fein Wie

Mehr

Schöpfung als Thema des Religionsunterrichts in der Sekundarstufe II (German Edition)

Schöpfung als Thema des Religionsunterrichts in der Sekundarstufe II (German Edition) Schöpfung als Thema des Religionsunterrichts in der Sekundarstufe II (German Edition) Juliane Timmroth Click here if your download doesn"t start automatically Schöpfung als Thema des Religionsunterrichts

Mehr

Progressive Web Apps mit APEX. Till Albert

Progressive Web Apps mit APEX. Till Albert Progressive Web Apps mit APEX Till Albert 09.05.2019 Facts & Figures IT-Beratungsunternehmen Branchen übergreifend Hersteller neutral Hauptsitz Ratingen Niederlassung Frankfurt am Main 250 Beschäftigte

Mehr

Thomas Schissler MVP Visual Studio ALM, artiso AG

Thomas Schissler MVP Visual Studio ALM, artiso AG Thomas Schissler MVP Visual Studio ALM, artiso AG Kurs-Übersicht Moderne Softwareentwicklung 01 Überblick Was macht moderne Software-Entwicklung aus? 02 Projektmanagement Wie funktioniert modernes Projektmanagement

Mehr

Web APIs auf dem Prüfstand Volle Kontrolle oder fertig mit den Azure Mobile Services?

Web APIs auf dem Prüfstand Volle Kontrolle oder fertig mit den Azure Mobile Services? Web APIs auf dem Prüfstand Volle Kontrolle oder fertig mit den Azure Mobile Services? Web APIs Wo kommen wir her? Remote Procedure Calls (RPC) Verben/Aktionen im Endpunkt enthalten GetCustomer InsertInvoice

Mehr

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal Groovy und CouchDB Ein traumhaftes Paar Thomas Westphal 18.04.2011 Herzlich Willkommen Thomas Westphal Software Engineer @ adesso AG Projekte, Beratung, Schulung www.adesso.de thomas.westphal@adesso.de

Mehr

Python zur Lösung von AvA Übung 1 VON MORITZ FEY

Python zur Lösung von AvA Übung 1 VON MORITZ FEY Python zur Lösung von AvA Übung 1 VON MORITZ FEY Übersicht 2 Einführung Socket-Schnittstellen Datei-Zugriff Aufbau der Nachrichten und Serialisierung Besonderheiten von Python Realisierung des Programms

Mehr

Informatik II Übung 7 Gruppe 7

Informatik II Übung 7 Gruppe 7 Informatik II Übung 7 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 7 Leyna Sadamori 10. April 2014 1 Administratives Nächste Übung fällt leider aus! Bitte eine andere Übung besuchen.

Mehr

Webbasierte Exploration von großen 3D-Stadtmodellen mit dem 3DCityDB Webclient

Webbasierte Exploration von großen 3D-Stadtmodellen mit dem 3DCityDB Webclient Webbasierte Exploration von großen 3D-Stadtmodellen mit dem 3DCityDB Webclient Zhihang Yao, Kanishk Chaturvedi, Thomas H. Kolbe Lehrstuhl für Geoinformatik www.gis.bgu.tum.de 11/14/2015 Webbasierte Exploration

Mehr

Platform as a Service (PaaS) & Containerization

Platform as a Service (PaaS) & Containerization Platform as a Service (PaaS) & Containerization Open Source Roundtable Bundesverwaltung; Bern, 23. Juni 2016 André Kunz Chief Communications Officer Peter Mumenthaler Head of System Engineering 1. Puzzle

Mehr

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL USER GUIDE June 2016

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL USER GUIDE June 2016 Overview The Hamburg Süd VGM Web portal is an application that enables you to submit VGM information directly to Hamburg Süd via our e-portal Web page. You can choose to enter VGM information directly,

Mehr

Ermittlung des Maschinenstundensatzes (Unterweisung Industriekaufmann / -kauffrau) (German Edition)

Ermittlung des Maschinenstundensatzes (Unterweisung Industriekaufmann / -kauffrau) (German Edition) Ermittlung des Maschinenstundensatzes (Unterweisung Industriekaufmann / -kauffrau) (German Edition) Click here if your download doesn"t start automatically Ermittlung des Maschinenstundensatzes (Unterweisung

Mehr

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML 5. Programmierschnittstellen für Grundlagen Dr. E. Schön FH Erfurt Sommersemester 2015 Seite 135 Programmierschnittstelle Notwendigkeit: Zugriff auf -Daten durch Applikationen wiederverwendbare Schnittstellen

Mehr

Soziale Arbeit mit rechten Jugendcliquen: Grundlagen zur Konzeptentwicklung (German Edition)

Soziale Arbeit mit rechten Jugendcliquen: Grundlagen zur Konzeptentwicklung (German Edition) Soziale Arbeit mit rechten Jugendcliquen: Grundlagen zur Konzeptentwicklung (German Edition) Click here if your download doesn"t start automatically Soziale Arbeit mit rechten Jugendcliquen: Grundlagen

Mehr

Stand und Planungen im Bereich der Schnittstellen in der VZG

Stand und Planungen im Bereich der Schnittstellen in der VZG Stand und Planungen im Bereich der Schnittstellen in der VZG Jakob Voß 28. August 2013, 17. Verbundkonferenz des GBV Schnittstellen Allgemein Patrons Account Information API (PAIA) Strategie und Planungen

Mehr

FEBE Die Frontend-Backend-Lösung für Excel

FEBE Die Frontend-Backend-Lösung für Excel FEBE Die Frontend--Lösung für FEBE Die Frontend--Lösung für FEBE.pptx 8.04.206 0:43 FEBE Die Frontend--Lösung für Nutzer A alle_aufträge neuer_auftrag Auftragsänderung Nutzer B alle_aufträge neuer_auftrag

Mehr

Microservices. - Integration der Benutzeroberfläche - Version: Orientation in Objects GmbH. Weinheimer Str.

Microservices. - Integration der Benutzeroberfläche - Version: Orientation in Objects GmbH. Weinheimer Str. Microservices - Integration der Benutzeroberfläche - Version: 18.1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Ihr Sprecher Thorsten Maier Trainer, Berater, Entwickler

Mehr

API-Gateway bringt Ordnung in Microservices-Wildwuchs. Frank Pientka, Dortmund

API-Gateway bringt Ordnung in Microservices-Wildwuchs. Frank Pientka, Dortmund API-Gateway bringt Ordnung in Microservices-Wildwuchs Frank Pientka, Dortmund Warum sind Verbindungen wichtig? 3 Agenda APIs regieren die Welt Schnittstellenprobleme Microservices und Qualitätsmerkmale

Mehr

4. RADAR-WORKSHOP RADAR APPLICATION PROGRAMMING INTERFACE KARLSRUHE, 25./26. JUNI Matthias Razum, FIZ Karlsruhe

4. RADAR-WORKSHOP RADAR APPLICATION PROGRAMMING INTERFACE KARLSRUHE, 25./26. JUNI Matthias Razum, FIZ Karlsruhe 4. RADAR-WORKSHOP KARLSRUHE, 25./26. JUNI 2018 RADAR APPLICATION PROGRAMMING INTERFACE Matthias Razum, FIZ Karlsruhe APPLICATION PROGRAMMING INTERFACE POTENZIAL ANWENDUNG Application Programming Interface

Mehr

NoSQL mit Postgres 15. Juni 2015

NoSQL mit Postgres 15. Juni 2015 Tag der Datenbanken 15. Juni 2015 Dipl.-Wirt.-Inform. Agenda l Vorstellung l Marktübersicht l Warum PostgreSQL? l Warum NoSQL? l Beispielanwendung Seite: 2 Vorstellung Dipl.-Wirt.-Inform. [1990] Erste

Mehr

Watson Collaborator Cognitive Training für Collaboration Solutions

Watson Collaborator Cognitive Training für Collaboration Solutions Watson Collaborator Cognitive Training für Collaboration Solutions Arnd Layer Competency Leader Social Collaboration, IBM Collaboration & Talent Solutions - Cognitive Solutions Unit DACH, 2017-04-03 2

Mehr

Algorithms for graph visualization

Algorithms for graph visualization Algorithms for graph visualization Project - Orthogonal Grid Layout with Small Area W INTER SEMESTER 2013/2014 Martin No llenburg KIT Universita t des Landes Baden-Wu rttemberg und nationales Forschungszentrum

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

Softwaretechnik WS 16/17. Übungsblatt 01 Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and

Mehr

ENTERPRISEY ANGULAR.JS

ENTERPRISEY ANGULAR.JS ENTERPRISEY ANGULAR.JS THE GOOD, THE BAD, AND THE UGLY EnterJS 2015 - Ralph Guderlei Technology Advisor @ @rguderlei ENTERPRISE APPLICATIONS? komplexe Datenmodelle (100+ Entities) komplexe Geschäftsprozesse

Mehr

DATENBANKEN? WO WIR HINFAHREN BRAUCHEN WIR KEINE DATENBANKEN.

DATENBANKEN? WO WIR HINFAHREN BRAUCHEN WIR KEINE DATENBANKEN. DATENBANKEN? WO WIR HINFAHREN BRAUCHEN WIR KEINE DATENBANKEN. Nicolai Mainiero sidion Über mich Über mich Diplom-Informatiker. Mehr als 8 Jahre Erfahrung in der Softwareentwicklung. Seit mehr als 3 Jahren

Mehr

DIBELS TM. German Translations of Administration Directions

DIBELS TM. German Translations of Administration Directions DIBELS TM German Translations of Administration Directions Note: These translations can be used with students having limited English proficiency and who would be able to understand the DIBELS tasks better

Mehr

Criteria API Komplexe SQL-Queries mit Eclipselink bauen 1

Criteria API Komplexe SQL-Queries mit Eclipselink bauen 1 Criteria API Komplexe SQL-Queries mit Eclipselink bauen Criteria API Komplexe SQL-Queries mit Eclipselink bauen 1 Was erwartet Sie? Wer ist t&p? Warum die Criteria API nutzen? Wie funktionierts? Wie kann

Mehr

RESTful Web. Representational State Transfer

RESTful Web. Representational State Transfer RESTful Web Representational State Transfer 1 Warum REST? REST ist die Lingua Franca des Webs Heterogene (verschiedenartige) Systeme können mit REST kommunizieren, unabhängig von Technologie der beteiligten

Mehr

Hochverfügbare Webanwendungen mit Apache Cassandra. msg systems ag, 26. November 2014

Hochverfügbare Webanwendungen mit Apache Cassandra. msg systems ag, 26. November 2014 R8 Hochverfügbare Webanwendungen mit Apache Cassandra 1 Forschung zu Wirtschaft 2 Name R8 Name R8 3 Applikations-Framework Big-Data-Framework für besonders anspruchsvolle Kunden 4 derzeitige Architekturen

Mehr

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML 5. Programmierschnittstellen für für Medientechnologen Dr. E. Schön Wintersemester 2015/16 Seite 146 Notwendigkeit: Programmierschnittstelle Zugriff auf -Daten durch Applikationen wiederverwendbare Schnittstellen

Mehr

Varnish + TYPO3. CH-TUG Varnish + TYPO3

Varnish + TYPO3. CH-TUG Varnish + TYPO3 Varnish + TYPO3 1 Agenda Über Varnish Varnish + TYPO3 Case Studies 2 Varnish Software AS die Firma 2005: Idee bei Verdens Gang AS Poul-Henning Kamp Redpill Linpro / Varnish Software AS BSD License 2006:

Mehr

Session 2. Notes Apps auf ipad & Co. Wie native Apps mit Notes synchronisieren können.

Session 2. Notes Apps auf ipad & Co. Wie native Apps mit Notes synchronisieren können. Session 2 Notes Apps auf ipad & Co Wie native Apps mit Notes synchronisieren können. Heute: Beispiele mit echtem Code, Erfahrungen aus dem echten Leben, Überlegungen zur Performance Beispiel 1: Ansicht

Mehr

WebApps in spezieller Umgebung

WebApps in spezieller Umgebung WebApps in spezieller Umgebung Neuentwicklung des dm Service-Punkts #devfestka2016 Matthias Reuter inovex GmbH @gweax Philipp Christoph FILIADATA GmbH Grafk: Polygon GmbH Alles neu?! SPAF Service-Punkt

Mehr

Karlsruhe Institute of Technology Die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)

Karlsruhe Institute of Technology Die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Combining Cloud and Grid with a User Interface Jie Tao Karlsruhe Institute of Technology jie.tao@kit.edu Die Kooperation von Outline Motivation The g-eclipse Project Extending gg-eclipse for a Cloud Framework

Mehr

LIVING BUSINESS AG. Getting Started - centrexx API ONE STEP AHEAD. Guide zum Umgang und Umfang der 3D-centrexX API in der Version 1.

LIVING BUSINESS AG. Getting Started - centrexx API ONE STEP AHEAD. Guide zum Umgang und Umfang der 3D-centrexX API in der Version 1. Getting Started - centrexx API in der Version 1. Verantwortlich: Michael Angermaier Autor: Michael Angermaier Version: 0.1 ONE STEP AHEAD LIVING BUSINESS AG Seite 1 von 10 Inhaltsverzeichnis 1 Vorwort

Mehr

Weather forecast in Accra

Weather forecast in Accra Weather forecast in Accra Thursday Friday Saturday Sunday 30 C 31 C 29 C 28 C f = 9 5 c + 32 Temperature in Fahrenheit Temperature in Celsius 2 Converting Celsius to Fahrenheit f = 9 5 c + 32 tempc = 21

Mehr

REST in Pieces. Jörn Clausen joern@techfak.uni-bielefeld.de

REST in Pieces. Jörn Clausen joern@techfak.uni-bielefeld.de REST in Pieces Jörn Clausen joern@techfak.uni-bielefeld.de Worum geht es? Dissertation Architectural Styles and the Design of Network-based Software Architectures von Roy T. Fielding, UC Irvine, 2000 [...

Mehr

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES 2016 Software AG. All rights reserved. For internal use only DIGITAL BUSINESS APPLICATIONS DRIVE THE DIGITAL BUSINESS Partner Lieferanten Kunden SaaS

Mehr

NEWSLETTER. FileDirector Version 2.5 Novelties. Filing system designer. Filing system in WinClient

NEWSLETTER. FileDirector Version 2.5 Novelties. Filing system designer. Filing system in WinClient Filing system designer FileDirector Version 2.5 Novelties FileDirector offers an easy way to design the filing system in WinClient. The filing system provides an Explorer-like structure in WinClient. The

Mehr

SAP NetWeaver Gateway. Connectivity@SNAP 2013

SAP NetWeaver Gateway. Connectivity@SNAP 2013 SAP NetWeaver Gateway Connectivity@SNAP 2013 Neue Wege im Unternehmen Neue Geräte und Usererfahrungen Technische Innovationen in Unternehmen Wachsende Gemeinschaft an Entwicklern Ausdehnung der Geschäftsdaten

Mehr

Gemeinsam mehr erreichen.

Gemeinsam mehr erreichen. Gemeinsam mehr erreichen. Microservices, ein Vorgehensmodell zur Softwareentwicklung - Nürnberg - 17. November 2016 "Mit unserer Begeisterung für führende Technologien vernetzen wir Systeme, Prozesse und

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

Duell auf offener Straße: Wenn sich Hunde an der Leine aggressiv verhalten (Cadmos Hundebuch) (German Edition)

Duell auf offener Straße: Wenn sich Hunde an der Leine aggressiv verhalten (Cadmos Hundebuch) (German Edition) Duell auf offener Straße: Wenn sich Hunde an der Leine aggressiv verhalten (Cadmos Hundebuch) (German Edition) Nadine Matthews Click here if your download doesn"t start automatically Duell auf offener

Mehr

!! Um!in!ADITION!ein!HTML51Werbemittel!anzulegen,!erstellen!Sie!zunächst!ein!neues! Werbemittel!des!Typs!RichMedia.!!!!!!

!! Um!in!ADITION!ein!HTML51Werbemittel!anzulegen,!erstellen!Sie!zunächst!ein!neues! Werbemittel!des!Typs!RichMedia.!!!!!! HTML5&Werbemittel/erstellen/ Stand:/06/2015/ UminADITIONeinHTML51Werbemittelanzulegen,erstellenSiezunächsteinneues WerbemitteldesTypsRichMedia. Hinweis:// DasinADITIONzuhinterlegende RichMedia1Werbemittelbestehtimmer

Mehr

REST-Schnittstellen Dokumentation und Testing. Adrian Moos (adrian.moos@bedag.ch) Technology Advisor Bedag Informatik AG

REST-Schnittstellen Dokumentation und Testing. Adrian Moos (adrian.moos@bedag.ch) Technology Advisor Bedag Informatik AG REST-Schnittstellen Dokumentation und Testing Adrian Moos (adrian.moos@bedag.ch) Technology Advisor Bedag Informatik AG Inhalt Einleitung Dokumentation und Ad-Hoc-Testing Testautomation Fazit Seite 2 Softwareentwicklung

Mehr