ΚΕΦΑΛΑΙΟ 17: Web Services 17.1. Εισαγωγή Με τον όρο WebService αναφερόμαστε σε ένα σύστημα λογισμικού το οποίο σχεδιάστηκε με τρόπο τέτοιο ώστε να υποστηρίζει την ανεμπόδιστη συνεργασία δύο μηχανών μέσω ενός δικτύου. Συνήθως οι υπηρεσίες δικτύου είναι απλά δικτυακά APIs τα οποία μπορούν να προσπελαστούν μέσω δικτύων, όπως για παράδειγμα το Internet, και να εκτελεστούν σε ένα απομακρυσμένο σύστημα το οποίο παρέχει τις εν λόγω υπηρεσίες. Ο ορισμός που δίνει στις δικτυακές υπηρεσίες το W3C εσωκλείει πολλά διαφορετικά συστήματα, αλλά συνήθως ο όρος χρησιμοποιείται και αναφέρεται σε clients και servers που επικοινωνούν διαμέσου του HTTP πρωτοκόλλου. Οι δικτυακές υπηρεσίες μπορούν να κατηγοριοποιηθούν σε μία από δύο κατηγορίες: BigWebServices και RESTfulWebServices. Οι BigWebServices χρησιμοποιούν μηνύματα XML τα οποία ακολουθούν το στάνταρ SOAP και είναι πολύ δημοφιλή σε συνήθεις enterprise συστήματα. Στα συστήματα αυτά, συνήθως υπάρχει μια περιγραφή, η οποία είναι αναγνώσιμη μόνο από μηχανές, των προσφερόμενων υπηρεσιών. Η περιγραφή αυτή είναι συνήθως γραμμένη σε μια γλώσσα προγραμματισμού που ονομάζεται WSDL (WebServicesDescriptionLanguage). Η γλώσσα αυτή δεν είναι κάποιο προαπαιτούμενο ενός τερματικού που υποστηρίζει SOAP, αλλά είναι για την αυτοματοποιημένη παραγωγή κώδικα από τους clients για πολλές εφαρμογές γραμμένες σε JAVA και.net. Προσφάτως, οι RESTfulWebServicesαρχίζουν να γίνονται και πάλι δημοφιλείς, ειδικά ανάμεσα στις εταιρίες οι οποίες ασχολούνται με το Internet. Οι υπηρεσίες αυτές συμφωνούν με τον ορισμό που δώσαμε στις προηγούμενες παραγράφους, και συνήθως συνεργάζονται πολύ καλύτερα με το HTTP από ότι οι βασισμένες σε SOAP υπηρεσίες. Επιπλέον οι υπηρεσίες που ανήκουν στην κατηγορία αυτή δεν χρειάζονται XML μηνύματα ή τον ορισμό διεπαφών τύπου WSDL. Η δικτυακές υπηρεσίες λοιπόν είναι ένα σύνολο από εργαλεία τα οποία μπορούν να χρησιμοποιηθούν με πολλούς τρόπους. Οι τρείς πιο συνήθεις τρόποι λειτουργίας είναι οι RPC, SOA και REST τις οποίες και θα περιγράψουμε παρακάτω.
17.2. Remote Procedure Calls (RPC) Σχήμα 19. Παράδειγμα Web Service.
17.3. Service Oriented Architecture Οι δικτυακές υπηρεσίες αυτές συνήθως χρησιμοποιούνται για την υλοποίηση μιας αρχιτεκτονικής σύμφωνα με τη SOA, όπου ο δομικός λίθος των επικοινωνιών είναι ένα μήνυμα και όχι μια υπηρεσία (όπως η προηγούμενη κατηγορία υπηρεσιών). Για τον λόγο αυτό συνήθως οι υπηρεσίες αυτές αποκαλούνται και υπηρεσίες message-oriented. Οι SOA δικτυακές υπηρεσίες υποστηρίζονται από τους περισσότερους σημαντικούς πωλητές λογισμικού και από αναλυτές στην βιομηχανία λογισμικού. Σε αντίθεση με τις RPC υπηρεσίες, οι SOA δεν είναι τόσο άρρηκτα συνδεδεμένες με κάποια γλώσσα προγραμματισμού, γιατί συγκεντρώνονται στην λειτουργικότητα και αποκρύπτουν από τους προγραμματιστές τις λεπτομέρειες της υλοποίησης των επιμέρους λειτουργιών.
17.4. Representational State Transfer Τέλος, οι RESTful δικτυακές υπηρεσίες προσπαθούν να μιμηθούν το HTTP και παρόμοια πρωτόκολλα με το να περιορίζουν τις διεπαφές τους σε ένα σύνολο καλά ορισμένων, στάνταρ λειτουργιών. Εδώ, η έμφαση δίνεται στην διεπαφή με κάποια resources, και όχι με κάποια μηνύματα ή με κάποιες λειτουργίες. Οι RESTful δικτυακές υπηρεσίες μπορούν να χρησιμοποιήσουν τις WSDL για να περιγράψουν ανταλλαγή μηνυμάτων τύπου SOAP διαμέσου του HTTP, το οποίο περιγράφει τις λειτουργίες, ή μπορεί να υλοποιηθεί με πιο αφηρημένο τρόπο πάνω από SOAP.
17.5. Σύνοψη Κεφαλαίου Βασικές Έννοιες Κλειδιά WebService: Ένα σύστημα λογισμικού το οποίο σχεδιάστηκε με τρόπο τέτοιο ώστε να υποστηρίζει την ανεμπόδιστη συνεργασία δύο μηχανών μέσω ενός δικτύου. Remote Procedure Calls (RPC): Οι υπηρεσίες αυτές είναι συνήθως μια συλλογή από κλήσεις σε ρουτίνες (τμήματα προγραμμάτων υπεύθυνα για συγκεκριμένες διεργασίες) γνωστές στους προγραμματιστές Service Oriented Architecture: O δομικός λίθος των επικοινωνιών είναι ένα μήνυμα και όχι μια υπηρεσία Representational State Transfer: Περιορίζουν τις διεπαφές τους σε ένα σύνολο καλά ορισμένων, στάνταρ λειτουργιών. Ερώτηση: 17.5.1. Τι συμβολίζουν τα αρχικά RPC; Remote Procedure Calls Representational Procedure Calls Repetitive Procedure Calls Ερώτηση : 17.5.2. Δώστε σχηματικά ένα παράδειγμα Web service. (Να χρησιμοποιήσετε το Attach) Ερώτηση : 17.5.3. Τι εννοούμε με τον όρο WebService Ερώτηση : 17.5.4. Η δικτυακές υπηρεσίες είναι ένα σύνολο από εργαλεία τα οποία μπορούν να χρησιμοποιηθούν με πολλούς τρόπους. Να γράψετε τους τρείς πιο συνήθεις τρόπους λειτουργίας. Ερώτηση : 17.5.5. Τι είναι οι υπηρεσίες RPC; Ερώτηση: 17.5.6. Τι συμβολίζουν τα αρχικά SOA στις δικτυακές υπηρεσίες ; Super Output Area Service Oriented Architecture Scottish Optoelectronics Association
Ερώτηση: 17.5.7. Οι SOA δικτυακές υπηρεσίες ονομάζονται και: multiplexer- oriented multifunction-oriented message-oriented Ερώτηση : 17.5.8. Ποια είναι η διαφορά στις RPC υπηρεσίες και υπηρεσίες SOA; Ερώτηση: 17.5.9. Με τον τίτλο Representational State Transfer ανφερόμαστε σε: BigWebServices RESTfulWebServices Internetservices