Προγραμματισμός

Τι είναι η αρχιτεκτονική προσανατολισμένη στις υπηρεσίες;

Αρχιτεκτονική προσανατολισμένη στις υπηρεσίες (SOA) εμφανίστηκε στις αρχές αυτού του αιώνα ως μια εξέλιξη του κατανεμημένου υπολογιστή. Πριν το SOA, Υπηρεσίες κατανοήθηκαν ως το τελικό αποτέλεσμα της διαδικασίας ανάπτυξης εφαρμογών. Στο SOA, η ίδια η εφαρμογή αποτελείται από υπηρεσίες. Οι υπηρεσίες μπορούν να παρέχονται μεμονωμένα ή να συνδυάζονται ως συστατικά σε μια μεγαλύτερη, σύνθετη υπηρεσία.

Οι υπηρεσίες αλληλεπιδρούν μέσω καλωδίου χρησιμοποιώντας ένα πρωτόκολλο όπως το REST ή το SOAP (Simple Object Access Protocol). Οι υπηρεσίες είναι χαλαρά συνδεδεμένο, σημαίνει ότι η διεπαφή υπηρεσίας είναι ανεξάρτητη από την υποκείμενη εφαρμογή. Οι προγραμματιστές ή οι ολοκληρωτές συστημάτων μπορούν να συνθέσουν μία ή περισσότερες υπηρεσίες σε μια εφαρμογή χωρίς να γνωρίζουν απαραίτητα πώς εφαρμόζεται κάθε υπηρεσία.

Αυτό το άρθρο είναι μια επισκόπηση του Java SOA και των βασικών χαρακτηριστικών μιας αρχιτεκτονικής προσανατολισμένης στις υπηρεσίες που υλοποιείται χρησιμοποιώντας υπηρεσίες διαδικτύου που βασίζονται σε SOAP. Θα συγκρίνω επίσης εν συντομία το SOA και τις μικροϋπηρεσίες και θα συζητήσω τη διαφορά μεταξύ των υπηρεσιών διαδικτύου RESTful και SOAP στην Java.

SOA και υπηρεσίες διαδικτύου

Οι υπηρεσίες SOA και διαδικτύου συχνά συνδυάζονται, αλλά δεν είναι το ίδιο πράγμα. Το SOA είναι μια αρχιτεκτονική που επιτρέπει στους προγραμματιστές να συνδυάζουν πολλαπλές υπηρεσίες εφαρμογών σε μια μεγαλύτερη, σύνθετη υπηρεσία. Το SOA μπορεί να υλοποιηθεί χρησιμοποιώντας υπηρεσίες διαδικτύου με βάση SOAP ή REST API ή μερικές φορές συνδυασμό και των δύο. Είναι σημαντικό να καταλάβουμε ότι στο SOA, α υπηρεσία είναι οποιοσδήποτε απομακρυσμένος διαθέσιμος πόρος που μπορεί να ανταποκριθεί σε αιτήματα. ΕΝΑ υπηρεσία διαδικτύου υλοποιείται χρησιμοποιώντας συγκεκριμένα πρωτόκολλα.

Γιατί αρχιτεκτονική προσανατολισμένη στις υπηρεσίες;

Το SOA αντιμετωπίζει τρεις κοινές επιχειρηματικές προκλήσεις:

  • Απαντήστε γρήγορα στις επιχειρηματικές αλλαγές.
  • Αξιοποιήστε τις υπάρχουσες επενδύσεις σε υποδομές.
  • Υποστήριξη νέων καναλιών αλληλεπίδρασης με πελάτες, συνεργάτες και προμηθευτές.

Η επιχειρησιακή υποδομή είναι ετερογενής σε λειτουργικά συστήματα, εφαρμογές, λογισμικό συστήματος και υποδομή εφαρμογών. Ως αποτέλεσμα, πολλά εταιρικά συστήματα αποτελούνται από πολύπλοκες και ασυνεπείς εφαρμογές που παρέχουν μια σειρά αλληλεξαρτώμενων υπηρεσιών. Οι υπάρχουσες εφαρμογές που εκτελούν τρέχουσες επιχειρηματικές διαδικασίες είναι κρίσιμες, οπότε η εκκίνηση από το μηδέν ή η τροποποίησή τους είναι μια λεπτή πρόταση. Όμως οι επιχειρήσεις πρέπει να είναι σε θέση να τροποποιούν και να επεκτείνουν την τεχνική υποδομή για να ανταποκρίνονται στις απαιτήσεις των επιχειρήσεων.

SOA και μικροϋπηρεσίες

