06α Αρχιτεκτονικά πρότυπα στον Παγκόσμιο Ιστό

Σχετικά έγγραφα
07 Αρχιτεκτονική Κατανεμημένων Συστημάτων στον Παγκόσμιο Ιστό

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Ανοικτά Δεδομένα. Η εμπειρία του OpenDataCloud

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

ΚΕΦΑΛΑΙΟ 17: Web Services Εισαγωγή

Χειμερινό εξάμηνο Διδάσκοντες: Ν. Παπασπύρου, Β. Βεσκούκης, Κ. Σαΐδης

Υπηρεσίες Ιστού (Web Services) Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture)

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

Τεχνολογία Λογισμικού

Προγραμματισμός Ιστοσελίδων (Web Design)

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

09 Η γλώσσα UML II. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Βασικές Έννοιες Web Εφαρμογών

Τεχνολογία Λογισμικού

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

Κατανεμημένα Συστήματα με Java. Ενότητα # 18: Υπηρεσίες Ιστού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

10α Έλεγχος και επαλήθευση λογισμικού

12 Πρότυπα σχεδίασης συμπεριφοράς

Πύλη Φαρμακευτικών Υπηρεσιών Υπουργείου Υγείας Κύπρου. System Architecture Overview

11β Δομικά πρότυπα σχεδίασης

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 9: Web Services. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0

02α Διαχείριση Έργων Λογισμικού

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Paybybank RESTful API GUIDE

* Enterprise Resource Planning ** Customer Relationship Management

Μηχανή αναζήτησης βασισμένη σε AJAX και Soundex. Πτυχιακή Εργασία

PayByBank RESTful API GUIDE

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Τεχνολογία Λογισμικού

Ανάπτυξηλογισμικού υλοποίησης του ανοικτού πρότυπου EPCALEv1.1 για εφαρμογές RFID

PayByBank RESTful API

Company LOGO. Nazaret Kazarian. 1

Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html. Χρ. Ηλιούδης

Παρουσίαση Θερινού Σχολείου. Αριστεία ΕΛ/ΛΑΚ ΤΕΙ Αθήνας

Ενότητα 1: HTTP, Clients και Servers. (Web, το θεμέλιο του Σημασιολογικού Ιστού)

Πληροφορίες για το μάθημα

Σχεδίαση και υλοποίηση εργαλείου αυτόματης ανάπτυξης προσαρμόσιμων διεπαφών χρήστη για RESTful web APIs

Tales & Trails. apps4thessaloniki 2016

Το Έργο Συνεισφοράς. Ανάπτυξη εφαρμογής για κινητές συσκευές του Σ.Δ.Μ. Open eclass. Θερινό Σχολείο, Ιουλίου 2014

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

Διαδίκτυο των Αντικειμένων - IoT.

ΤΕΧΝΟΛΟΓΙΕΣ ΣΧΕΔΙΑΣΗΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ (Web Site Design Technologies)

ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Διπλωματική Εργασία

Ιόνιο Πανεπιστήμιο Τμήμα Αρχειονομίας - Βιβλιοθηκονομίας Μεταπτυχιακό Πρόγραμμα Αθήνας Έτος

Λογισμικό Open Source στις Υπηρεσίες των Βιβλιοθηκών του Πανεπιστημίου Αθηνών

Αυτόματη παραγωγή γραφικών διεπαφών πελάτη από προδιαγραφές διαδικτυακών υπηρεσιών σε Swagger

A J A X AJAX Γιάννης Αρβανιτάκης

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Αυτόματη παραγωγή διεπαφών χρήστη (user interfaces) για διαδικτυακές υπηρεσίες τύπου REST (RESTful web services)

Social Network : Programming on FACEBOOK

ΑΠΟΘΕΤΗΡΙΟ ΕΦΑΡΜΟΓΩΝ ΥΠΠΕΘ ΚΑΙ ΕΠΟΠΤΕΥΟΜΕΝΩΝ ΦΟΡΕΩΝ (git.minedu.gov.gr)

Ημερομηνία Παράδοσης: 4/4/2013

Bringing the web offline

Γλωσσική Τεχνολογία. HTML/XML Processing HTTP Services

