Πρωτόκολλο SOAP. Simple Object Access Protocol (SOAP) - γενική περιγραφή

Ηλεκτρονική 15.06.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Chercher

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

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

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

Λοιπόν, μία από τις επιλογές για την επικοινωνία με τέτοιους διακομιστές είναι το SOAP. Πρωτόκολλο ανταλλαγής μηνυμάτων SOAP xml.

Πρακτικό μέρος.

Μια υπηρεσία web (αυτό είναι το όνομα του τι παρέχει ο διακομιστής και τι χρησιμοποιούν οι πελάτες) καθιστά δυνατή την επικοινωνία με τον διακομιστή με σαφώς δομημένα μηνύματα. Το γεγονός είναι ότι η υπηρεσία web δεν δέχεται δεδομένα. Η υπηρεσία Ιστού θα απαντήσει με σφάλμα σε οποιοδήποτε μήνυμα δεν συμμορφώνεται με τους κανόνες. Το σφάλμα, παρεμπιπτόντως, θα είναι επίσης σε μορφή xml με σαφή δομή (κάτι που δεν ισχύει για το κείμενο του μηνύματος).

WSDL (Γλώσσα περιγραφής υπηρεσιών Ιστού). Οι κανόνες με τους οποίους συντάσσονται τα μηνύματα για την υπηρεσία web περιγράφονται επίσης χρησιμοποιώντας xml και έχουν επίσης σαφή δομή. Εκείνοι. Εάν μια υπηρεσία Ιστού παρέχει τη δυνατότητα κλήσης μιας μεθόδου, πρέπει να επιτρέπει στους πελάτες να γνωρίζουν ποιες παραμέτρους χρησιμοποιούνται για αυτήν τη μέθοδο. Εάν η υπηρεσία Ιστού αναμένει μια συμβολοσειρά για τη Μέθοδο1 ως παράμετρο και η συμβολοσειρά πρέπει να ονομάζεται Param1, τότε αυτοί οι κανόνες θα καθοριστούν στην περιγραφή της υπηρεσίας Ιστού.

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

Για τους πελάτες, αρκεί να γνωρίζουν το url της υπηρεσίας Ιστού, το wsdl θα είναι πάντα κοντά, από το οποίο μπορείτε να πάρετε μια ιδέα για τις μεθόδους και τις παραμέτρους τους που παρέχει αυτή η υπηρεσία web.

Ποια είναι τα πλεονεκτήματα όλων αυτών των κουδουνιών και σφυρίχτρες:

  • Στα περισσότερα συστήματα, οι μέθοδοι και οι τύποι περιγράφονται στο αυτόματη λειτουργία. Εκείνοι. αρκεί να το πει ο προγραμματιστής στον διακομιστή αυτή τη μέθοδομπορεί να κληθεί μέσω μιας υπηρεσίας web και η περιγραφή wsdl θα δημιουργηθεί αυτόματα.
  • Η περιγραφή, η οποία έχει σαφή δομή, είναι ευανάγνωστη από κάθε πελάτη σαπουνιού. Εκείνοι. όποια και αν είναι η υπηρεσία web, ο πελάτης θα καταλάβει ποια δεδομένα λαμβάνει η υπηρεσία web. Με βάση αυτή την περιγραφή, ο πελάτης μπορεί να δημιουργήσει το δικό του εσωτερική δομήκατηγορίες αντικειμένων, τα λεγόμενα. binding" και. Ως αποτέλεσμα, ο προγραμματιστής που χρησιμοποιεί την υπηρεσία web πρέπει να γράψει κάτι σαν (ψευδοκώδικας):

    NewUser:=TSoapUser.Create("Vasya","Pupkin","admin"); soap.AddUser(NewUser);

  • Αυτόματη επικύρωση.

    • επικύρωση xml. Το xml πρέπει να είναι καλοσχηματισμένο. Μη έγκυρο xml - αμέσως ένα σφάλμα στον πελάτη, αφήστε τον να το λύσει.
    • επικύρωση σχήματος. Το xml πρέπει να έχει μια συγκεκριμένη δομή. Το xml δεν ταιριάζει με το σχήμα - αμέσως ένα σφάλμα στον πελάτη, αφήστε τον να το λύσει.
    • Η επαλήθευση δεδομένων πραγματοποιείται από τον διακομιστή σαπουνιού, έτσι ώστε οι τύποι δεδομένων και οι περιορισμοί να ταιριάζουν με την περιγραφή.
  • Η εξουσιοδότηση και ο έλεγχος ταυτότητας μπορούν να εφαρμοστούν ξεχωριστή μέθοδος. εγγενώς. ή χρησιμοποιώντας εξουσιοδότηση http.
  • Οι υπηρεσίες Ιστού μπορούν να λειτουργήσουν τόσο μέσω του πρωτοκόλλου σαπουνιού όσο και μέσω του http, δηλαδή μέσω των αιτημάτων λήψης. Δηλαδή, εάν οι παράμετροι είναι απλά δεδομένα (χωρίς δομή), τότε μπορείτε απλά να καλέσετε τη συνηθισμένη λήψη www.site.com/users.asmx/GetUser?Name=Vasia ή να δημοσιεύσετε. Ωστόσο, αυτό δεν συμβαίνει παντού και όχι πάντα.
  • ... δείτε στη Wikipedia

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

  • Αδικαιολόγητα μεγάλο μέγεθος μηνύματος. Λοιπόν, εδώ η ίδια η φύση του xml είναι τέτοια που η μορφή είναι περιττή, όσο περισσότερες ετικέτες, τόσο περισσότερες άχρηστες πληροφορίες. Το σαπούνι Plus προσθέτει τον πλεονασμό του. Για τα συστήματα intranet, το ζήτημα της κίνησης είναι λιγότερο οξύ από ό,τι για το διαδίκτυο, επομένως το σαπούνι είναι για τοπικά δίκτυαέχει μεγαλύτερη ζήτηση, ιδίως το Sharepoint έχει μια υπηρεσία web σαπουνιού με την οποία μπορείτε να επικοινωνείτε με επιτυχία (και ορισμένους περιορισμούς).
  • Η αυτόματη αλλαγή της περιγραφής μιας υπηρεσίας Ιστού μπορεί να καταστρέψει όλους τους πελάτες. Λοιπόν, είναι έτσι για οποιοδήποτε σύστημα, αν δεν υποστηρίζεται συμβατότητα προς τα πίσωμε τις παλιές μεθόδους όλα θα πέφτουν...
  • Όχι ένα μείον, αλλά ένα μειονέκτημα. Όλες οι κλήσεις μεθόδου πρέπει να είναι ατομικές. Για παράδειγμα, όταν εργαζόμαστε με μια βάση δεδομένων, μπορούμε να ξεκινήσουμε μια συναλλαγή, να εκτελέσουμε πολλά ερωτήματα και μετά να επαναφέρουμε ή να δεσμευτούμε. Δεν υπάρχουν συναλλαγές σε σαπούνι. Μια παράκληση, μια απάντηση, η κουβέντα τελείωσε.
  • Η ενασχόληση με την περιγραφή του τι υπάρχει στην πλευρά του διακομιστή (περιγράφονται όλα σωστά;) και τι υπάρχει στον πελάτη (αυτό που μου περιέγραψε εδώ;) μπορεί να είναι αρκετά δύσκολο. Υπήρχαν αρκετές φορές που έπρεπε να καταλάβω την πλευρά του πελάτη και να πείσω τον προγραμματιστή του διακομιστή ότι τα δεδομένα του είχαν περιγραφεί λανθασμένα, αλλά δεν μπορούσε να καταλάβει τίποτα σχετικά με αυτό, γιατί η αυτόματη δημιουργία και δεν έπρεπε, είναι θέμα λογισμικού . Και το σφάλμα, φυσικά, ήταν στον κώδικα της μεθόδου ο προγραμματιστής απλά δεν το είδε.
  • Η πρακτική δείχνει ότι οι προγραμματιστές διαδικτυακών υπηρεσιών απέχουν τρομερά από τους ανθρώπους που χρησιμοποιούν αυτές τις υπηρεσίες Ιστού. Σε απάντηση οποιουδήποτε αιτήματος (ισχύει από έξω), μπορεί να εμφανιστεί ένα ακατανόητο σφάλμα "Σφάλμα 5. Όλα είναι άσχημα". Όλα εξαρτώνται από τη συνείδηση ​​των προγραμματιστών :)
  • Είμαι σίγουρη ότι ακόμα δεν θυμάμαι κάτι...