Το Microservices είναι ένα αρχιτεκτονικό στιλ που εξελίχθηκε από το SOA. Και οι δύο είναι κατανεμημένες αρχιτεκτονικές και και οι δύο προσφέρουν ένα αποσυνδεδεμένο παράδειγμα. Ενώ η αρχιτεκτονική προσανατολισμένη στις υπηρεσίες είναι βαρύτερη στις υποδομές, οι υπηρεσίες μικροϋπολογιστών προσφέρουν ένα πιο ευέλικτο, ελαφρύ στυλ ανάπτυξης. Υπάρχουν πλεονεκτήματα και μειονεκτήματα και στα δύο, και τα δύο χρησιμοποιούνται ευρέως. Σε γενικές γραμμές, το SOA εφαρμόζεται συχνότερα ή διατηρείται από καθιερωμένες επιχειρήσεις που έχουν τους πόρους για να υποστηρίξουν περισσότερη τυπικότητα. Οι μικροϋπηρεσίες συχνά απευθύνονται σε νέους ή αναπτυσσόμενους οργανισμούς που απαιτούν ευελιξία.

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

Επειδή είναι χαλαρά συνδεδεμένα, τα εξαρτήματα SOA μπορούν να αλλάξουν με ελάχιστο αντίκτυπο σε άλλα εξαρτήματα. Τα στοιχεία μπορούν επίσης να προστεθούν στην αρχιτεκτονική με τυποποιημένο τρόπο και μπορούν να κλιμακωθούν για να αντιμετωπίσουν το φορτίο.

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

Μάθιου Τάισον

Βασικά χαρακτηριστικά του SOA

Το SOA μπορεί να είναι τόσο απλό όσο οι υπηρεσίες που καταναλώνουν ένα μόνο συστατικό που παρέχεται από άλλο συστατικό στοιχείο ή τόσο εξελιγμένο όσο μια σειρά στοιχείων που αλληλεπιδρούν μέσω ενός επιχειρησιακού λεωφορείου, όπως το ESB της MuleSoft. Ανεξάρτητα από την κλίμακα, το κλειδί για μια επιτυχημένη εφαρμογή SOA είναι να χρησιμοποιήσετε όσο το δυνατόν λιγότερη πολυπλοκότητα για την επίτευξη των στόχων σας. Η πρώτη και η τελευταία ερώτησή σας πρέπει πάντα να είναι: Αυτό το σχέδιο ικανοποιεί τις επιχειρηματικές μας απαιτήσεις;

Ανεξάρτητα από την κλίμακα ή την πολυπλοκότητα, το μοτίβο μιας αρχιτεκτονικής προσανατολισμένης στις υπηρεσίες είναι λίγο πολύ το ίδιο:

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

Υλοποίηση αρχιτεκτονικής προσανατολισμένης στις υπηρεσίες

Για να εφαρμόσετε το SOA ξεκινάτε με τη βασική αρχιτεκτονική υπηρεσίας και, στη συνέχεια, παρέχετε την υποδομή, δηλαδή πρωτόκολλα και άλλα εργαλεία που επιτρέπουν την επικοινωνία και τη διαλειτουργικότητα. Το σχήμα 2 δείχνει ένα διάγραμμα μιας τυπικής αρχιτεκτονικής υπηρεσίας.

Μάθιου Τάισον

Σε αυτό το διάγραμμα, τρεις καταναλωτές επικαλούνται υπηρεσίες στέλνοντας μηνύματα σε ένα επιχειρησιακό λεωφορείο εξυπηρέτησης, το οποίο μετατρέπει και δρομολογεί τα μηνύματα σε μια κατάλληλη υλοποίηση υπηρεσίας. ΕΝΑ μηχανισμός επιχειρηματικών κανόνων ενσωματώνει επιχειρηματικούς κανόνες σε μια υπηρεσία ή σε όλες τις υπηρεσίες. ΕΝΑ επίπεδο διαχείρισης υπηρεσιών διαχειρίζεται δραστηριότητες όπως τον έλεγχο, τη χρέωση και την καταγραφή.

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

SOAP vs RESTful υπηρεσίες Ιστού

Είναι δυνατό να υιοθετήσετε το στυλ SOA και να το εφαρμόσετε με το REST, για παράδειγμα χρησιμοποιώντας το JAX-RS API ή το Spring Boot Actuator, αλλά αυτή η συζήτηση είναι εκτός πεδίου για αυτό το άρθρο. Ανατρέξτε στην ενότητα "SOAP vs REST vs JSON" για μια χρήσιμη σύγκριση των υπηρεσιών web SOAP vs RESTful. Υπάρχει επίσης κάποια αλληλεπικάλυψη μεταξύ των υπηρεσιών διαδικτύου RESTful και του πιο ελαφρού στυλ που σχετίζεται με τις μικροϋπηρεσίες.

Υπηρεσίες διαδικτύου με βάση το σαπούνι

Οι υπηρεσίες Ιστού που εφαρμόζονται με χρήση SOAP είναι ακόμα πιο άκαμπτες από μια εφαρμογή RESTful web ή microservices, αλλά πολύ πιο ευέλικτες από τις πρώτες μέρες του SOA. Εδώ θα δούμε απλώς τα πρωτόκολλα υψηλού επιπέδου που απαιτούνται για υπηρεσίες διαδικτύου με βάση το SOAP.

SOAP, WSDL και XSD

