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

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

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

05α Αρχιτεκτονικά πρότυπα λογισμικού

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

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

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

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

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

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

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

Bringing the web offline

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

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

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

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

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

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

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

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

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

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

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

Κατανεμημένα Συστήματα. Javascript LCR example

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

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

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

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

Paybybank RESTful API GUIDE

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

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

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

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

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

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Μελέτη και Ανάπτυξη ενός Εργαλείου Υποβοήθησης στη Σχεδίαση µίας Βάσης εδοµένων Τύπου Graph από Τελικούς Χρήστες

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

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

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

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

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

PayByBank RESTful API GUIDE

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

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

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

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

Μονάδα Διασφάλισης Ποιότητας. ΜΟΔΙΠ Πανεπιστημίου Δυτικής Μακεδονίας. Κωδικός Πράξης ΟΠΣ: Επιχειρησιακό Πρόγραμμα:

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

Σύστημα διαχείρισης περιεχομένου (Content Management System)

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

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

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

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

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

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

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

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

PayByBank RESTful API

02 Αντικειμενοστρεφής Προγραμματισμός

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

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

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

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

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

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

Social Network : Programming on FACEBOOK

PHP/MySQL και Project

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

Εφαρµογές και Περιβάλλοντα Εργασίας AJAX

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές

Τεχνολογίες ιαδικτύου

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

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

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

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

Περιεχόμενα. Πρόλογος... xiii

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

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

HTTP API v1.6 SMSBOX.GR HTTP API v

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

Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων. World Wide Web. Παγκόσμιος Ιστός

Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα

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

* Enterprise Resource Planning ** Customer Relationship Management

Τεχνολογίες Διαδικτύου

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

Tales & Trails. apps4thessaloniki 2016

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Network Address Translation (NAT)

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

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

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

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

Πληροφορική στιςεπιχειρήσεις

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

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

Transcript:

07 Αρχιτεκτονική Κατανεμημένων Συστημάτων στον Παγκόσμιο Ιστό Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr

Περιεχόμενα Κατανεμημένα συστήματα: βασικές έννοιες και αρχιτεκτονική Παγκόσμιος Ιστός Αρχιτεκτονική REST 2

Κατανεμημένα συστήματα Ένα σύστημα που αποτελείται από ξεχωριστά συστατικά που: Λειτουργούν σε ένα δίκτυο υπολογιστών. Επικοινωνούν μεταξύ τους μέσω ανταλλαγής μηνυμάτων. Αλληλοεπιδρούν για την επίτευξη ενός κοινού στόχου. 3

Πλάνες σχετικά με τα κατανεμημένα συστήματα α 1. Το δίκτυο είναι αξιόπιστο reliable. 2. Η καθυστέρηση latency του δικτύου είναι μηδενική. 3. Το εύρος ζώνης bandwidth είναι άπειρο. 4. Το δίκτυο είναι ασφαλές secure. 4

Πλάνες σχετικά με τα κατανεμημένα συστήματα β 5. Η τοπολογία topology του δικτύου δεν αλλάζει. 6. Υπάρχει μόνο ένας διαχειριστής administrator. 7. Το κόστος μεταφοράς transport δεδομένων είναι μηδενικό. 8. Το δίκτυο είναι ομογενές homogeneous. 5

Consistency C Η συνέπεια των δεδομένων. Κάθε ανάγνωση read λαμβάνει την πιο πρόσφατη ενημέρωση write ή το σχετικό σφάλμα. Η συνέπεια που υπόσχεται η αρχή ACID των δοσοληψιών στις βάσεις δεδομένων είναι πιο αυστηρή. 6

ACID Transactions Atomicity η δοσοληψία πετυχαίνει ή αποτυγχάνει πλήρως Consistency μετάβαση της βάσης σε πάντα έκγυρη κατάσταση Isolation σαν να είχαμε ακολουθιακή εκτέλεση δοσοληψιών Durability μονιμότητα των αποτελεσμάτων των δοσοληψιών 7

Availability A Η διαθεσιμότητα της εφαρμογής. Κάθε αίτηση request λαμβάνει μια απάντηση μη λάθους. Χωρίς εγγυήσεις ότι η απάντηση περιέχει την πιο πρόσφατη ενημέρωση write. Η υψηλή διαθεσιμότητα απαιτεί αντιγραφές replication. 8