Διπλωματική Εργασία. Μέλλιος Θωμάς, Πετρίδης Κοσμάς. Επιβλέπων Καθηγητής: Πρωτόγερος Νικόλαος

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Σχεδιασμός και Ανάπτυξη Διαδικτυακών Υπηρεσιών Αρχιτεκτονικής REST ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Ηλεκτρονικό Ταχυδρομείο - SMTP

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Σύνθεση διαδικτυακών υπηρεσιών με χρήση τεχνικών σχεδιασμού ενεργειών

ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ : ΜΗΧΑΝΙΣΜΟΙ ΣΥΛΛΟΓΗΣ ΣΤΟΙΧΕΙΩΝ ΣΤΟ ΔΙΑΔΥΚΤΙΟ (COOKIES)

Γκέγκα Ευρώπη Κωστοπούλου Ειρήνη

BPMN Abstraction Tool ΠΑΡΟΥΣΙΑΣΗ ΕΡΓΑΛΕΙΟΥ ΑΦΑΙΡΕΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ

Αρχιτεκτονικές Συστημάτων

Ανάπτυξη Υπηρεσίας Τηλεκπαίδευσης σε ΙP Δίκτυα. Υλοποίηση Σύγχρονης Τηλεκπαίδευσης

Introduction to JAX-WS. Φοιτητής : ηµόπουλος Κωνσταντίνος

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Δικτυοκεντρικά Πληροφοριακά Συστήματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ» της ΜΑΡΙΑΣ ΜΟΥΡΑΤΙΔΟΥ

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Πανεπιστήμιο Πειραιώς Τμ ή μα Ψήφιακώή ν Συστήμαή τών

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική»

Frontend optimizations. Θεοδόσης Σουργκούνης

Ασφάλεια, Διαθεσιμότητα και Ταχύτητα για τις Web Εφαρμογές

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Εισαγωγή στη J2EE. Μέρος 2

ΚΕΦΑΛΑΙΟ 3 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΔΙΑΤΑΞΕΙΣ ΛΟΓΙΣΜΙΚΟΥ. Έννοιες-κλειδιά. Σύνοψη

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 11: Αρχιτεκτονική Cloud

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Θέματα Προγραμματισμού Διαδικτύου Εισαγωγή - Πρωτόκολλα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Alfresco. CyberStream. διαχείριση εγγράφων χωρίς όρια για την επιχείρηση. Νίκος Λυκουρόπουλος τεχνικός διευθυντής

Transcript:

06α Αρχιτεκτονικά πρότυπα στον Παγκόσμιο Ιστό Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr

Περιεχόμενα Ο Παγκόσμιος Ιστός Διεπαφές χρήστη στον Παγκόσμιο Ιστό Η τεχνική AJAX Τα πρότυπα MVVM και Observable Ο μορφότυπος JSON Υπηρεσιοστραφής αρχιτεκτονική Service oriented architecture Το αρχιτεκτονικό στυλ REST Μικρουπηρεσίες Microservices 2

Ο Παγκόσμιος Ιστός 3

Βασικά συστατικά Client/Server HTTP Hyper Text Transfer Protocol HTML Hyper Text Markup Language Unified Resource Identifiers, Locators and Names URIs, URLs, URNs 4

Μορφή ενός URL scheme://[user:password@]host[:port]/path[?query][#fragment] 5

HTTP Μέθοδοι HEAD, GET, PUT, POST, DELETE, κ.ά Headers Ηost, Αccept, Cookie, κ.ά Status codes 200, 404, 500, κ.ά Εκδόσεις: 1.0, 1.1, 2.0 6

Παράδειγμα Αίτηση GET /index.html HTTP/1.1 <line feed> Απάντηση HTTP/1.1 200 OK Date: Wed, 29 Mar 2017 14:38:00 GMT Server: Apache/1.3.27 (Unix)... Last Modified: Wed, 29 Mar 2017 01:16:05 GMT Accept Ranges: bytes Content Length: 6188 Content Type: text/html <html> <head>...</head><body>...</body> </html> 7

Μετασχηματισμός Από στατικές σελίδες & δυναμικά web sites Σε διαδραστικά, προσαρμόσιμα και ταχέως αποκρίσιμα Web applications που παρέχουν ή χρησιμοποιούν Web APIs Ο Παγκόσμιος Ιστός μετασχηματίζεται σε μια προγραμματιστική πλατφόρμα υπηρεσιών με τη Javascript να είναι η defacto γλώσσα 8

Διεπαφές χρήστη στον Παγκόσμιο Ιστό H τεχνική AJAX Το πρότυπο Model View ViewModel Το πρότυπο Observable Τεχνικές ασύγχρονου προγραμματισμού Promises * Reactive Programming* Ο μορφότυπος JSON *Σε επόμενη διάλεξη 9