Τα SOAP, WSDL και XSD είναι η θεμελιώδης υποδομή μιας εφαρμογής διαδικτυακής υπηρεσίας που βασίζεται σε SOAP. Το WSDL χρησιμοποιείται για την περιγραφή της υπηρεσίας και το SOAP είναι το επίπεδο μεταφοράς για την αποστολή μηνυμάτων μεταξύ καταναλωτών και παρόχων υπηρεσιών. Οι υπηρεσίες επικοινωνούν με μηνύματα που ορίζονται επίσημα χρησιμοποιώντας το XML Schema (XSD). Μπορείτε να σκεφτείτε το WSDL ως τη διεπαφή της υπηρεσίας (χαλαρά ανάλογη με μια διεπαφή Java). Η υλοποίηση γίνεται σε τάξεις Java και η επικοινωνία μέσω δικτύου πραγματοποιείται μέσω SOAP. Λειτουργικά, ένας καταναλωτής θα έψαχνε μια υπηρεσία, θα έπαιρνε το WSDL για αυτήν την υπηρεσία και έπειτα θα επικαλούσε την υπηρεσία χρησιμοποιώντας SOAP.

Ασφάλεια υπηρεσιών Ιστού

Η προδιαγραφή WS-I Basic Profile 2.0 αντιμετωπίζει την ασφάλεια των μηνυμάτων. Αυτή η προδιαγραφή εστιάζει στην ανταλλαγή διαπιστευτηρίων, στην ακεραιότητα των μηνυμάτων και στην εμπιστευτικότητα των μηνυμάτων.

Ανακάλυψη υπηρεσίας Ιστού

Μόλις ο ακρογωνιαίος λίθος της ανακάλυψης υπηρεσιών ιστού, το UDDI (Καθολική περιγραφή, ορισμός και ενοποίηση) έχει ξεθωριάσει στην ιστορία. Σήμερα είναι συνηθισμένο να εκθέτετε μια υπηρεσία ιστού με βάση το SOAP με τον τρόπο που θα κάνατε οποιαδήποτε άλλη υπηρεσία, μέσω ενός τελικού URL. Για παράδειγμα, θα μπορούσατε να χρησιμοποιήσετε το JAX-WS Service Endpoint Interface και το @WebService και @WebMethod σχολιασμοί.

Δημιουργία και ανάπτυξη διαδικτυακών υπηρεσιών

Οι προγραμματιστές Java έχουν πολλές επιλογές για τη δημιουργία και την ανάπτυξη υπηρεσιών διαδικτύου με βάση το SOAP, συμπεριλαμβανομένων των Apache Axis2 και Spring-WS. Ωστόσο, το πρότυπο Java είναι JAX-WS, το Java API για XML Web Services. Η βασική ιδέα πίσω από το JAX-WS είναι να δημιουργήσετε τάξεις Java και να τους σχολιάσετε για να δημιουργήσετε τα απαιτούμενα αντικείμενα. Κάτω από την κουκούλα, το JAX-WS χρησιμοποιεί πολλά πακέτα Java, συμπεριλαμβανομένου του JAXB, μιας βιβλιοθήκης γενικής χρήσης για τη δέσμευση τάξεων Java σε XML.

Το JAX-WS αποκρύπτει την υποκείμενη πολυπλοκότητα και τα πρωτόκολλα από τον προγραμματιστή, βελτιώνοντας έτσι τη διαδικασία καθορισμού και ανάπτυξης υπηρεσιών SOAP που βασίζονται σε Java. Τα σύγχρονα Java IDE όπως το Eclipse περιλαμβάνουν πλήρη υποστήριξη για την ανάπτυξη διαδικτυακών υπηρεσιών JAX-WS. Η προδιαγραφή JAX-WS έχει επίσης επιλεγεί για συνεχή ανάπτυξη στο Jakarta EE.

συμπέρασμα

Η αρχιτεκτονική προσανατολισμένη στις υπηρεσίες που εφαρμόζεται με υπηρεσίες διαδικτύου με βάση το SOAP απαιτεί πιο αυστηρούς και επίσημους ορισμούς υπηρεσιών από τις υπηρεσίες διαδικτύου RESTful ή τις μικροϋπηρεσίες. Ωστόσο, ορισμένοι μεγαλύτεροι οργανισμοί συνεχίζουν να προτιμούν το πιο επίσημο στυλ που επιβάλλεται από το SOAP. Πολλά συστήματα παλαιού τύπου μεγάλης κλίμακας βασίζονται επίσης στο SOAP και ορισμένα B2B και εσωτερικά συστήματα επιλέγουν υπηρεσίες διαδικτύου με βάση το SOAP για τις πιο επίσημα καθορισμένες συμβάσεις API τους. Είτε αναπτύσσετε είτε διατηρείτε ένα εταιρικό σύστημα μεγάλης κλίμακας, η κατανόηση του προτύπου SOA και η δυνατότητα αξιολόγησης των επιλογών σας για την εφαρμογή του θα σας εξυπηρετήσουν καλά στην καριέρα προγραμματισμού σας.

Αυτή η ιστορία, "Τι είναι η αρχιτεκτονική προσανατολισμένη στις υπηρεσίες;" δημοσιεύθηκε αρχικά από το JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found