Web APIs και Web Services

Η έννοια των Web Services έχει οριστεί με ποικίλους τρόπους. Σύμφωνα με το World Wide Web Consortium (W3C), ένα Web Service είναι «ένα σύστημα λογισμικού σχεδιασμένο να υποστηρίζει διαλειτουργική αλληλεπίδραση μεταξύ εφαρμογών μέσω δικτύου. Χρησιμοποιείται η Web Service Description Language (WSDL) για την περιγραφή των διαθέσιμων υπηρεσιών. Τα διάφορα συστήματα αλληλεπιδρούν με αυτή την υπηρεσία με τον τρόπο που ορίζεται από το WSDL, χρησιμοποιώντας μηνύματα SOAP που μεταφέρονται μέσω του HyperText Transfer Protocol (HTTP) και σειριοποιούνται με την τεχνολογία XML για τη μεταφορά των δεδομένων» (Booth et al., 2004). Με αυτόν τον ορισμό, το W3C συνδέει τα Web Services με συγκεκριμένες τεχνολογίες, περιορίζοντας έτσι τη λειτουργία τους.
Αντίθετα, άλλοι ορισμοί προσφέρουν μια πιο γενική προοπτική. Για παράδειγμα, η IBM (2014) περιγράφει ένα Web Service ως «έναν γενικό όρο για μια διαλειτουργική λειτουργία λογισμικού μηχανής προς μηχανή που φιλοξενείται σε μια διευθύνσιμη θέση δικτύου». Ομοίως, οι Papazoglou και Georgakopoulos (2003) ορίζουν ένα Web Service ως «ένα συγκεκριμένο είδος υπηρεσίας που προσδιορίζεται από έναν καθολικό αναγνωριστικό πόρου (URI), της οποίας η περιγραφή υπηρεσίας και η μεταφορά χρησιμοποιούν ανοικτά πρότυπα Διαδικτύου».
Αυτοί οι ευρύτεροι ορισμοί επεκτείνουν την περιγραφή του W3C, ορίζοντας ένα Web Service ως μια υπηρεσία που είναι διαθέσιμη μέσω του διαδικτύου, ανεξάρτητα από τα συγκεκριμένα πρωτόκολλα και τις μορφές μηνυμάτων που χρησιμοποιούνται. Επιπλέον, το μοντέλο αναφοράς του OASIS για την Αρχιτεκτονική Προσανατολισμένη στις Υπηρεσίες (SOA) ορίζει ένα Web Service ως «έναν μηχανισμό που επιτρέπει την πρόσβαση σε μία ή περισσότερες δυνατότητες, όπου η πρόσβαση παρέχεται μέσω μιας προδιαγεγραμμένης διεπαφής και ασκείται σύμφωνα με τους περιορισμούς και τις πολιτικές που καθορίζονται από την περιγραφή της υπηρεσίας» (OASIS, 2006).
Ενώ οι γενικοί ορισμοί που αναφέρθηκαν προηγουμένως γενικεύουν τον πιο περιοριστικό και τεχνολογικά προσανατολισμένο ορισμό του W3C, δεν διευκρινίζουν τη διαφορά μεταξύ μιας διεπαφής υπηρεσίας και μιας διεπαφής προγραμματισμού εφαρμογών (API). Η πρώτη παρέχεται από ένα Web Service, ενώ η δεύτερη αποτελεί χαρακτηριστικό ενός API. Αυτή η διάκριση είναι σημαντική στο πλαίσιο αυτής της μελέτης, διότι επηρεάζει τον σχεδιασμό, την υλοποίηση και την πιθανή χρήση των API. Οι διεπαφές Web Services έχουν σχεδιαστεί για να προσφέρουν πρόσβαση σε λειτουργίες υψηλού επιπέδου για τελικούς χρήστες, είτε είναι άνθρωποι είτε μηχανές. Αντίθετα, τα API έχουν σχεδιαστεί για να παρέχουν λειτουργίες χαμηλού επιπέδου ως δομικά στοιχεία που μπορούν να χρησιμοποιηθούν και να συνδυαστούν από προγραμματιστές λογισμικού για την ανάπτυξη υπηρεσιών υψηλότερου επιπέδου. Έτσι, τα Web Services και τα API διαφέρουν σε επίπεδο σχεδιασμού, αλλά όχι απαραίτητα σε τεχνολογικό επίπεδο (Santoro et al., 2019). Στην παρούσα εργασία θα εστιάσουμε στα Web APIs.
Ένας ακόμη πιο ευρύς ορισμός αναφέρει:
«Ένα Web Service είναι μια δικτυωμένη εφαρμογή που μπορεί να αλληλεπιδρά χρησιμοποιώντας τυπικά πρωτόκολλα web από εφαρμογή σε εφαρμογή μέσω καλά ορισμένων διεπαφών, και η οποία περιγράφεται χρησιμοποιώντας μια τυπική γλώσσα λειτουργικής περιγραφής».