AJAX Asynchronous Javascript and XML JSON Αποστολή του HTTP αιτήματος ασύγχρονα σε ξεχωριστό thread και παροχή callback hook για το αποτέλεσμα 10

Προ AJAX Aργά και δύσχρηστα User Interfaces Δεν ήταν εφικτό να υλοποιηθεί αποτελεσματικό User Experience! Π.χ. auto complete as you type του google search. Γιατί; 11

Παράδειγμα https://jsfiddle.net/2tqja09e/2577/ 12

Το Observable πρότυπο σχεδίασης Push paradigm Ο χρήστης/client του Observable ο observer ενημερώνεται για την αλλαγή της τιμής του observable το observable κάνει push Παρόμοια λογική με events & event handling 13

java.util.observable class Observable { void addobserver(observer o); void deleteobserver(observer o); boolean haschanged(); void notifyobservers(); void notifyobservers(object arg); } 14

Observer java.util.observable interface Observer { void update(observable o, Object arg); } 15

Το MVVM αρχιτεκτονικό πρότυπο 16

Παραλλαγή του Model View Controller 17

Συστατικά View: τα στοιχεία του UI Model: τα δεδομένα ViewModel Presenter ή ViewController : Data bindings model elements < > UI elements Change notifications 18

Εφαρμογή του Observable στο MVVM ViewModel: Ενθυλακώνει τα δεδομένα model elements σε observables Τα UI elements γίνονται bind ως observers στα model elements 19

20

Παράδειγμα http://knockoutjs.com/examples/ 21

Συζήτηση Δηλωτικός κώδικας Υψηλό επίπεδο αφαίρεσης Αυτόματη για τον προγραμματιστή ενημέρωση του UI με τις αλλαγές στα δεδομένα Σύνθετο για απλές διεπαφές χρήσης Θέματα απόδοσης σε πολύ μεγάλες εφαρμογές ή σύνολα δεδομένων 22

Ο μορφότυπος JSON 23

JavaScript Object Notation JSON Text based πρότυπο για την κωδικοποίηση δεδομένων ECMA 262 3η έκδοση, rfc 4627, ECMA 404 Kωδικοποίηση UNICODE UTF 8, UTF 16, UTF 32 Βασίζεται σε υποσύνολο της JavaScript, αλλά είναι πλήρως ανεξάρτητο της γλώσσας προγραμματισμού Το πλέον διαδεδομένο πρότυπο για: την ασύχρονη επικοινωνία μεταξύ Web Browser και Web Server επικοινωνία μεταξύ Web APIs services 24

Οφέλη Απλότητα Αναγνώσιμο από τον άνθρωπο Επεξεργάσιμο από οποιαδήποτε γλώσσα προγραμματισμού Σταθερότητα Δεν υπάρχουν διαφορετικές εκδόσεις Δεν αναμένονται αλλαγές στο συνακτικό Ταχύτερο κι απλούστερο από την XML WSDL, XML Web Services 25

Τύποι δεδομένων Πρωτογενείς τύποι String Number Boolean null Σύνθετοι τύποι Array Object 26

JSON String Ακολουθία 0 ή περισσοτέρων UNICODE χαρακτήρων Περιέχονται σε διπλά εισαγωγικά "..." Backslash escapes Παράδειγματα "" "data" "data \"with quotes\"" 27

JSON Number Χωρίς εισαγωγικά Προσημασμένος δεκαδικός αριθμός διπλής ακρίβειας, κινητής υποδιαστολής Παραδείγματα: 10 ακέραιος 10.45 πραγματικός 2.5e 5 scientific notation 28

JSON Boolean Χωρίς εισαγωγικά true ή false 29

JSON null Χωρίς εισαγωγικά null 30

JSON Array Διατεταγμένο σύνολο τιμών Οι τιμές εμπεριέχονται μεταξύ [] και χωρίζονται με, Παραδείγματα: Πίνακας με Strings: ["red","green","blue"] Πίνακας με Numbers: [10, 20, 0.30] Πίνακας με διάφορους τύπους: [10, "red", false, null] 31

JSON Object Μη διατεταγμένο σύνολο από ζεύγη ονόματος/τιμής unordered name/value pairs Ένα JSON Object έχει 0 ή περισσότερα ζευγάρια που εμπεριεχόνται σε {} Κάθε ζευγάρι έχει ένα όνομα και μία τιμή Το όνομα είναι τύπου String Η τιμή μπορεί να είναι οποιουδήποτε τύπου String, Number, Boolean, null, Object, Array Το όνομα διαχωρίζεται από την τιμή με : Τα ζευγάρια διαχωρίζονται μεταξύ τους με, 32