Για παράδειγμα, υπάρχει μια ανοιχτή υπηρεσία web belavia:

  • http://86.57.245.235/TimeTable/Service.asmx - σημείο εισόδου, υπάρχει επίσης μια περιγραφή κειμένου των μεθόδων για προγραμματιστές τρίτων.
  • http://86.57.245.235/TimeTable/Service.asmx?WSDL - περιγραφή wsdl των μεθόδων και των τύπων δεδομένων που λαμβάνονται και επιστρέφονται.
  • http://86.57.245.235/TimeTable/Service.asmx?op=GetAirportsList - περιγραφή συγκεκριμένη μέθοδομε ένα παράδειγμα του τύπου της αίτησης xml και της απάντησης xml.

Μπορείτε να δημιουργήσετε και να στείλετε με μη αυτόματο τρόπο ένα αίτημα όπως:

POST /TimeTable/Service.asmx HTTP/1.1 Κεντρικός υπολογιστής: 86.57.245.235 Τύπος περιεχομένου: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://webservices.belavia.by/GetAirportsList" ru

η απάντηση θα έρθει:

HTTP/1.1 200 OK Ημερομηνία: Δευτ., 30 Σεπ 2013 00:06:44 GMT Διακομιστής: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Έκδοση: 4.0.30319 Cache-Control: ιδιωτικό, μέγ. -age=0 Τύπος περιεχομένου: κείμενο/xml; charset=utf-8 Περιεχόμενο-Μήκος: 2940

Υ.Γ. Παλαιότερα άνοιγε η υπηρεσία web της Aeroflot, αλλά αφού το 1C πρόσθεσε υποστήριξη σαπουνιού στο 8ku, μια δέσμη δοκιμαστών beta 1C την εγκατέστησαν με επιτυχία. Τώρα κάτι έχει αλλάξει εκεί (δεν ξέρω τη διεύθυνση, μπορείτε να το αναζητήσετε αν σας ενδιαφέρει).
Αποποίηση ευθυνών ZZY. Μίλησε σε καθημερινό επίπεδο. Μπορείς να κλωτσήσεις.

Ιστορία της δημιουργίας

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

Αλλά ακόμη και σήμερα, δεν έχουν λυθεί όλα τα προβλήματα ολοκλήρωσης, δυστυχώς, δεν υπήρχε ένα ενιαίο πρωτόκολλο για την επικοινωνία μεταξύ εφαρμογών και υπηρεσιών Διαδικτύου. Για την επίλυση αυτού του προβλήματος, εταιρείες όπως η Microsoft, η DevelopMentor, η UserLand Software, η IBM και η Lotus Development συνεργάστηκαν και ως αποτέλεσμα των κοινών τους δραστηριοτήτων, δημιουργήθηκε το πρωτόκολλο πρόσβασης απλού αντικειμένου βασισμένη σε XML (Extensible Markup Language - επεκτάσιμη γλώσσα σήμανσης). Το SOAP έχει σχεδιαστεί για να απλοποιεί σημαντικά την ανάπτυξη διαγλωσσικών εφαρμογών και εργαλείων επιχειρηματικής ενοποίησης. Η αρχή έγινε με το SOAP 1.0, το οποίο απαιτούσε το πρωτόκολλο HTTP για να λειτουργήσει.

Μετά την εμφάνιση της αρχικής έκδοσης του SOAP, που δημιουργήθηκε, όπως ήδη αναφέρθηκε, με τις κοινές προσπάθειες της Microsoft, της DevelopMentor και της UserLand, η IBM και η Lotus συμμετείχαν στην ανάπτυξη του προϊόντος. Ως αποτέλεσμα, η προδιαγραφή έχει υποστεί σημαντική αναθεώρηση για να ταιριάζει καλύτερα στην ενσωμάτωση ετερογενών περιβαλλόντων. Η κύρια διαφορά μεταξύ της επόμενης έκδοσης του SOAP 1.1 και της αρχικής έκδοσης ήταν η μετάβαση από το XML-Data της Microsoft στο σχήμα XML. Επιπλέον, στη νέα έκδοση η προδιαγραφή δεν εξαρτάται πλέον από πρωτόκολλα μεταφοράς. Το SOAP 1.0 απαιτούσε το πρωτόκολλο HTTP, ενώ για το SOAP 1.1 ο τύπος μεταφοράς δεν έχει σημασία: μπορείτε να χρησιμοποιήσετε συνδέσμους queving email ή μασάζ για να προωθήσετε μηνύματα. Οι εταιρείες που είχαν ήδη υιοθετήσει το SOAP 1.0 βρέθηκαν δεμένες με τη μη τυποποιημένη τεχνολογία της Microsoft. Ωστόσο, ορισμένα πολλά υποσχόμενα προϊόντα από αυτήν την εταιρεία, συμπεριλαμβανομένων των BizTalk Server και SQL Server 7.0, βασίζονται επίσης σε XML-Data. Με την εμφάνιση της έκδοσης 1.1, ο κύκλος των υποστηρικτών του πρωτοκόλλου SOAP διευρύνεται

Η αρχική έκδοση του SOAP 1.1 που υποβλήθηκε στην IETF Internet Technical Task Force βασίστηκε στην τεχνολογία XML-Data που προτάθηκε από τη Microsoft τον Ιανουάριο του 1998. Ωστόσο, κατά τη διαδικασία αναθεώρησης των προτύπων του W3C, η υποκείμενη δομή αντικαταστάθηκε από το XML Schema. Ζητήθηκε από την Κοινοπραξία του Παγκόσμιου Ιστού να εξετάσει το SOAP 1.1 ως πιθανό πρότυπο.