Network Partition P Aστοχία δικτύου απώλεια σύνδεσης. Ανοχή tolerance, κατά πόσο δηλαδή το σύστημα συνεχίζει να λειτουργεί παρά την απώλεια πακέτων. 9

Τo θεώρημα CAP Σε περίπτωση αστοχίας δικτύου P, θα έχουμε είτε συνέπεια των δεδομένων C είτε διαθεσιμότητα της εφαρμογής A, όχι και τα δύο. 10

Latency L H καθυστέρηση στην απόκριση του συστήματος. Ο χρόνος που απαιτείται για την ικανοποίηση μιας αίτησης. 11

Throughput Το πλήθος των αιτήσεων που ικανοποιούνται από το σύστημα ανά χρονική στιγμή. docs.voltdb.com 12

Το θεώρημα PACELC Επέκταση του CAP if (P) { A C } else { L C } Αν δεν υπάρχει P, θα έχουμε είτε συνέπεια των δεδομένων C είτε μικρή καθυστέρηση L, αλλά όχι και τα δύο. 13

Λίστα αναγνωσμάτων 14. Daniel Abadi, "Consistency Tradeoffs in Modern Distributed Database System Design", IEEE Computer, Volume 45, Issue 2, Feb. 2012. 14

Κατηγοριοποίηση κατανεμημένων συστημάτων PA/EL If P then A else L PC/EC If P then C else C < ACID databases PC/EL If P then C else L 15

Αρχιτεκτονικές κατανεμημένων συστημάτων Server based P2P 2 tier client/server 3 tier client/middle tier/server n tier client/multiple tiers/server Ισότιμοι κόμβοι peers Δεν υπάρχει client ή server 16

Άλλες αρχιτεκτονικές θεωρήσεις Event driven Component based Service oriented + microservices Shared nothing στη συνέχεια REST στη συνέχεια Τα πρότυπα αρχιτεκτονικής architectural patterns είναι σχετικά με τα πρότυπα σχεδίασης design patterns που θα δούμε σε επόμενη διάλεξη 17

Shared Nothing Architecture Κάθε κόμβος είναι ανεξάρτητος και αυτοτελής. No single point of contention δεν διαμοιράζονται πόροι, π.χ. μνήμη ή δίσκος. Sharding: οριζόντια επιμέρηση των δεδομένων. Οριζόντια κλιμάκωση horizontal scalability απλή προσθήκη κόμβων. Η αρχιτεκτονική των περισσότερων NoSQL συστημάτων. 18

Eventual Consistency Αν πάψουν οι ενημερώσεις σε μια εγγραφή, τελικά eventually όλες οι αναγνώσεις της εγγραφής αυτής θα επιστρέψουν την πιο πρόσφατη ενημέρωση. Replica convergence σύκλιση αντιγράφων. BASE Systems Basically Available, Soft state, Eventual Consistency PA/EL Αύξηση διαθεσιμότητης & μείωση καθυστέρησης αντί για συνέπεια 19

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

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

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

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

Παράδειγμα Αίτηση 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> 24

Τα παλιά τα χρόνια Στατικές σελίδες π.χ. html documents Δυναμικές σελίδες Server side processing π.χ. CGI Client side scripts dynamic HTML με Javascript 25

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

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

Μετα AJAX Η Javascript κυριαρχεί! O Web Browser μετατρέπεται σε προγραμματιστική πλατφόρμα HTML 5. Ο συναρτησιακός προγραμματισμός functional programming επιστρέφει. 28

Διεπαφές χρήστη Τεχνικές ασύγχρονου προγραμματισμού Promises Model View ViewModel παραλλαγή του Model View Controller Reactive programming Observable Σε επόμενη διάλεξη 29

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 30

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

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

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

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

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

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

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

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

Παραδείγματα {"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"} ] 39

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

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

Representational State Transfer REST 42

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

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

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

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

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

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

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

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

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

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

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

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

RESTful Web Service API Αποτελείται από: Ένα HTTP base URL Ένα ή περισσότερα MimeType για τα representations Συνήθως τέσσερα είδη από Requests HTTP Methods: GET, PUT, POST, DELETE 55

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

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

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