Παραδείγματα {"img":"web.jpg", "width":800, "height":600} { } "user": "saiko", "enabled": true, "favorites": [10, 11, 20], "roles": [ {"id":"editor", "text":"content Editor"}, {"id":"manager", "text":"system Manager"} ] 33

Μορφότυπος JSON Εύκολα αναγνώσιμo/διαχείσιμo και από ανθρώπους και από προγράμματα Αναπαριστά εύκολα τις ευρέως χρησιμοποιούμενες δομές δεδομένων records, lists, trees Οι αλγόριθμοι ανάλυσης parsing είναι απλοί, γρήγοροι και συνεπείς λόγω του απλού συντακτικού Υποστήριξη UNICODE MimeType: application/json 34

JSON with Padding/Prefix JSONP Τα AJAX calls περιορίζονται από το same origin policy το ποιό; Μηχανισμός για να υλοποιηθούν cross origin λειτουργίες, συνήθως με τη χρήση ενός callback function δηλαδή; MimeType: application/javascript Παράδειγμα; 35

Service oriented architecture 36

Η κεντρική ιδέα Υπηρεσίες που επικοινωνούν μέσω ενός πρωτοκόλλου επικοινωνίας και είναι: κατανεμημένες, αυτοτελείς separately maintained & deployed χαλάρα συνδεδεμένες loosely coupled ανεξάρτητες της τεχνολογίας υλοποίησης technologyneutral ανεξάρτητες του κατασκευαστή no vendor lock in Σύνθεση της εφαρμογής μέσω της ολοκλήρωσης integration των υπηρεσιών. 37

Ρόλοι Service consumer Service producer Service broker 38

SOA Αρχές Service contract Metadata Composition Autonomy Discovery Reusability 39

40

Υλοποίηση Web Services SOAP, WSDL, UDDI Remote procedure call RPC Message driven middleware RESTful APIs κ.ά 41

Ζητήματα Stateful vs Stateless Απόδοση Πολυπλοκότητα Έλεγχος και επαλήθευση testing 42

Η Αρχιτεκτονική Representational State Transfer REST 43

RESTful APIs Υπάρχουν παντού Web, Microservices, IoT Σχεδόν πάντα με υποστήριξη για JSON 44

Τι είναι το REST Ένα αρχιτεκτονικό στυλ για τη λειτουργία του Παγκόσμιου Ιστού ή, γενικά, κατανεμημένων συστημάτων Οριοθετεί αρχές, περιορισμούς και βασικές λειτουργίες Ανεξάρτητα της γλώσσας προγραμματισμού, του πρωτοκόλλου επικοινωνίας ή του είδους των δεδομένων 45

Συνοπτικά Τέσσερις βασικές έννοιες: Resources, Representations, Requests, Responses Έξι βασικές αρχές: Client server, Stateless, Cacheable, Layered System, Uniform Interface, Code on demand προαιρετικά 46

Οφέλη Η σωστή χρήση των RESTful αρχών βελτιώνει όλα τα σημαντικά χαρακτηριστικά μιας αρχιτεκτονικής: Απόδοση Κλιμάκωση Απλότητα Επεκτασιμότητα Αξιοπιστία 47

1η RESTful Αρχή Client Server Πλήρης διαχωρισμός ενδιαφερόντων separation of concerns μεταξύ client & server Χρήση ομοιόμορφης διεπαφής uniform interface για την επικοινωνία τους Παράδειγμα: ο client δεν πρέπει να «ενδιαφέρεται» για το data storage, ο server δεν πρέπει να «ενδιαφέρεται» για το user interface 48

2η RESTful Αρχή Stateless O server δεν αποθηκεύει καμιά πληροφορία για το state της εφαρμογής κατά την επικοινωνία του με τον client Το ακριβές application state τηρείται μόνο από τον client Αλλά, προφανώς, ο server μπορεί να αποθηκεύει πληροφορίες του user session σε κάποια βάση δεδομένων 49

3η RESTful Αρχή Cacheable O client πρέπει να μπορεί να αποθηκεύσει προσωρινά επιλεγμένα responses από τον server Ο server πρέπει να υποδεικνύει στον client ποια responses μπορούν να αποθηκευθούν προσωρινά και ποια όχι Παράδειγμα: χρήση κατάλληλων cache headers του HTTP 50

