Τα Web Services είναι τύπος λογισμικού ή μέρος ενός σύστηματος, όπου μέσω του web επιτρέπει την επικοινωνία και διασύνδεση μεταξύ διαφορετικών συστημάτων, αυτά τα συνταντα κάποιος συναντά σε web application architecture  και ή σε backend συστήματα για mobile apps, Desktop Apps και γενικά συστ;hματα που έχουν γραφτεί σε διαφορετικές γλώσσες προγραμματισμού, και υπάρχει ανάγκη να επικοινωνήσουν και να ανταλλάσουν δεδομένα της μορφής JSON ή XML format, μέσα του web χρησιμοποιώντας το πρωτόκολλο ΗΤΤP.

Οπότε μία εφαρμογή που βρίσκεται σε ένα κόμβο στο internet και η οποία κατασκευασμένη σε μια γλώσσα προγραμματισμού μπορεί να επικοινωνήσει με μια δεύτερη εφαρμογή στην ίδιο server ή σε διαφορετική γλώσσα προγραμματισμού,  και εφαρμογή μπορεί να βρίσκεται σε διαφορετικό υπολογιστή ή κόμβο ή IOT device ανταλλάσοντας δεδομένα .

Αυτές οι υπηρεσίες χρησιμοποιούν τις μεθόδους του HTTP όπου είναι

  • GET όπου αναζητεί δεδομένα από μια πηγή
  • POST στέλνει δεδομένα στο server δημιουργήσει δεδομένα
  • PUT ενημερώνει τα δεδομένα της πηγής
  • DELETE διαγράφει δεδομένα
  • HEAD μοιάζει με το GET αλλά χρησιμοποιείται για ελεχθεί τι θα επιστρέψει το GET
  • OPTIONS Περιγραφεί της μεθόδους που είναι διαθέσιμες σε μια πηγή

Τα παραπάνω πραγματοποιείται  επικοινωνία, και είναι τα βασικά που πρέπει να γνωρίζει ένα web developer για να χρησιμοποιεί APIs (consuming) όταν δεν υπάρχουν αντίστοιχες βιβλιοθήκες για αυτά.

Machine to machine Communication M2M

Έστω ότι η δεύτερη εφαρμογή έχει ανάγκη να χρησιμοποιήσει κάποιες από τις λειτουργίες της πρώτης, το βασικό πρόβλημα είναι ότι οι εφαρμογές είναι γραμμένες σε διαφορετικές γλώσσες και χρειάζεται να βρεθεί κάποιος τρόπος ώστε να επικοινωνήσει η δεύτερη εφαρμογή με την πρώτη.

Ο τρόπος επικοινωνίας μεταξύ των εφαρμογών προέρχεται από τις τεχνολογίες των Web Services. Συγκεκριμένα είναι ένα web service τρέχει σε έναν server ο οποίος ακούει request σε ένα συγκεκριμένο port και ανταποκρίνεται στέλντος δεδομένα σε μορφή XML, JSON ή html.

REST SOAP XML-RPC

Οι τρεις κυριότερες τεχνολογίες των Web Services είναι το REST (Representational State Transfer), η XML-RPC (Remote Procedure Call) και το SOAP ( Simple Object Access Protocol).

RESTful Web Services

Στο REST διαθέτουμε ήδη όλα τα μέσα για να κάνουμε τις δύο εφαρμογές να επικοινωνήσουν, και αυτό γίνεται μέσα από HTTP όπου οι υπηρεσίες παρέχονται μεURIs (resources) που χρησιμοποιούν τη μέθοδους HTTP όπως είναι το GET, POST, PUT και τα δεδομένα περιλαμβάνονται σε μορφή JSON ή XML.

XML-RPC

Η δεύτερη τεχνολογία η XML-RPC χρησιμοποιεί απομακρυσμένες διαδικασίες κλήσεις πάνω στο HTTP χρησιμοποιώντας encoding XML, δηλαδή μπορούμε να καλέσουμε μια συγκεκριμένη λειτουργία μιας εφαρμογής η οποία βρίσκεται σε διαφορετικό υπολογιστή χρησιμοποιώντας συγκεκριμένους παραμέτρους σε αντίθεση με το REST που χρησιμοποιούνται δεδομένα.

SOAP

Ο τρίτος τύπος το SOAP είναι παρόμοιος με την XML-RPC και με τη διαφορά ότι υποστηρίζει περισσότερους τύπου δεδομένων και υποστηρίζεται από μεγάλες εταιρίες. Όλες οι γνωστές εταιρείες που παρέχουν cloud υπηρεσίες  παρέχουν πρόσβαση σε αυτές μέσω αυτή της τεχνολογίες και είναι τα Αmazon Web Services ή Google Cloud Compute Products.

Η δομή του απλά ένα xml έγγραφό που αποτελείται από τα παρακάτω μέρη

  • Envelope element - είναι το στοιχείο που δηλωνει το xml είναι τύπου soap
  • Header element - περιλαμβάνει πληροφορίες για το authentication κ.α.
  • Body element - τα στοιχεία κλήσης και αναμενόμενης απάντησης

OData Open Data Protocol

Αυτό το πρωτόκολο χρησιμοποιείτια από δημοφιλή ERP όπως είναι το SAP ERP και το Microsoft Dynamics για να συνδέσετε για να κάνετε system integration με συστήμα όπως είναι ένα e-shop ή άλλα συστήματα και υπηρεσίες για να προσφέρουν αυξημένες δυνατότητα και εμπλουτισμό δεδομένων με αυτό που λέμε API economy.

Το πρωτοκολο OData χρησιμοποιείται για τη δημιουργία RestFull Apis για να γίνουν implement οι καλύτερες πρακτικές

Οπότε αν χρειάζεστε να φτιάξετε API για την επιχείρηση ώστε να παρέχετε προγραμματική πρόσβαση σε άλλες ή να χρησιμοποιήσετε δημοφιλής άλλες υπηρεσίες  APIs μπορείτε να προσλάβετε ειδικού στο web development