Η πιο πρόσφατη έκδοση της προδιαγραφής Simple Object Access Protocol (SOAP) είναι διαθέσιμη στον διακομιστή web που εξυπηρετεί μέλη του Προγράμματος προγραμματιστών MSDN™ (http://msdn.microsoft.com/). Το SOAP είναι ένα ανοιχτό πρωτόκολλο που βασίζεται σε πρότυπα που ορίζει, με βάση την XML (Extensible Markup Language), μια κοινή μορφή επικοινωνίας μεταξύ οποιωνδήποτε εφαρμογών και υπηρεσιών Διαδικτύου. Αυτή η έκδοση επεκτείνει τις δυνατότητες του SOAP για ασύγχρονες επικοινωνίες ώστε να περιλαμβάνει υποστήριξη όχι μόνο για HTTP, αλλά και για πρωτόκολλα Διαδικτύου όπως SMTP, FTP και TCP/IP. Η τελευταία έκδοση της προδιαγραφής SOAP έχει λάβει ευρεία υποστήριξη από εταιρείες όπως οι ActiveState Tool Corp., Ariba Inc., BORN Information Services Inc., Commerce One Inc., Compaq Computer Corp., DevelopMentor Inc., Extensibility Inc., IBM, IONA Technologies PLC, Intel Corp., Lotus Development Corp., ObjectSpace Inc., Rogue Wave Software Inc., Scriptics Corp., Secret Labs AB, UserLand Software και Zveno Pty. Ε.Π.Ε. Η προδιαγραφή SOAP παρέχει έναν κοινό μηχανισμό για την ενοποίηση υπηρεσιών στο Διαδίκτυο ή/και στα ενδοδίκτυα, ανεξάρτητα από το λειτουργικό σύστημα, το μοντέλο αντικειμένου ή τη γλώσσα προγραμματισμού που χρησιμοποιείται. Με βάση τα πρότυπα του Διαδικτύου XML και HTTP, το SOAP επιτρέπει σε οποιεσδήποτε νέες ή υπάρχουσες εφαρμογές να επικοινωνούν μεταξύ τους. Οι ιστότοποι που υποστηρίζουν το SOAP μπορούν να γίνουν υπηρεσίες Ιστού που είναι προσβάσιμες αποκλειστικά μέσω προγραμματισμού και δεν απαιτούν ανθρώπινη παρέμβαση. Μια ενιαία υποδομή που επιτρέπει την άμεση αλληλεπίδραση μεταξύ εφαρμογών που αντιμετωπίζουν το Διαδίκτυο ανοίγει νέες ευκαιρίες για την ενοποίηση υπηρεσιών και συσκευών — ανεξάρτητα από το πού βρίσκονται στο Διαδίκτυο.

Υπηρεσίες Ιστού και SOAP

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

Τι είναι το SOAP

Οι τεχνολογίες που χρησιμοποιούνται επί του παρόντος για κλήση απομακρυσμένων μεθόδων (DCOM, CORBA/IIOP και RMI) είναι αρκετά δύσκολο να διαμορφωθούν και να οργανωθούν οι αλληλεπιδράσεις. Αυτό συνεπάγεται προβλήματα στη λειτουργία και τη λειτουργία των κατανεμημένων συστημάτων (προβλήματα ασφαλείας, μεταφορά μέσω τείχη προστασίας κ.λπ.). Τα υπάρχοντα προβλήματα επιλύθηκαν με επιτυχία με τη δημιουργία του SOAP (Simple Object Access Protocol), ενός απλού πρωτοκόλλου βασισμένου σε XML για την ανταλλαγή μηνυμάτων σε κατανεμημένα περιβάλλοντα (WWW). Έχει σχεδιαστεί για τη δημιουργία υπηρεσιών web και μεθόδων κλήσης εξ αποστάσεως. Το SOAP μπορεί να χρησιμοποιηθεί με διαφορετικά πρωτόκολλα μεταφοράς, συμπεριλαμβανομένων των HTTP, SMTP κ.λπ.

Τι είναι οι υπηρεσίες web

Οι υπηρεσίες Ιστού είναι λειτουργίες και δεδομένα που εκτίθενται για χρήση από εξωτερικές εφαρμογές που αλληλεπιδρούν με τις υπηρεσίες μέσω τυπικών πρωτοκόλλων και μορφών δεδομένων. Οι υπηρεσίες Ιστού είναι εντελώς ανεξάρτητες από τη γλώσσα και την πλατφόρμα υλοποίησης. Η τεχνολογία των υπηρεσιών Ιστού είναι ο ακρογωνιαίος λίθος του μοντέλου προγραμματισμού .NET της Microsoft. Για να δείξω τις δυνατότητες του SOAP, χρησιμοποίησα την πρόσφατη εφαρμογή του SOAP Toolkit έκδοση 2.0 από τη Microsoft. Θα πρέπει να σημειωθεί ότι η τρέχουσα έκδοση του Toolkit διαφέρει αισθητά από την προηγούμενη (Microsoft SOAP Toolkit for Visual Studio 6.0) και από την έκδοση beta του SOAP Toolkit 2.0.

Μηχανισμός αλληλεπίδρασης μεταξύ πελάτη και διακομιστή

  1. Η εφαρμογή πελάτη δημιουργεί ένα αντικείμενο SOAPClient
  2. Το SOAPClient διαβάζει αρχεία περιγραφής μεθόδων υπηρεσίας web (WSDL και Web Services Meta Language - WSML). Αυτά τα αρχεία μπορούν επίσης να αποθηκευτούν στον πελάτη.
  3. Η εφαρμογή πελάτη, χρησιμοποιώντας τις δυνατότητες καθυστερημένης σύνδεσης του αντικειμένου SOAPClient, καλεί τη μέθοδο υπηρεσίας. Το SOAPClient δημιουργεί ένα πακέτο αιτήματος (Φάκελος SOAP) και το στέλνει στον διακομιστή. Μπορεί να χρησιμοποιηθεί οποιοδήποτε πρωτόκολλο μεταφοράς, αλλά συνήθως χρησιμοποιείται το HTTP.
  4. Το πακέτο παίρνει μια εφαρμογή διακομιστή ακρόασης (μπορεί να είναι μια εφαρμογή ISAPI ή μια σελίδα ASP), δημιουργεί ένα αντικείμενο SOAPServer και του μεταβιβάζει το πακέτο αιτήματος
  5. Ο SOAPServer διαβάζει την περιγραφή της υπηρεσίας Ιστού, φορτώνει την περιγραφή και το πακέτο αιτημάτων σε δέντρα XML DOM
  6. Ο SOAPServer καλεί μια μέθοδο του αντικειμένου/εφαρμογής που υλοποιεί την υπηρεσία
  7. Τα αποτελέσματα της εκτέλεσης της μεθόδου ή της περιγραφής σφαλμάτων μετατρέπονται από το αντικείμενο SOAPServer σε ένα πακέτο απόκρισης και αποστέλλονται στον πελάτη
  8. Το αντικείμενο SOAPClient αναλύει το ληφθέν πακέτο και επιστρέφει στην εφαρμογή πελάτη τα αποτελέσματα της υπηρεσίας ή μια περιγραφή του σφάλματος που παρουσιάστηκε.

Ένα αρχείο WSDL είναι ένα έγγραφο XML που περιγράφει τις μεθόδους που παρέχονται από μια υπηρεσία Ιστού. Επίσης, οι παράμετροι των μεθόδων, οι τύποι τους, τα ονόματα και η θέση της υπηρεσίας Ακρόασης. Ο οδηγός SOAP Toolkit δημιουργεί αυτόματα αυτό το έγγραφο.

SOAP Envelope (Package) - ένα έγγραφο XML που περιέχει ένα αίτημα/απόκριση για την εκτέλεση μιας μεθόδου. Είναι πιο βολικό να το θεωρήσετε ως ταχυδρομικό φάκελο στον οποίο περικλείονται πληροφορίες. Η ετικέτα Envelope πρέπει να είναι το ριζικό στοιχείο του πακέτου. Το στοιχείο Header είναι προαιρετικό, αλλά το στοιχείο Body πρέπει να υπάρχει και να είναι άμεσο παιδί του στοιχείου Envelope. Εάν παρουσιαστεί σφάλμα εκτέλεσης μεθόδου, ο διακομιστής δημιουργεί ένα πακέτο που περιέχει ένα στοιχείο σφάλματος στην ετικέτα Body, το οποίο περιέχει μια λεπτομερή περιγραφή του σφάλματος. Εάν χρησιμοποιείτε τις διεπαφές υψηλού επιπέδου SOAPClient, SOAPServer, τότε δεν χρειάζεται να μπείτε στις περιπλοκές της μορφής του πακέτου, αλλά, εάν θέλετε, μπορείτε να χρησιμοποιήσετε διεπαφές χαμηλού επιπέδου ή ακόμα και να δημιουργήσετε ένα πακέτο με το χέρι.

Το μοντέλο αντικειμένου SOAP Toolkit καθιστά δυνατή την εργασία με αντικείμενα API χαμηλού επιπέδου:

  • SoapConnector - Παρέχει εργασία με το πρωτόκολλο μεταφοράς για την ανταλλαγή πακέτων SOAP
  • SoapConnectorFactory - Παρέχει μια μέθοδο για τη δημιουργία μιας σύνδεσης για το πρωτόκολλο μεταφοράς που καθορίζεται στο αρχείο WSDL (ετικέτα)
  • SoapReader - Διαβάζει μηνύματα SOAP και δημιουργεί δέντρα XML DOM
  • SoapSerializer - Περιέχει μεθόδους για τη δημιουργία ενός μηνύματος SOAP
  • IsoapTypeMapper, SoapTypeMapperFactory - Διεπαφές που σας επιτρέπουν να εργάζεστε με πολύπλοκους τύπους δεδομένων

Χρησιμοποιώντας αντικείμενα API υψηλού επιπέδου, μπορείτε να μεταφέρετε δεδομένα μόνο απλών τύπων (int, srting, float ...), αλλά η προδιαγραφή SOAP 1.1 σάς επιτρέπει να εργάζεστε με πιο σύνθετους τύπους δεδομένων, όπως πίνακες, δομές, λίστες και κομπινεζόν. Για να εργαστείτε με τέτοιους τύπους, πρέπει να χρησιμοποιήσετε τις διεπαφές IsoapTypeMapper και SoapTypeMapperFactory.

SOAP (πρωτόκολλο πρόσβασης απλού αντικειμένου)είναι ένα τυποποιημένο πρωτόκολλο για τη μεταφορά μηνυμάτων μεταξύ ενός πελάτη και ενός διακομιστή. Συνήθως χρησιμοποιείται σε συνδυασμό με HTTP(S), αλλά μπορεί επίσης να λειτουργήσει με άλλα πρωτόκολλα επιπέδου εφαρμογής (όπως SMTP και FTP).
Η δοκιμή SOAP από την άποψη των τεχνικών δοκιμών δεν διαφέρει ουσιαστικά από την εργασία με άλλα API, αλλά απαιτεί προκαταρκτική προετοιμασία (από την άποψη της θεωρίας πρωτοκόλλου) και ειδικά εργαλεία δοκιμών. Σε αυτό το άρθρο, θα ήθελα να διαμορφώσω μια μικρή λίστα ελέγχου με τις απαραίτητες γνώσεις και δεξιότητες, οι οποίες θα είναι εξίσου χρήσιμες τόσο σε έναν ελεγκτή SOAP (που συχνά δεν έχει ιδέα τι να πιάσει μετά την εκτέλεση της εργασίας) όσο και σε έναν διευθυντή που είναι αναγκάστηκε να αξιολογήσει τις γνώσεις των ελεγκτών και να αναπτύξει σχέδια για εκπαίδευση.

Θεωρητική βάση

Το γεγονός ότι το SOAP είναι ένα πρωτόκολλο έχει πολλές συνέπειες για τις δοκιμές: πρέπει να μελετήσετε το ίδιο το πρωτόκολλο, τα «κύρια» πρότυπα και τα πρωτόκολλα στα οποία βασίζεται, και (όπου χρειάζεται) τις υπάρχουσες επεκτάσεις.

XML
Η XML είναι μια γλώσσα σήμανσης παρόμοια με την HTML. Οποιοδήποτε μήνυμα που αποστέλλεται/λαμβάνεται μέσω SOAP είναι ένα έγγραφο XML στο οποίο τα δεδομένα είναι εύκολα δομημένα και ευανάγνωστα, για παράδειγμα:



Τζούλια
Νατάσα
Υπενθύμιση
Μην ξεχάσετε να γράψετε ένα άρθρο!


Μπορείτε να μάθετε περισσότερα για την XML στο w3schools ή στο codenet (στα ρωσικά). Φροντίστε να δώσετε προσοχή στην περιγραφή των χώρων ονομάτων (μια μέθοδος για την επίλυση διενέξεων κατά την περιγραφή στοιχείων σε XML) - η χρήση τους απαιτείται στο SOAP.

XSD
Όταν εργάζεστε, είναι πάντα βολικό να έχετε μια τυποποιημένη περιγραφή πιθανών εγγράφων XML και να τα ελέγχετε για σωστή συμπλήρωση. Υπάρχει ένας ορισμός σχήματος XML (ή XSD για συντομία) για αυτόν τον σκοπό. Τα δύο κύρια χαρακτηριστικά του XSD για έναν ελεγκτή είναι η περιγραφή των τύπων δεδομένων και η επιβολή περιορισμών σε πιθανές τιμές. Για παράδειγμα, το στοιχείο από το προηγούμενο παράδειγμα μπορεί να γίνει προαιρετικό και να περιοριστεί σε 255 χαρακτήρες χρησιμοποιώντας XSD:

...







...

Επεκτάσεις SOAP
Στην εργασία σας, μπορεί επίσης να συναντήσετε διάφορες «επεκτάσεις» SOAP - πρότυπα όπως το WS-*. Ένα από τα πιο κοινά είναι το WS-Security, το οποίο σας επιτρέπει να εργάζεστε με κρυπτογράφηση και ηλεκτρονικές υπογραφές. Συχνά, μαζί με αυτό χρησιμοποιείται και το WS-Policy, με το οποίο μπορείτε να διαχειριστείτε τα δικαιώματα χρήσης της υπηρεσίας σας.

Παράδειγμα χρήσης του WS-Security:


Αλίκη
6S3P2EWNP3lQf+9VC3emNoT57oQ=
YF6j8V/CAqi+1nRsGLRbuZhi
2008-04-28T10:02:11Z

Όλες αυτές οι επεκτάσεις είναι αρκετά περίπλοκες δομές που δεν χρησιμοποιούνται σε κάθε υπηρεσία SOAP. Η λεπτομερής μελέτη τους στο αρχικό στάδιο του mastering testing SOAP είναι απίθανο να είναι σχετική.

Εργαλεία

Όπως καταλαβαίνετε ήδη, το SOAP είναι ένα σοβαρό θέμα για να δουλέψετε με αυτό, πρέπει να γνωρίζετε τη θεωρία και πολλά πρότυπα. Στην πράξη, μια τέτοια πολυπλοκότητα θα οδηγούσε σε πολύ σημαντικό εργατικό κόστος (για παράδειγμα, θα έπρεπε να κοιτάτε το διάγραμμα σε ένα σημειωματάριο κάθε φορά και να στέλνετε αιτήματα με μπούκλα). Επομένως, έχουν δημιουργηθεί εργαλεία που διευκολύνουν την εργασία με το SOAP.

Επεξεργαστές XML/XSD
Ένας καλός ελεγκτής ξεκινά τις δοκιμές στο στάδιο της σύνταξης τεκμηρίωσης, επομένως είναι βολικό στη χρήση ειδικοί συντάκτες. Τα δύο πιο διάσημα είναι το Oxygen (cross-platform) και το Altova (μόνο για Windows). αμφότεροι πληρώνονται. Αυτό είναι πολύ ισχυρά προγράμματα, το οποίο χρησιμοποιούν ενεργά οι αναλυτές όταν περιγράφουν υπηρεσίες.

Στην πρακτική μου, τρεις δυνατότητες επεξεργασίας αποδείχθηκαν χρήσιμες: οπτικοποίηση XSD, δημιουργία XML με βάση XSD και επικύρωση XML με βάση XSD.

1. Οπτικοποίηση XSDπου απαιτείται για μια οπτική αναπαράσταση του διαγράμματος, επιτρέποντάς σας να προσδιορίσετε γρήγορα τα απαιτούμενα στοιχεία και χαρακτηριστικά, καθώς και τους υπάρχοντες περιορισμούς. Για παράδειγμα, για ένα CheckTextRequest, απαιτείται το στοιχείο κειμένου και τα τρία χαρακτηριστικά είναι προαιρετικά (με το χαρακτηριστικό options να έχει προεπιλεγμένη τιμή μηδέν).

Η οπτικοποίηση είναι απαραίτητη όταν υπάρχουν πολλοί τύποι και περιορισμοί στο διάγραμμα. Εάν χρειάζεστε μόνο αυτό και δεν θέλετε να πληρώσετε για ειδικούς συντάκτες, τότε μπορείτε να εξετάσετε δωρεάν εναλλακτικές λύσεις (για παράδειγμα, JDeveloper).

2. Παραγωγή XML βασισμένη σε XSDχρήσιμο όταν θέλετε να δείτε ένα έγκυρο παράδειγμα μηνύματος. Το χρησιμοποιώ για να πειραματιστώ γρήγορα με πιθανές συμπληρώσεις μηνυμάτων και να δοκιμάσω τις αποχρώσεις του τρόπου λειτουργίας των περιορισμών.

3. Μετά τη χρήση της δυνατότητας από το σημείο 2, είναι χρήσιμο να πραγματοποιηθεί Επικύρωση XML έναντι XSD– δηλαδή, ελέγξτε το μήνυμα για ορθότητα. Μαζί, οι λειτουργίες 2 και 3 σάς επιτρέπουν να εντοπίσετε δύσκολα ελαττώματα στο XSD ακόμα και όταν η ίδια η υπηρεσία είναι υπό ανάπτυξη.

Εργαλείο δοκιμής – SoapUI

Η δοκιμή SOAP περιλαμβάνει σχεδόν πάντα τη χρήση SoapUI. Μπορείτε να διαβάσετε σχετικά με τη χρήση αυτού του εργαλείου στο διαφορετικές πηγές(,), αλλά θα είναι πιο αποτελεσματικό να εξοικειωθείτε με την επίσημη τεκμηρίωση. Εντοπίζω 8 υπό όρους επίπεδα επάρκειας SoapUI:

Επίπεδο 1 – Μπορώ να στείλω αιτήματα
Μάθετε να δημιουργείτε ένα έργο με βάση το WSDL. Το SoapUI μπορεί να δημιουργήσει όλα τα απαραίτητα ερωτήματα για εσάς. Το μόνο που έχετε να κάνετε είναι να ελέγξετε ότι έχουν συμπληρωθεί σωστά και να κάνετε κλικ στο κουμπί «Αποστολή». Αφού αναπτύξετε τις δεξιότητες για τη δημιουργία έγκυρων ερωτημάτων, πρέπει να κατακτήσετε την τέχνη της δημιουργίας εσφαλμένων ερωτημάτων που προκαλούν σφάλματα.

Επίπεδο 2 – Μπορώ να κάνω Test Suites και Test Cases
Ξεκινήστε να κάνετε mini-autotests. Τα κιτ δοκιμών και οι περιπτώσεις δοκιμών σάς επιτρέπουν να δημιουργείτε σενάρια δοκιμών API, να προετοιμάζετε δεδομένα για αιτήματα και να ελέγχετε αυτόματα την απάντηση που λαμβάνετε για να βεβαιωθείτε ότι ταιριάζει με την αναμενόμενη. Στην αρχή, μπορούν να χρησιμοποιηθούν απλώς ως συλλογές ερωτημάτων. Για παράδειγμα, εάν έχετε δημιουργήσει ένα ελάττωμα και θέλετε να το ελέγξετε γρήγορα αφού το διορθώσετε, μπορείτε να διαθέσετε ένα ξεχωριστό κιτ δοκιμής ειδικά για αιτήματα ελαττωμάτων.

Επίπεδο 3 – Μπορώ να γράψω ισχυρισμούς
Αφού κατακτήσετε τις δοκιμαστικές περιπτώσεις, θα σας είναι χρήσιμο να μάθετε πώς να τις κάνετε αυτόματα επαληθεύσιμες. Μετά από αυτό, δεν θα χρειάζεται πλέον να κοιτάτε «με τα μάτια σας» για πληροφορίες σχετικά με την απάντηση: εάν είναι διαθέσιμη αυτόματο έλεγχοΟι περιπτώσεις θα επισημαίνονται με πράσινο (εάν ο έλεγχος περάσει) ή κόκκινο (αν αποτύχει). Το SoapUI παρέχει ένα μεγάλο σετ πιθανούς ελέγχους(ισχυρισμοί), αλλά τα πιο βολικά και απλά είναι τα Contains και Not Contains. Με τη βοήθειά τους, μπορείτε να ελέγξετε την παρουσία συγκεκριμένου κειμένου στη ληφθείσα απάντηση. Αυτοί οι έλεγχοι υποστηρίζουν επίσης αναζητήσεις κανονικών εκφράσεων.

Επίπεδο 4 – χρησιμοποιήστε το XPath ή/και το XQuery στις Δηλώσεις
Για όσους είναι λίγο εξοικειωμένοι με τη διεπαφή χρήστη χρησιμοποιώντας το Selenium, η γλώσσα XPath είναι κάτι οικείο. Σε γενικές γραμμές, το XPath σάς επιτρέπει να αναζητήσετε στοιχεία σε ένα έγγραφο XML. Το XQuery είναι μια παρόμοια τεχνολογία που μπορεί να χρησιμοποιήσει το XPath εσωτερικά. αυτή η γλώσσα είναι πολύ πιο ισχυρή, μοιάζει με SQL. Και οι δύο αυτές γλώσσες μπορούν να χρησιμοποιηθούν σε ισχυρισμούς. Οι έλεγχοι με τη βοήθειά τους είναι πιο στοχευμένοι και σταθεροί, επομένως οι υποθέσεις σας θα απολαμβάνουν μεγαλύτερη εμπιστοσύνη.

Επίπεδο 5 – Μπορώ να γράψω σύνθετα τεστ χρησιμοποιώντας ειδικά βήματα

Οι δοκιμαστικές περιπτώσεις μπορούν να περιέχουν όχι μόνο ένα αίτημα, αλλά και πολλά (για παράδειγμα, όταν θέλετε να προσομοιώσετε το τυπικό σενάριο χρήστη "δημιουργία οντότητας" → "εξαγωγή οντότητας"). Μπορεί να υπάρχουν άλλα ειδικά βήματα μεταξύ των αιτημάτων, για παράδειγμα:

  • Ιδιότητες και Μεταφορά ιδιοτήτων (βοηθήστε την επαναχρησιμοποίηση δεδομένων και τη μεταφορά τους μεταξύ αιτημάτων).
  • Αίτημα JDBC (χρησιμοποιείται για την ανάκτηση δεδομένων από τη βάση δεδομένων).
  • Conditional Goto (σας επιτρέπει να κάνετε διακλαδώσεις ή βρόχους στη δοκιμαστική περίπτωση).
  • Εκτελέστε το TestCase (βοηθά να τοποθετήσετε ορισμένα τυπικά ερωτήματα σε ξεχωριστές περιπτώσεις δοκιμής και να τα καλέσετε όπου χρειάζεται).

Επίπεδο 6 – χρήση σεναρίων Groovy

Το SoapUI σάς επιτρέπει να γράφετε σενάρια Groovy σε διάφορα μέρη. Η απλούστερη περίπτωση είναι να δημιουργήσετε δεδομένα στο ίδιο το ερώτημα χρησιμοποιώντας ένθετα $(=). Χρησιμοποιώ αυτά τα ένθετα όλη την ώρα:

  • $(=new Date().format("εεεε-ΜΜ-ηη'T'HH:μμ:δδ"))– να εισαγάγετε την τρέχουσα ημερομηνία και ώρα στην απαιτούμενη μορφή·
  • $(=java.util.UUID.randomUUID())– για να εισαγάγετε ένα σωστά διαμορφωμένο τυχαίο GUID.

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

Επίπεδο 7 – χρήση MockServices
Το SoapUI που βασίζεται σε WSDL μπορεί να δημιουργήσει Mock αντικείμενα. Ένα εικονικό αντικείμενο είναι η απλούστερη προσομοίωση μιας υπηρεσίας. Με τη βοήθεια των "mocks" μπορείτε να ξεκινήσετε τη σύνταξη και τον εντοπισμό σφαλμάτων δοκιμαστικών υποθέσεων ακόμη και πριν η υπηρεσία είναι πραγματικά διαθέσιμη για δοκιμή. Μπορούν επίσης να χρησιμοποιηθούν ως «αποδείξεις» για προσωρινά μη διαθέσιμες υπηρεσίες.

Επίπεδο 8 – SoapUI God
Γνωρίζετε τη διαφορά μεταξύ επί πληρωμή και δωρεάν εκδόσεις SoapUI και χρησιμοποιήστε το SoapUI API στον κώδικα. Χρησιμοποιείτε πρόσθετα και εκτελείτε υποθέσεις γραμμή εντολώνκαι/ή CI. Οι δοκιμές σας είναι απλές και εύκολες στη συντήρηση. Γενικά «έφαγες τον σκύλο» σε αυτό το όργανο. Θα ήθελα πολύ να μιλήσω με κάποιον που έχει κατακτήσει το SoapUI σε αυτό το επίπεδο. Αν είστε ένας, εγγραφείτε στα σχόλια!

Δοκιμές με Γλώσσες Προγραμματισμού

Ακολουθεί ένα παράδειγμα της εμφάνισης ενός αιτήματος στο YandexSpeller API, που έγινε με χρήση groovy-wslite:

εισαγωγή wslite.soap.*
def client = new SOAPClient ("http://speller.yandex.net/services/spellservice?WSDL")
def answer = client.send(SOAPAction: "http://speller.yandex.net/services/spellservice/checkText") (
σώμα(
CheckTextRequest("lang": "ru", "xmlns":"http://speller.yandex.net/services/spellservice") (
κείμενο ("σφάλμα")
}
}
}
assert "error" == answer.CheckTextResponse.SpellResult.error.s.text()
βεβαιωθείτε "1" == [email προστατευμένο]()

Από όσο γνωρίζω, δεν υπάρχουν ακόμη πλαίσια υψηλού επιπέδου (όπως το Rest-assured) για τη δοκιμή SOAP, αλλά πρόσφατα εμφανίστηκε ένα ενδιαφέρον εργαλείο - το καράτε. Με τη βοήθειά του, μπορείτε να περιγράψετε περιπτώσεις δοκιμής SOAP και REST με τη μορφή σεναρίων όπως Cucumber / Gherkin. Για πολλούς δοκιμαστές, η στροφή στο καράτε θα είναι μια ιδανική λύση, επειδή τέτοια σενάρια, όσον αφορά την πολυπλοκότητα της γραφής και των υποστηρικτικών περιπτώσεων, θα βρίσκονται κάπου στη μέση μεταξύ της χρήσης του SoapUI και της σύνταξης του δικού σας πλαισίου για τη δοκιμή του SOAP.

Σύναψη

Είναι απίθανο να θελήσετε ποτέ να δοκιμάσετε το SOAP μόνο για τον εαυτό σας (όπως θα μπορούσατε με το REST). Αυτό είναι ένα πρωτόκολλο βαρέων βαρών που χρησιμοποιείται σε σοβαρές εταιρικές λύσεις. Αλλά η βαρύτητα του είναι ταυτόχρονα ένα δώρο στον ελεγκτή: όλες οι τεχνολογίες που χρησιμοποιούνται είναι τυποποιημένες και υπάρχουν εργαλεία υψηλής ποιότητας για εργασία. Το μόνο που απαιτείται από τον ελεγκτή είναι η επιθυμία να τα μάθει και να τα χρησιμοποιήσει.

Ας συγκεντρώσουμε την ίδια λίστα ελέγχου των απαραίτητων δεξιοτήτων για έναν δοκιμαστή. Έτσι, εάν μόλις αρχίζετε να δοκιμάζετε τις υπηρεσίες SOAP, πρέπει να γνωρίζετε και να μπορείτε να χρησιμοποιείτε:

  • WSDL.
  • ΣΑΠΟΥΝΙ.
  • Επεξεργαστές XML/XSD (σε επίπεδο οπτικοποίησης XSD).
  • SoapUI στο επίπεδο 1.

Όπως μπορείτε να δείτε, η κύρια έμφαση δίνεται στην εκμάθηση των προτύπων στο SoapUI, αρκεί απλώς να μπορείτε να εκτελέσετε ερωτήματα. Καθώς βουτάς σε Δοκιμή σαπουνιούΘα έρθετε αντιμέτωποι με εργασίες που θα απαιτήσουν πιο σοβαρές δεξιότητες και γνώσεις, αλλά δεν πρέπει να προσπαθήσετε να μάθετε τα πάντα με τη μία. Η συνέπεια στην αύξηση του επιπέδου πολυπλοκότητας των εργασιών που εκτελούνται είναι πολύ πιο σημαντική. Ακολουθώντας αυτή τη σύσταση, μια μέρα θα συνειδητοποιήσετε ότι έχετε γίνει καλός ειδικός σε αυτόν τον τομέα!

Όπως αναφέρθηκε στο προηγούμενο κεφάλαιο, οι υπηρεσίες Ιστού επικοινωνούν με τους πελάτες και μεταξύ τους στέλνοντας μηνύματα σε XML. Οι ετικέτες αυτής της υλοποίησης XML, οι κανόνες για τη μορφοποίηση του εγγράφου XML και η σειρά με την οποία ανταλλάσσονται τα έγγραφα ορίζονται από το πρωτόκολλο SOAP. Το πρωτόκολλο SOAP δημιουργήθηκε το 1998 από μια ομάδα προγραμματιστών με επικεφαλής τον Dave Winer, ο οποίος εργαζόταν στη Microsoft Corporation και στο Userland. Το όνομα του πρωτοκόλλου - "Simple Object Access Protocol" - αντικατοπτρίζει τον αρχικό του σκοπό - την πρόσβαση στις μεθόδους απομακρυσμένων αντικειμένων. Ο σκοπός του πρωτοκόλλου έχει αλλάξει τώρα είναι ένα πρωτόκολλο για οποιαδήποτε αλληλεπίδραση μεταξύ των υπηρεσιών Ιστού και των χαλαρά συζευγμένων στοιχείων κατανεμημένες εφαρμογές. Δεν είναι πλέον πολύ απλό και δεν λέει τίποτα για αντικείμενα. Πολλοί προγραμματιστές προτείνουν να το ονομάσουμε "Πρωτόκολλο Αρχιτεκτονικής με προσανατολισμό στην υπηρεσία", αφήνοντας την προηγούμενη συντομογραφία. Για να σταματήσουν αυτές οι προσπάθειες, η προδιαγραφή SOAP 1.2 αναφέρει ότι η λέξη "SOAP" δεν θα γράφεται πλέον με κανέναν τρόπο.

Στα τέλη του 1999, η ανάπτυξη του πρωτοκόλλου μεταφέρθηκε στην κοινοπραξία W3C (http:// www.w3.org/).

Τον Μάιο του 2000, η ​​κοινοπραξία κυκλοφόρησε την έκδοση του SOAP 1.1. Ένα μήνυμα γραμμένο χρησιμοποιώντας το πρωτόκολλο SOAP μορφοποιείται ως έγγραφο XML που χρησιμοποιεί ενεργά χώρους ονομάτων. Τα ονόματα στοιχείων SOAP 1.1 XML αναφέρονται στο αναγνωριστικό χώρου ονομάτων http://schemas.xmlsoap.org/soap/envelope/.

Το δεύτερο προσχέδιο του SOAP 1.2 κυκλοφόρησε το 2001, ο χώρος ονομάτων του εκείνη την εποχή ονομαζόταν http://www.w3.org/2001/06/soap-envelope.

Σημειώστε ότι είναι το αναγνωριστικό χώρου ονομάτων και όχι ο αριθμός 1.1 ή 1.2 που καθορίζει την έκδοση SOAP. Ο διακομιστής δεν θα εξετάσει το μήνυμα SOAP και θα επιστρέψει ένα μήνυμα σφάλματος εάν το παρατηρήσει

αναντιστοιχία χώρου ονομάτων.

Καθώς το γράφω αυτό, το SOAP 1.1 εξακολουθεί να λειτουργεί. Η έκδοση 1.2 δεν μπορεί να εγκαταλείψει το προπαρασκευαστικό στάδιο, αλλά χρησιμοποιείται ήδη, για παράδειγμα, στο SOAP::Lite, Apache SOAP 2.3, Apache Axis. Επομένως, σε αυτό το κεφάλαιο θα περιγράψω την έκδοση 1.2, σημειώνοντας τις διαφορές της από την έκδοση 1.1.

Προσδιορισμός έκδοση εργασίαςΤο SOAP αποθηκεύεται πάντα στη διεύθυνση http://www.w3.org/TR/SOAP/. Τα έγγραφα που βρίσκονται σε αυτήν τη διεύθυνση αντικαθίστανται με νέα κατά την αντικατάσταση της λειτουργικής έκδοσης.

Το πρόχειρο SOAP ενημερώνεται συνεχώς και το αναγνωριστικό χώρου ονομάτων αλλάζει. Νεότερη επιλογήΗ πρόχειρη έκδοση τη στιγμή της σύνταξης βρισκόταν στη διεύθυνση http://www.w3.org/TR/soapl2-partl/ και ο χώρος ονομάτων που χρησιμοποιούσε ονομαζόταν http://www.w3.org/2002/06/soap -φάκελος. Σημειώστε ότι η προδιαγραφή SOAP 12 αποτελείται από δύο μέρη: μέρος 1 και μέρος 2. Το δεύτερο μέρος της προδιαγραφής - η εφαρμογή - περιέχει κανόνες για την καταγραφή πολύπλοκων τύπων δεδομένων. Η προδιαγραφή έχει ένα ακόμη μέρος, μέρος Ο - παραδείγματα μηνυμάτων που έχουν συνταχθεί σύμφωνα με τους κανόνες του SOAP 1.2.

Δομή μηνυμάτων SOAP

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

και άλλα χαρακτηριστικά που παρέχονται με προθέματα. Το ριζικό στοιχείο περιέχει ένα προαιρετικό στοιχείο που περιέχει την κεφαλίδα του μηνύματος και ένα απαραίτητο στοιχείο , στο οποίο καταγράφονται τα περιεχόμενα του μηνύματος. Η έκδοση 1.1 επιτρέπεται μετά το σώμα για να γράψετε αυθαίρετα στοιχεία, έπρεπε να μπουν πρόθεμα τα ονόματά τους. Η έκδοση 1.2 απαγορεύει την εγγραφή οτιδήποτε μετά το στοιχείο . Εν συντομία, γενική δομήΤο μήνυμα SOAP είναι:

xmlns:env="http://www.w3.org/2002/06/soap-envelope">

< ! - Блоки заголовка ->

Στοιχείο

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

Το γεγονός είναι ότι ένα μήνυμα SOAP μπορεί να περάσει από πολλούς διακομιστές SOAP ή από πολλές εφαρμογές στον ίδιο διακομιστή. Αυτές οι εφαρμογές επεξεργάζονται εκ των προτέρων τα μπλοκ κεφαλίδας μηνυμάτων και τα μεταδίδουν μεταξύ τους. Όλοι αυτοί οι διακομιστές ή/και οι εφαρμογές ονομάζονται κόμβοι SOAP. Η προδιαγραφή SOAP δεν ορίζει κανόνες για τη μετάδοση ενός μηνύματος μέσω μιας αλυσίδας διακομιστών. Για το σκοπό αυτό, αναπτύσσονται άλλα πρωτόκολλα, για παράδειγμα, το Microsoft WS-Routing.

Το χαρακτηριστικό actor καθορίζει τον κόμβο στόχο SOAP - αυτόν που βρίσκεται στο τέλος της αλυσίδας και θα επεξεργαστεί ολόκληρη την κεφαλίδα. Εννοια

Το χαρακτηριστικό actor υποδεικνύει ότι η κεφαλίδα θα υποβληθεί σε επεξεργασία από τον πρώτο διακομιστή που τη λαμβάνει. Μετά την επεξεργασία, το μπλοκ αφαιρείται από το μήνυμα SOAP.

Στην έκδοση 1.2, το χαρακτηριστικό actor αντικαθίσταται από το χαρακτηριστικό ρόλος επειδή σε αυτήν την έκδοση του SOAP, κάθε κόμβος παίζει έναν ή περισσότερους ρόλους. Η προδιαγραφή αυτή τη στιγμή ορίζει τρεις ρόλους κόμβου SOAP.

Ο ρόλος του http://^^.w3.org/2002/06/soap-envelope/role/ultimateReceiver διαδραματίζεται από τον τελικό κόμβο στόχο που θα επεξεργαστεί την κεφαλίδα.

Ο ρόλος http://www.w3.org/2002/06/soap-envelope/role/next παίζεται από τον ενδιάμεσο ή τον κόμβο στόχο. Ένας τέτοιος κόμβος μπορεί να παίξει άλλους, πρόσθετους ρόλους.

Ο ρόλος http://www.w3.org/2002/06/soap-envelope/role/none δεν πρέπει να παίζεται από κανέναν κόμβο SOAP.

Οι κατανεμημένες εφαρμογές, με βάση τις ανάγκες τους, μπορούν να προσθέσουν άλλους ρόλους σε αυτούς τους ρόλους, για παράδειγμα, να εισαγάγουν έναν ενδιάμεσο διακομιστή που επαληθεύει την ψηφιακή υπογραφή και να ορίσει αυτόν τον ρόλο για αυτόν με κάποια συμβολοσειρά URI.

Η τιμή του χαρακτηριστικού ρόλου μπορεί να είναι οποιαδήποτε συμβολοσειρά URI που υποδεικνύει το ρόλο του κόμβου στον οποίο προορίζεται αυτό το μπλοκ κεφαλίδας. Η προεπιλεγμένη τιμή για αυτό το χαρακτηριστικό είναι κενή τιμή, δηλαδή μόνο ένα ζεύγος εισαγωγικών ή η συμβολοσειρά URI http://\vw\v.w3.org/2002/06/soap-envelope/rale/ultimateReceiver.

Η τιμή του χαρακτηριστικού ρόλου υποδεικνύει ότι το μπλοκ πρέπει να υποβληθεί σε επεξεργασία από έναν κόμβο που παίζει τον ρόλο που καθορίζεται από την ίδια συμβολοσειρά.

Ένα άλλο χαρακτηριστικό στοιχείου

, που ονομάζεται urnstUnderstand, παίρνει τις τιμές o ή 1. Η προεπιλεγμένη τιμή του είναι o. Εάν το χαρακτηριστικό mustunderstand είναι ίσο με 1, τότε ο κόμβος SOAP, κατά την επεξεργασία του στοιχείου, πρέπει να λάβει υπόψη τη σύνταξή του που ορίζεται στο σχήμα του εγγράφου ή να μην επεξεργάζεται καθόλου το μήνυμα. Αυτό αυξάνει την ακρίβεια της επεξεργασίας μηνυμάτων.

Στην έκδοση 1.2 SOAP, αντί για τον αριθμό o, πρέπει να γράψετε τη λέξη false και αντί για τον αριθμό 1, να γράψετε τη λέξη true.

Στο σώμα της κεφαλίδας

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

Λίστα 3.1. Κεφαλίδα με ένα μπλοκ

xmlns:t="http://some.com/transaction" env:role=

"http://www.w3.org/2002/06/soap-envelope/role/ultimateReceiver" env:mustUnderstand="1">

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

Στοιχείο πρέπει να γράφεται αμέσως μετά το στοιχείο

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

Μήνυμα σφάλματος

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

Στο μήνυμα που γράφτηκε στο σώμα ενός στοιχείου SOAP 1.1,

Υπάρχουν τέσσερα μέρη που περιγράφονται από τα ακόλουθα υποστοιχεία.

Κωδικός σφάλματος - ένα μήνυμα που υποδεικνύει τον τύπο του σφάλματος. Προορίζεται για ένα πρόγραμμα που χειρίζεται σφάλματα.

Περιγραφή του σφάλματος - προφορική περιγραφή του είδους του σφάλματος που προορίζεται για ένα άτομο.

Θέση του σφάλματος - το URI του διακομιστή που παρατήρησε το σφάλμα. Χρήσιμο όταν ένα μήνυμα περνά μέσα από μια αλυσίδα κόμβων SOAP για να διευκρινιστεί η φύση του σφάλματος. Οι ενδιάμεσοι κόμβοι SOAP απαιτούνται για την εγγραφή αυτού του στοιχείου από τον διακομιστή SOAP προορισμού.

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

Για παράδειγμα:

xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">

env:MustUnderstand Σφάλμα πρέπει να κατανοήσει το SOAP

Το SOAP έκδοση 1.2 άλλαξε το περιεχόμενο του στοιχείου Όπως περιγράφεται στο

namespace http://www.w3.org/2002/06/soap-envelope, περιλαμβάνει δύο υποχρεωτικά στοιχείακαι τρία προαιρετικά στοιχεία.

Απαιτούμενα στοιχεία.

Κωδικός σφάλματος . Περιέχει ένα απαιτούμενο υποστοιχείο<:value>με κωδικό σφάλματος και προαιρετικό υποστοιχείο , που περιέχει, πάλι, το στοιχείο με διευκρινιστικό κωδικό σφάλματος και στοιχείο , και μετά όλα επαναλαμβάνονται αναδρομικά.

Λόγος λάθους . Περιέχει ένα προαιρετικό χαρακτηριστικό xml: lang, που υποδεικνύει τη γλώσσα του μηνύματος (βλ. Κεφάλαιο Δ) και έναν αυθαίρετο αριθμό ένθετων στοιχείων που περιγράφουν το σφάλμα.

Προαιρετικά στοιχεία.

? - το URI του ενδιάμεσου κόμβου SOAP που παρατήρησε το σφάλμα.

? - ο ρόλος του κόμβου SOAP που παρατήρησε το σφάλμα.

? - περιγραφή του σφάλματος που παρατηρήθηκε κατά την επεξεργασία του σώματος μήνυμα, αλλά όχι τον τίτλο.

Η λίστα 3.2 εμφανίζει ένα μήνυμα σφάλματος που παρουσιάστηκε κατά την προσπάθεια εκτέλεσης μιας διαδικασίας. Το σφάλμα είναι ότι τα ονόματα των ορισμάτων της διαδικασίας είναι γραμμένα λανθασμένα στο μήνυμα SOAP και η διαδικασία δεν μπορεί να τα κατανοήσει.

Λίστα 3.2. Μήνυμα σφάλματος

xmlns:env="http://www.w3.org/2002/06/soap-envelope" xmlns:rpc=’http://www.w3.org/2002/06/soap-rpc’>

env:Αποστολέας

rpc:BadArgumentsc/env:Value>

Ptocessing ETror

xmlns:e="http://www.example.org/faults"> Το №εγώ δεν ταιριάζει 999

Τύποι σφαλμάτων

Η λίστα των κωδικών σφαλμάτων αλλάζει και διευρύνεται συνεχώς. Η έκδοση 1.1 ορίζει τέσσερις τύπους σφαλμάτων.

VersionMismatch - ο χώρος ονομάτων δεν αναγνωρίζεται. Μπορεί να είναι ξεπερασμένο ή το όνομά του μπορεί να είναι ανορθόγραφο.

MustUnderstand - Ένα μπλοκ κεφαλίδας που επισημαίνεται με ένα χαρακτηριστικό mustUnderstand με τιμή 1 δεν συμμορφώνεται με τη σύνταξή του όπως ορίζεται στο σχήμα του εγγράφου.

Πελάτης - το έγγραφο XML που περιέχει το μήνυμα έχει λανθασμένη μορφή και για αυτόν τον λόγο ο διακομιστής δεν μπορεί να το επεξεργαστεί. Ο πελάτης πρέπει να αλλάξει το μήνυμα.

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

Η έκδοση 1.2 ορίζει πέντε τύπους σφαλμάτων.

VersionMismatch - ο χώρος ονομάτων δεν αναγνωρίζεται. Ίσως είναι ξεπερασμένο ή το όνομά του είναι γραμμένο λάθος ή υπάρχει ένα όνομα στο μήνυμα στοιχείο XML, δεν ορίζεται σε αυτόν τον χώρο ονομάτων. Ο διακομιστής γράφει το στοιχείο στην κεφαλίδα απόκρισης , απαριθμώντας ένθετα στοιχεία σωστά ονόματαΧώροι ονομάτων κατανοητοί από τον διακομιστή. Η απόκριση διακομιστή εμφανίζεται στη Λίστα 3.3.

MustUnderstand - Ένα μπλοκ κεφαλίδας που επισημαίνεται με το χαρακτηριστικό mustunderstand που έχει οριστεί σε true δεν συμμορφώνεται με τη σύνταξή του όπως ορίζεται στο σχήμα εγγράφου. Ο διακομιστής γράφει τα ακόλουθα στοιχεία στην κεφαλίδα απόκρισης: , του οποίου το χαρακτηριστικό qname περιέχει το όνομα του εσφαλμένου μπλοκ. Η καταχώριση 3.4 περιέχει ένα παράδειγμα της απάντησης που θα έκανε ο διακομιστής εάν η κεφαλίδα στη Λίστα 3.1 ήταν ανορθόγραφη.

DataEncodingUnknown - το μήνυμα περιείχε ακατανόητα δεδομένα, ίσως ήταν γραμμένο σε άγνωστη κωδικοποίηση.

Αποστολέας - το έγγραφο XML που περιέχει το μήνυμα έχει λανθασμένη μορφή και για το λόγο αυτό ο διακομιστής δεν μπορεί να το επεξεργαστεί. Ο πελάτης πρέπει να αλλάξει το μήνυμα.

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

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

αναλύουν τυπικούς τύπους, και μηνύματα σχετικά με αυτά εμφανίζονται στα στοιχεία , όπως φαίνεται παραπάνω στην Λίστα 3.2.

? Λίστα 3.3. Απόκριση διακομιστή με μήνυμα σφάλματος όπως το VersionMismatch

xmlns:env="http://www.w3.org/2002/06/soap-envelope">

xmlns:upg="http://www.w3.org/2002/06/soap-upgrade">

xmlns:nsl="http://www.w3.org/2002/06/soap-envelope"/>

xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"/>

env:VersionMismatch

Αναντιστοιχία έκδοσης

ListongZ.4. Απόκριση διακομιστή με μήνυμα σφάλματος όπως το MustUnderstand

xmlns:t=’http://some.com/transaction’ />

env:MustUnderstand

Μία ή περισσότερες υποχρεωτικές κεφαλίδες δεν είναι κατανοητές

Λογοτεχνία:

Khabibullin I. Sh. Ανάπτυξη υπηρεσιών Ιστού χρησιμοποιώντας Java. - Αγία Πετρούπολη: BHV-Petersburg, 2003. - 400 σελ.: ill.

Στην πραγματικότητα σήμερα υπάρχει τυπικά πρωτόκολλαΑνταλλαγή δεδομένων XML:

  • XML-RPC– μεταβιβάζετε το πακέτο και υποδεικνύετε ποια μέθοδο στον διακομιστή θέλετε να καλέσετε.
  • ΥΠΟΛΟΙΠΟ- υπάρχουν κάποια αντικείμενα στον διακομιστή. Κάθε αντικείμενο χαρακτηρίζεται από κάποιο είδος αναγνωριστικού. Κάθε στοιχείο έχει τη δική του διεύθυνση url. Μπορείτε να κάνετε τα εξής με οποιοδήποτε στοιχείο: εισαγωγή, διαγραφή, ενημέρωση, επιλογή. απλά στέλνεις απαιτούμενο αίτημαστον διακομιστή (για παράδειγμα, εισαγάγετε ένα τέτοιο στοιχείο). Η ανταλλαγή πελάτη-διακομιστή βασίζεται είτε σε JSON είτε σε XML.

Το SOAP βασίζεται στο RPC (υπηρεσία προσανατολισμένη αρχιτεκτονική, ένα σύνολο από χαλαρά συνδεδεμένες υπηρεσίες που αλληλεπιδρούν μεταξύ τους). Το κύριο πλεονέκτημα του RPC είναι μικρή ποσότητα πόρους δικτύου(σημεία εισόδου) και πολλές εμπλεκόμενες μέθοδοι. Παρά αυτό το πλεονέκτημα, το RPC είναι ένα ξεπερασμένο πρωτόκολλο που έχει μια σειρά από μειονεκτήματα:

  • Δεν είναι δυνατή η επαλήθευση της εγκυρότητας ενός μηνύματος XML-RPC. Το παλιό πρωτόκολλο δημιουργήθηκε πριν από την τυποποίηση των σχημάτων (μέθοδοι επικύρωσης δεδομένων) σε XML. Εκείνοι. Ο διακομιστής δέχεται αιτήματα, πρέπει να διασφαλίσει ότι τα αιτήματα είναι για αυτόν και ότι τα δεδομένα είναι συνεπή. Στο XML-RPC, οι τύποι δεδομένων δηλώνονται για αυτό, αλλά πρόκειται για έλεγχο τύπου δεδομένων και δεν ελέγχεται η συνέπεια δεδομένων (ότι λάβατε μια δομή με όλες τις απαραίτητες παραμέτρους).
  • Δεν μπορείτε να δημιουργήσετε συνδυασμένα μηνύματα.
  • Δεν μπορείτε να χρησιμοποιήσετε χώρο και χρόνο (εμφανίστηκε μετά τη δημιουργία του RPC).
  • Δεν μπορείτε να επεκτείνετε το μήνυμα, π.χ. προσθέστε επιπλέον πληροφορίες.

Όλες αυτές οι ελλείψεις επιλύθηκαν στο XML Schema. Αυτό είναι το βιομηχανικό πρότυπο για την περιγραφή ενός εγγράφου XML. Εκείνοι. είναι ένας τρόπος μοντελοποίησης αυθαίρετων δεδομένων. Ένα σχήμα XML μπορεί να περιγράψει ένα μοντέλο (σχέσεις μεταξύ στοιχείων και χαρακτηριστικών και τη δομή τους), τύπους δεδομένων (χαρακτηρίζει τύπους δεδομένων) και ένα λεξικό (ονόματα στοιχείων και χαρακτηριστικών).

Με βάση όλες τις ελλείψεις του XML-RPC, δημιουργήθηκε το πρωτόκολλο SOAP.

ΣΑΠΟΥΝΙ(Απλό αντικείμενο Πρωτόκολλο πρόσβασης) - πρωτόκολλο πρόσβασης στο αντικείμενο (στο σημείο εισόδου). Σήμερα είναι το κύριο βιομηχανικό πρότυπο για την κατασκευή κατανεμημένων εφαρμογών.

Αντιπροσωπεύει επεκτάσεις στη γλώσσα XML-RPC. Εκείνοι. βασίζεται στην αρχή: 1 σημείο εισόδου και οποιεσδήποτε μέθοδοι. Το ίδιο το πρωτόκολλο όσον αφορά τη μεταφορά (πώς να μεταφέρω δεδομένα) δίνει μεγάλη ποικιλία: SMTP, FTP, HTTP, MSMQ.

Το SOAP αποτελεί τη βάση της υλοποίησης των υπηρεσιών web XML (XML web services). Το μειονέκτημα του SOAP είναι ότι είναι δύσκολο να το μάθεις.

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

Σχήμα XML

Ο σκοπός ενός σχήματος είναι να περιγράψει τη δομή των δεδομένων, δηλ. αυτό που έχουμε. Όλα τα δεδομένα χωρίζονται σε απλούς και σύνθετους τύπους (βαθμωτές και δομές). Ένας απλός τύπος (συμβολοσειρά, αριθμός, boolean, ημερομηνία) δεν θα περιέχει ποτέ τίποτα μέσα. Και μια δομή (αντικείμενο) μπορεί να περιέχει ιδιότητες.

Βασικές λειτουργίες SOAP

  • Όχι μόνο απλή ανταλλαγή πληροφοριών πελάτη-διακομιστή. Αλλά επίσης αυτόματη αναγνώρισηδιακομιστή και αναζητήστε αυτόν τον διακομιστή, π.χ. ο πελάτης μπορεί να μην γνωρίζει τίποτα για τον διακομιστή. Εκείνοι. ο πελάτης αναζητά πρώτα τον διακομιστή, βρίσκει τις κατάλληλες υπηρεσίες, κατανοεί ποιες μέθοδοι υπάρχουν, τι διαθέτει ο διακομιστής και τον καλεί.
  • Ο διακομιστής δημοσιεύει τις πληροφορίες του (τοποθεσία, ποιες μεθόδους υποστηρίζει) έτσι ώστε ο πελάτης να βρει αυτόν τον διακομιστή. Η δημοσίευση πραγματοποιείται στον κατάλογο UDDI.

Δομή μηνυμάτων SOAP:

  • Φάκελος SOAP - περιλαμβάνει ολόκληρο το μήνυμα. Αποτελείται από μια κεφαλίδα και ένα σώμα.
  • Κεφαλίδα SOAP - πρόσθετες πληροφορίες(εξουσιοδότηση, για παράδειγμα).
  • SOAP Body (σώμα) - το ίδιο το μήνυμα.
  • Το SOAP Fault (σφάλμα) είναι μια μέθοδος μετάδοσης ενός σφάλματος από τον διακομιστή στον πελάτη.

WSDL

WSDL(Web Services Description Language) - γλώσσα για την περιγραφή των υπηρεσιών web. Χρησιμοποιείται στο SOAP. Αυτό είναι ένα είδος εγγράφου που περιγράφει τα πάντα: ποιοι χώροι ονομάτων χρησιμοποιήθηκαν, ποια σχήματα δεδομένων χρησιμοποιήθηκαν, ποιοι τύποι μηνυμάτων αναμένει ο διακομιστής από τον πελάτη, ποιοι φάκελοι ανήκουν σε ποια μέθοδο, ποιες μέθοδοι υπάρχουν, σε ποια διεύθυνση να σταλεί κ.λπ. . Στην πραγματικότητα, το WSDL είναι μια υπηρεσία web. Αρκεί ο πελάτης να μελετήσει το περιεχόμενο αυτού του εγγράφου, γνωρίζει ήδη τα πάντα για τον διακομιστή.

Οποιοσδήποτε διακομιστής πρέπει να δημοσιεύει το WSDL.

Το WSDL αποτελείται από μπλοκ:

  • Ορισμός της ίδιας της υπηρεσίας, δηλ. σημείο εισόδου, υποδεικνύεται η θύρα.
  • Μορφή μεθόδων. Το σημείο εισόδου συνδέεται με λειτουργίες, π.χ. ποιες μεθόδους υποστηρίζει; Υποδεικνύεται ο τύπος κλήσης και η μέθοδος μετάδοσης. Μέσα σε κάθε μέθοδο υπάρχει μια εξήγηση για τη μορφή με την οποία μεταδίδονται τα δεδομένα - με τη μορφή SOAP.
  • Μέθοδοι δέσμευσης σε ένα μήνυμα.
  • Περιγραφή των ίδιων των μηνυμάτων.


Συνιστούμε να διαβάσετε

Κορυφή