4η RESTful Αρχή Layered System O client πρέπει να μπορεί να συνδεθεί είτε με τον end server είτε με κάποιον ενδιάμεσο server, χωρίς να μπορεί να «διακρίνει» τη διαφορά Οι ενδιάμεσοι server πρέπει να μπορούν να προσθέτουν λειτουργικότητα: π.χ. caching, authorization, security, κτλ. Παράδειγμα: Web proxies, N tier architectures 51

5η RESTful Αρχή Code on demand Ο client πρέπει να μπορεί να εκτελέσει κώδικα που προέρχεται από τον server δυναμικά π.χ. applets, scripts, κτλ. Προαιρετικά 52

6η RESTful Αρχή Uniform Interface Η πλέον σημαντική αρχή! Αναγνωριστικά πόρων Resource Identification Διαχείριση πόρων μέσω αναπαραστάσεών τους representations Hypermedia as the engine of application state HATEOAS 53

Με απλά λόγια Ο client στέλνει requests στον server χρησιμοποιώντας URIs για τον προσδιορισμό των resources και των representations. Τα resources διαχωρίζονται από τα represenations: ο server μπορεί να στείλει τα στοιχεία ενός resource σε μορφή XML, JSON, κτλ. O client, κατέχοντας οποιοδήποτε representation ενός resource, μαζί με ενδεχόμενα metadata, μπορεί να τροποποιήσει το αντίστοιχο resource. 54

Με απλά λόγια συνέχεια Τα responses που στέλνει ο server έχουν όλη την απαιτούμενη πληροφορία που απαιτείται για το σωστό τους χειρισμό από τον client μορφότυπο, caching, κτλ. HATEOAS: o client επικοινωνεί με τον server μόνο μέσω δυναμικά παρεχόμενων hypermedia π.χ. hyperlinks. Δηλαδή, ο client δεν χρειάζεται να γνωρίζει από πριν κάποιο server ή κάποιο interface όπως στις παραδοσιακές SOA ή στο RPC, κτλ.. Αρκεί μόνο να μπορεί να «καταλάβει» τη λειτουργία των hypermedia. 55

RESTful Web Service API Αποτελείται από: Ένα HTTP base URL REST endpoint Ένα ή περισσότερα MimeType για τα representations HTTP Methods: GET, PUT ή PATCH, POST, DELETE 56

Παράδειγμα Έστω μια συλλογή collection από στοιχεία items. Υπάρχουν δύο βασικά endpoints: [baseurl]/items : Ενέργειες στη συλλογή εν συνόλω. [baseurl]/items/id : Ενέργειες στο στοιχείο ειδικά. REST Calls GET [baseurl]/items PUT [baseurl]/items/32 57

Συλλογές HTTP Method GET PUT POST DELETE Ενέργεια Εμφάνιση της λίστας με τα elements του collection, παρέχοντας το αντίστοιχο URI για το καθένα και ενδεχόμενα πρόσθετα στοιχεία π.χ. metadata καθώς και σελιδοποίηση αν υποστηρίζεται. Αντικατάσταση του υπάρχοντος collection με νέο collection αν υποστηρίζεται. Προσθήκη νέου element στο υπάρχον collection. Διαγραφή του υπάρχοντος collection αν υποστηρίζεται. 58

Στοιχεία HTTP Method GET PUT ή PATCH POST DELETE Ενέργεια Ανάκτηση μιας αναπαράστασης του συγκεκριμένου item. Τροποποίηση του συγκεκριμένου item. Δε χρησιμοποιείται ευρέως για items. Διαγραφή του συγεκριμένου item. 59

SOA & REST Ένα σύνολο από RESTful HTTP end points που ανταλλάσσουν δεδομένα σε μορφή JSON Ενδεχομένως ο απλούστερος τρόπος υλοποίησης μιας SOA 60

Microservices 61

Κωδικοποιημένα Microservices = SOA + Unix Principles + Agile + DevOps 62

Monolithic Server side Applications A single logical executable Cloud deployment issues: Small changes > rebuild and redeploy the whole app Scalability > scale it all or not at all 63

64

Χαρακτηριστικά Componentization via services As in SOA Organized around business capabilities Cross functional teams, as in Agile Products not projects A team should own a product You build it, you run it Smart end points, dumb pipes Simple communication Unix style 65

Decentralized governance Each team governs the implementation details of its product Decentralized data managument Different datastore per service/app Infrastructure automation Build & test automation Continuous delivery & deployment Design for failure Sophisticated monitoring & logging 66