Εκμάθηση Υπηρεσιών Ιστού SOAP: Τι είναι το Πρωτόκολλο SOAP;

⚡ Έξυπνη Σύνοψη

Το SOAP (Simple Object Access Protocol - Απλό Πρωτόκολλο Πρόσβασης Αντικειμένων) είναι ένα πρωτόκολλο που βασίζεται σε XML για την πρόσβαση σε διαδικτυακές υπηρεσίες μέσω HTTP. Αυτός ο πόρος εξηγεί τα δομικά στοιχεία του SOAP, τη δομή μηνύματος, τα στοιχεία περιβλήματος και σφάλματος, το μοντέλο επικοινωνίας και ένα πρακτικό παράδειγμα διαδικτυακής υπηρεσίας ASMX.

  • 📦 Βασικό Πρωτόκολλο: Το SOAP είναι ένα πρωτόκολλο ανταλλαγής μηνυμάτων που βασίζεται σε XML και είναι ανεξάρτητο από τη μεταφορά, το οποίο επιτρέπει σε εφαρμογές που βασίζονται σε διαφορετικές γλώσσες να ανταλλάσσουν δεδομένα μέσω HTTP.
  • 🧱 Δομικά στοιχεία: Ένα μήνυμα SOAP αποτελείται από έναν Φάκελο, μια προαιρετική Κεφαλίδα, ένα Σώμα και ένα προαιρετικό στοιχείο Σφάλματος.
  • ✉️ Στοιχείο φακέλου: Ο υποχρεωτικός φάκελος ρίζας περικλείει το μήνυμα και σηματοδοτεί την αρχή και το τέλος του στην εφαρμογή-πελάτης.
  • 🔁 Μοντέλο επικοινωνίας: Ο πελάτης ομαδοποιεί ένα αίτημα σε ένα μήνυμα SOAP. Ο διακομιστής το αποομαδοποιεί και επιστρέφει μια απόκριση SOAP, μέσω HTTP.
  • Πρακτικό παράδειγμα: Μια υπηρεσία web ASMX στο Visual Studio δημιουργεί αυτόματα τα μηνύματα αιτήματος και απόκρισης SOAP για τον καλούντα πελάτη.

Τι είναι το πρωτόκολλο SOAP

Τι είναι το SOAP;

Το SOAP είναι ένα πρωτόκολλο που βασίζεται σε XML για την πρόσβαση σε υπηρεσίες ιστού μέσω HTTP. Έχει ορισμένες προδιαγραφές που θα μπορούσαν να χρησιμοποιηθούν σε όλες τις εφαρμογές.

Το SOAP είναι γνωστό ως Simple Object Access Protocol, αλλά αργότερα συντομεύτηκε σε SOAP v1.2. Το SOAP είναι ένα πρωτόκολλο ή, με άλλα λόγια, είναι ένας ορισμός του πώς οι υπηρεσίες ιστού επικοινωνούν μεταξύ τους ή επικοινωνούν με εφαρμογές-πελάτες που τις καλούν.

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

SOAP Εισαγωγή

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

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

Μία από τις μεθόδους που χρησιμοποιούνται για την καταπολέμηση αυτής της πολυπλοκότητας είναι η χρήση XML (Extensible Markup Language) ως η ενδιάμεση γλώσσα για την ανταλλαγή δεδομένων μεταξύ εφαρμογών.

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

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

Το SOAP σχεδιάστηκε για να λειτουργεί με XML μέσω HTTP και έχει κάποιο είδος προδιαγραφών που θα μπορούσε να χρησιμοποιηθεί σε όλες τις εφαρμογές. Θα εξετάσουμε περαιτέρω λεπτομέρειες για το πρωτόκολλο SOAP στα επόμενα κεφάλαια.

Πλεονεκτήματα του SOAP

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

  • Όταν αναπτυχθείping Για τις υπηρεσίες ιστού που βασίζονται σε SOAP, χρειάζεστε κάποια γλώσσα που να μπορεί να χρησιμοποιηθεί για την επικοινωνία των υπηρεσιών ιστού με εφαρμογές-πελάτες. Το SOAP είναι το τέλειο μέσο που αναπτύχθηκε για την επίτευξη αυτού του σκοπού. Αυτό το πρωτόκολλο συνιστάται επίσης από την κοινοπραξία W3C, η οποία είναι το διοικητικό όργανο για όλα τα πρότυπα ιστού.
  • Το SOAP είναι ένα ελαφρύ πρωτόκολλο που χρησιμοποιείται για την ανταλλαγή δεδομένων μεταξύ εφαρμογών. Σημειώστε τη λέξη-κλειδί 'φωςΔεδομένου ότι ο προγραμματισμός SOAP βασίζεται στη γλώσσα XML, η οποία από μόνη της είναι μια ελαφριά γλώσσα ανταλλαγής δεδομένων, το SOAP ως πρωτόκολλο εμπίπτει επίσης στην ίδια κατηγορία.
  • Το SOAP έχει σχεδιαστεί ώστε να είναι ανεξάρτητο από πλατφόρμα και είναι επίσης σχεδιασμένο να είναι ανεξάρτητο από λειτουργικό σύστημα. Έτσι, το πρωτόκολλο SOAP μπορεί να λειτουργήσει με οποιαδήποτε εφαρμογή που βασίζεται σε γλώσσα προγραμματισμού και στις δύο περιπτώσεις. Windows και Linux πλατφόρμες.
  • Λειτουργεί με το πρωτόκολλο HTTP – Το SOAP λειτουργεί με το πρωτόκολλο HTTP, το οποίο είναι το προεπιλεγμένο πρωτόκολλο που χρησιμοποιείται από όλες τις εφαρμογές ιστού. Επομένως, δεν απαιτείται καμία προσαρμογή για την εκτέλεση των υπηρεσιών ιστού που βασίζονται στο πρωτόκολλο SOAP ώστε να λειτουργούν στον Παγκόσμιο Ιστό.

SOAP Building Blocks

Η προδιαγραφή SOAP ορίζει κάτι που είναι γνωστό ως "Μήνυμα SOAP", το οποίο είναι αυτό που αποστέλλεται στην υπηρεσία web και στην εφαρμογή-πελάτη.

Το παρακάτω διάγραμμα αρχιτεκτονικής SOAP δείχνει τα διάφορα δομικά στοιχεία ενός μηνύματος SOAP.

SOAP Building Blocks

Το μήνυμα SOAP δεν είναι παρά ένα απλό έγγραφο XML που έχει τα παρακάτω στοιχεία.

  • An Φάκελος στοιχείο που προσδιορίζει το έγγραφο XML ως μήνυμα SOAP – Αυτό είναι το μέρος που περιέχει το μήνυμα SOAP και χρησιμοποιείται για να ενσωματώσει όλες τις λεπτομέρειες στο μήνυμα SOAP. Αυτό είναι το ριζικό στοιχείο στο μήνυμα SOAP.
  • A επικεφαλίδα Στοιχείο που περιέχει πληροφορίες κεφαλίδας – Το στοιχείο κεφαλίδας μπορεί να περιέχει πληροφορίες όπως διαπιστευτήρια ελέγχου ταυτότητας, τα οποία μπορούν να χρησιμοποιηθούν από την εφαρμογή που καλεί. Μπορεί επίσης να περιέχει τον ορισμό σύνθετων τύπων που θα μπορούσαν να χρησιμοποιηθούν στο μήνυμα SOAP. Από προεπιλογή, το μήνυμα SOAP μπορεί να περιέχει παραμέτρους που θα μπορούσαν να είναι απλών τύπων, όπως συμβολοσειρές και αριθμοί, αλλά μπορούν επίσης να είναι ένας σύνθετος τύπος αντικειμένου.

Ένα απλό παράδειγμα υπηρεσίας SOAP ενός σύνθετου τύπου φαίνεται παρακάτω. Ας υποθέσουμε ότι θέλαμε να στείλουμε έναν δομημένο τύπο δεδομένων που είχε έναν συνδυασμό ενός "Όνομα Εκπαιδευτικού Οδηγού" και ενός "Εκπαιδευτικού Οδηγού". Descriptιόν", τότε θα ορίζαμε τον σύνθετο τύπο όπως φαίνεται παρακάτω. Ο σύνθετος τύπος ορίζεται από την ετικέτα στοιχείου Όλα τα απαιτούμενα στοιχεία της δομής μαζί με τους αντίστοιχους τύπους δεδομένων τους ορίζονται στη συνέχεια στη συλλογή σύνθετων τύπων.

<xsd:complexType>
   <xsd:sequence>
      <xsd:element name="Tutorial Name" type="string"/>
      <xsd:element name="Tutorial Description" type="string"/>
   </xsd:sequence>
</xsd:complexType>

A Σώμα στοιχείο που περιέχει πληροφορίες κλήσης και απόκρισης – Αυτό το στοιχείο περιέχει τα πραγματικά δεδομένα που πρέπει να αποσταλούν μεταξύ της διαδικτυακής υπηρεσίας και της εφαρμογής που καλεί. Παρακάτω είναι ένα παράδειγμα διαδικτυακής υπηρεσίας SOAP του σώματος SOAP που λειτουργεί στην πραγματικότητα στον σύνθετο τύπο που ορίζεται στην ενότητα κεφαλίδας. Ακολουθεί η απόκριση του ονόματος του εκπαιδευτικού οδηγού και του εκπαιδευτικού οδηγού. Descriptιόν που αποστέλλεται στην εφαρμογή κλήσης που καλεί αυτήν την υπηρεσία web.

<soap:Body>
   <GetTutorialInfo>
      <TutorialName>Web Services</TutorialName>
      <TutorialDescription>All about web services</TutorialDescription>
   </GetTutorialInfo>
</soap:Body>

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

Ένα πράγμα που πρέπει να σημειωθεί είναι ότι τα μηνύματα SOAP δημιουργούνται συνήθως αυτόματα από την υπηρεσία web όταν καλείται.

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

Όπως συζητήθηκε στο προηγούμενο θέμα αυτού του σεμιναρίου SOAP, ένα απλό μήνυμα SOAP έχει τα ακόλουθα στοιχεία:

  • Το στοιχείο Φάκελος
  • Το στοιχείο κεφαλίδας, και
  • Το στοιχείο του σώματος
  • Το στοιχείο σφάλματος (Προαιρετικό)

Ας δούμε ένα παράδειγμα παρακάτω ενός απλού μηνύματος SOAP και ας δούμε τι κάνει στην πραγματικότητα κάθε στοιχείο.

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

  1. Όπως φαίνεται από το παραπάνω μήνυμα SOAP, το πρώτο μέρος του μηνύματος SOAP είναι το στοιχείο φακέλου που χρησιμοποιείται για να ενθυλακώσει ολόκληρο το μήνυμα SOAP.
  2. Το επόμενο στοιχείο είναι το σώμα SOAP που περιέχει τις λεπτομέρειες του πραγματικού μηνύματος.
  3. Το μήνυμά μας περιέχει μια διαδικτυακή υπηρεσία που έχει το όνομα "Guru99Υπηρεσία Ιστού”.
  4. Ο "GuruΤο 99Webservice” δέχεται μια παράμετρο του τύπου 'int' και έχει το όνομα TutorialID.

Τώρα, το παραπάνω μήνυμα SOAP θα περάσει μεταξύ της υπηρεσίας web και της εφαρμογής πελάτη.

Μπορείτε να δείτε πόσο χρήσιμες είναι οι παραπάνω πληροφορίες για την εφαρμογή-πελάτη. Το μήνυμα SOAP ενημερώνει την εφαρμογή-πελάτη για το όνομα της υπηρεσίας Web, τις παραμέτρους που αναμένει και τον τύπο κάθε παραμέτρου που λαμβάνει η υπηρεσία web.

Στοιχείο φακέλου SOAP

Το πρώτο κομμάτι του δομικού στοιχείου είναι το SOAP Envelope.

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

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

Τα ακόλουθα σημεία μπορούν να σημειωθούν στο στοιχείο φακέλου SOAP.

  • Κάθε μήνυμα SOAP πρέπει να έχει ένα βασικό στοιχείο Envelope. Είναι απολύτως υποχρεωτικό για ένα μήνυμα SOAP να έχει ένα στοιχείο envelope.
  • Κάθε στοιχείο φακέλου πρέπει να έχει τουλάχιστον ένα στοιχείο σώματος σαπουνιού.
  • Εάν ένα στοιχείο Φάκελος περιέχει ένα στοιχείο κεφαλίδας, δεν πρέπει να περιέχει περισσότερα από ένα και πρέπει να εμφανίζεται ως το πρώτο θυγατρικό του Φάκελου, πριν από το κύριο στοιχείο.
  • Ο φάκελος αλλάζει όταν αλλάζουν οι εκδόσεις SOAP.
  • Ένας επεξεργαστής SOAP συμβατός με v1.1 δημιουργεί ένα σφάλμα κατά τη λήψη ενός μηνύματος που περιέχει τον χώρο ονομάτων φακέλου v1.2.
  • Ένας επεξεργαστής SOAP συμβατός με v1.2 δημιουργεί σφάλμα Version Mismatch εάν λάβει ένα μήνυμα που δεν περιλαμβάνει τον χώρο ονομάτων φακέλου v1.2.

Παρακάτω είναι ένα παράδειγμα SOAP API της έκδοσης 1.2 του στοιχείου SOAP envelope.

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2001/12/soap-envelope" SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
   <soap:Body>
      <Guru99WebService xmlns="http://tempuri.org/">
         <TutorialID>int</TutorialID>
      </Guru99WebService>
   </soap:Body>
</SOAP-ENV:Envelope>

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

Όταν υποβάλλεται ένα αίτημα σε μια υπηρεσία ιστού SOAP, η απόκριση που επιστρέφεται μπορεί να έχει δύο μορφές, οι οποίες είναι μια επιτυχημένη απόκριση ή μια απόκριση σφάλματος. Όταν δημιουργείται μια επιτυχημένη απόκριση, η απόκριση από τον διακομιστή θα είναι πάντα ένα μήνυμα SOAP. Αλλά εάν δημιουργηθούν σφάλματα SOAP, αυτά επιστρέφονται ως σφάλματα "HTTP 500".

Το μήνυμα SOAP Fault αποτελείται από τα ακόλουθα στοιχεία.

  1. <faultCode> – Αυτός είναι ο κωδικός που προσδιορίζει τον κωδικό του σφάλματος. Ο κωδικός σφάλματος μπορεί να έχει οποιαδήποτε από τις παρακάτω τιμές:
    1. SOAP-ENV:VersionMismatch – Αυτό συμβαίνει όταν συναντάται ένας μη έγκυρος χώρος ονομάτων για το στοιχείο SOAP Envelope.
    2. SOAP-ENV:MustUnderstand – Δεν έγινε κατανοητό ένα άμεσο θυγατρικό στοιχείο του στοιχείου Header, με το χαρακτηριστικό mustUnderstand σε "1".
    3. SOAP-ENV:Πελάτης – Το μήνυμα σχηματίστηκε λανθασμένα ή περιείχε λανθασμένες πληροφορίες.
    4. SOAP-ENV:Διακομιστής – Παρουσιάστηκε πρόβλημα με τον διακομιστή, επομένως το μήνυμα δεν μπορούσε να προχωρήσει.
  2. – Αυτό είναι το μήνυμα κειμένου που δίνει μια λεπτομερή περιγραφή του σφάλματος.
  3. (Προαιρετικός) – Αυτή είναι μια συμβολοσειρά κειμένου που υποδεικνύει ποιος προκάλεσε το σφάλμα.
  4. (Προαιρετικός) – Αυτό είναι το στοιχείο για μηνύματα σφάλματος για συγκεκριμένη εφαρμογή. Έτσι, η εφαρμογή θα μπορούσε να έχει ένα συγκεκριμένο μήνυμα σφάλματος για διαφορετικά σενάρια επιχειρηματικής λογικής.

Παράδειγμα για το μήνυμα σφάλματος

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

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
      <faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode>
      <faultstring xsi:type="xsd:string">
         Failed to locate method (GetTutorialID) in class (GetTutorial)
      </faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Παραγωγή:

Όταν εκτελέσετε τον παραπάνω κώδικα, θα εμφανιστεί το σφάλμα όπως "Αποτυχία εντοπισμού της μεθόδου (GetTutorialID) στην κλάση (GetTutorial)".

Μοντέλο επικοινωνίας SOAP

Όλη η επικοινωνία μέσω SOAP γίνεται μέσω του πρωτοκόλλου HTTP. Πριν από το SOAP, πολλά διαδικτυακές υπηρεσίες χρησιμοποίησε το τυπικό στυλ RPC (Remote Procedure Call) για επικοινωνία. Αυτός ήταν ο απλούστερος τύπος επικοινωνίας, αλλά είχε πολλούς περιορισμούς.

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

  • GetEmployee – Αυτό θα λάμβανε όλα τα στοιχεία του υπαλλήλου.
  • SetEmployee – Αυτό θα καθόριζε ανάλογα την αξία των λεπτομερειών, όπως το τμήμα, ο μισθός κ.λπ. ενός υπαλλήλου.

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

Μοντέλο επικοινωνίας SOAP σε στυλ RPC

Το παραπάνω μοντέλο επικοινωνίας έχει τους ακόλουθους σοβαρούς περιορισμούς:

  1. Δεν είναι ανεξάρτητο από τη γλώσσα – Ο διακομιστής που φιλοξενεί τις μεθόδους θα είναι σε μια συγκεκριμένη γλώσσα προγραμματισμού και κανονικά οι κλήσεις προς τον διακομιστή θα γίνονται μόνο σε αυτήν τη γλώσσα προγραμματισμού.
  2. Όχι το τυπικό πρωτόκολλο – Όταν γίνεται κλήση στην απομακρυσμένη διαδικασία, η κλήση δεν πραγματοποιείται μέσω του τυπικού πρωτοκόλλου. Αυτό ήταν ένα ζήτημα, καθώς ως επί το πλείστον όλη η επικοινωνία μέσω του ιστού έπρεπε να γίνει μέσω του πρωτοκόλλου HTTP.
  3. firewalls – Δεδομένου ότι οι κλήσεις RPC δεν πραγματοποιούνται μέσω του κανονικού πρωτοκόλλου, πρέπει να είναι ανοιχτές ξεχωριστές θύρες στον διακομιστή για να επιτρέπεται στον πελάτη να επικοινωνεί με τον διακομιστή. Κανονικά όλα τα τείχη προστασίας θα μπλοκάρουν αυτού του είδους την κίνηση και γενικά απαιτούνταν πολλές ρυθμίσεις παραμέτρων για να διασφαλιστεί ότι αυτό το είδος επικοινωνίας μεταξύ του πελάτη και του διακομιστή θα λειτουργούσε.

Για να ξεπεραστούν όλοι οι περιορισμοί που αναφέρθηκαν παραπάνω, το SOAP θα χρησιμοποιούσε το παρακάτω μοντέλο επικοινωνίας.

Μοντέλο επικοινωνίας SOAP Στυλ SOAP

  1. Ο πελάτης θα μορφοποιούσε τις πληροφορίες σχετικά με την κλήση της διαδικασίας και τυχόν ορίσματα σε ένα μήνυμα SOAP και θα το έστελνε στον διακομιστή ως μέρος ενός αιτήματος HTTP. Αυτή η διαδικασία ενθυλάκωσης των δεδομένων σε ένα μήνυμα SOAP ήταν γνωστή ως Marshalling.
  2. Στη συνέχεια, ο διακομιστής θα ξετυλίγει το μήνυμα που έστειλε ο πελάτης, θα βλέπει τι ζήτησε ο πελάτης και στη συνέχεια θα στέλνει την κατάλληλη απάντηση πίσω στον πελάτη ως μήνυμα SOAP. Η πρακτική της αποτύλιξηςping Ένα αίτημα που αποστέλλεται από τον πελάτη είναι γνωστό ως Αποστρατολόγηση.

Πρακτικό παράδειγμα SOAP

Τώρα σε αυτό SoapUI Στο σεμινάριο, ας δούμε ένα πρακτικό παράδειγμα SOAP. Πιθανώς ένας από τους καλύτερους τρόπους για να δείτε πώς δημιουργούνται τα μηνύματα SOAP είναι να δείτε μια διαδικτυακή υπηρεσία σε δράση.

Αυτό το θέμα θα εξετάσει τη χρήση του Microsoft.Net πλαίσιο για τη δημιουργία μιας υπηρεσίας web ASMX. Αυτός ο τύπος υπηρεσίας web υποστηρίζει τόσο την έκδοση 1.1 όσο και την έκδοση 1.2 SOAP.

Οι υπηρεσίες web ASMX δημιουργούν αυτόματα το Γλώσσα ορισμού υπηρεσίας Ιστού (WSDL) έγγραφο. Αυτό το έγγραφο WSDL απαιτείται από την εφαρμογή πελάτη που καλεί, έτσι ώστε η εφαρμογή να γνωρίζει τι μπορεί να κάνει η υπηρεσία web.

Στο παράδειγμά μας, θα δημιουργήσουμε μια απλή διαδικτυακή υπηρεσία, η οποία θα χρησιμοποιηθεί για να επιστρέψει μια συμβολοσειρά στην εφαρμογή που καλεί την διαδικτυακή υπηρεσία. Αυτή η διαδικτυακή υπηρεσία θα φιλοξενείται σε ένα Asp.Net εφαρμογή ιστού. Στη συνέχεια, θα καλέσουμε την υπηρεσία web και θα δούμε το αποτέλεσμα που επιστρέφεται από την υπηρεσία web.

Το Visual Studio θα μας δείξει επίσης ποιο είναι το μήνυμα SOAP που μεταδίδεται μεταξύ της υπηρεσίας web και της εφαρμογής που την καλεί. Η πρώτη προϋπόθεση για τη ρύθμιση της εφαρμογής υπηρεσίας web είναι η τήρηση των παρακάτω βημάτων. Για αυτό το παράδειγμα, βεβαιωθείτε ότι έχετε εγκαταστήσει το Visual Studio 2013 στο σύστημά σας.

Βήμα 1) Το πρώτο βήμα είναι να δημιουργήσετε μια κενή εφαρμογή Web ASP.Net. Από το Visual Studio 2013, κάντε κλικ στην επιλογή μενού Αρχείο->Νέο έργο.

Παράδειγμα μηνύματος SOAP για νέο έργο

Μόλις κάνετε κλικ στην επιλογή Νέο έργο, το Visual Studio θα σας δώσει ένα άλλο παράθυρο διαλόγου για να επιλέξετε τον τύπο του έργου και να δώσετε τις απαραίτητες λεπτομέρειες του έργου. Αυτό εξηγείται στο επόμενο βήμα.

Βήμα 2) Στο στάδιο αυτό,

  1. Φροντίστε πρώτα να επιλέξετε το C# Πρότυπο ιστού για εφαρμογή ιστού ASP.NET. Το έργο πρέπει να είναι αυτού του τύπου για να δημιουργηθεί ένα έργο υπηρεσιών SOAP. Επιλέγοντας αυτήν την επιλογή, το Visual Studio θα εκτελέσει στη συνέχεια τα απαραίτητα βήματα για την προσθήκη των απαραίτητων αρχείων που απαιτούνται από οποιαδήποτε εφαρμογή ιστού.
  2. Δώστε ένα όνομα για το έργο σας, το οποίο στην περίπτωσή μας έχει δοθεί ως webservice.asmx. Στη συνέχεια, βεβαιωθείτε ότι έχετε δώσει μια τοποθεσία όπου θα αποθηκευτούν τα αρχεία του έργου.

Λεπτομέρειες έργου παραδείγματος μηνύματος SOAP

Μόλις τελειώσετε, θα δείτε το αρχείο έργου που δημιουργήθηκε στην εξερεύνηση λύσεων στο Visual Studio 2013.

Παράδειγμα μηνύματος SOAP για εξερεύνηση λύσης

Βήμα 3) Σε αυτό το βήμα, θα προσθέσουμε ένα αρχείο υπηρεσίας ιστού στο έργο μας.

  1. Αρχικά, κάντε δεξί κλικ στο αρχείο του έργου όπως φαίνεται παρακάτω.

Παράδειγμα μηνύματος SOAP με δεξί κλικ στο έργο

  1. Μόλις κάνετε δεξί κλικ στο αρχείο έργου, έχετε την ευκαιρία να επιλέξετε την επιλογή "Προσθήκη->Υπηρεσία Ιστού (ASMX)" για να προσθέσετε ένα αρχείο υπηρεσίας ιστού. Απλώς δώστε ένα όνομα Υπηρεσίας Εκμάθησης για το αρχείο ονόματος υπηρεσίας ιστού.

Παράδειγμα μηνύματος SOAP προσθήκη υπηρεσίας ιστού

Βήμα 4) Προσθέστε τον ακόλουθο κώδικα στο αρχείο Asmx της Υπηρεσίας Εκμάθησης.

Παράδειγμα μηνύματος SOAP κώδικα υπηρεσίας ιστού

Code Επεξήγηση:

  1. Αυτή η γραμμή κώδικα παρέχει ένα όνομα για το αρχείο της υπηρεσίας Ιστού σας. Αυτό είναι ένα σημαντικό βήμα γιατί δίνει τη δυνατότητα στην εφαρμογή πελάτη να καλέσει την υπηρεσία web μέσω του ονόματος της υπηρεσίας web.
  2. Συνήθως ένα αρχείο κλάσης χρησιμοποιείται για την ενθυλάκωση της λειτουργικότητας μιας υπηρεσίας web. Έτσι το αρχείο κλάσης θα έχει τον ορισμό όλων των μεθόδων web που θα παρέχουν κάποια λειτουργικότητα στην εφαρμογή πελάτη.
  3. Εδώ, το [WebMethod] είναι γνωστό ως ένα χαρακτηριστικό που περιγράφει μια συνάρτηση. Το επόμενο βήμα δημιουργεί μια συνάρτηση που ονομάζεται "Guru99WebService", αλλά με την συμπερίληψη αυτού του βήματος προσθήκης ενός χαρακτηριστικού [WebMethod], διασφαλίζεται ότι αυτή η μέθοδος μπορεί να κληθεί από μια εφαρμογή-πελάτης. Εάν αυτό το χαρακτηριστικό δεν υπάρχει, τότε η μέθοδος δεν μπορεί ποτέ να κληθεί από μια εφαρμογή-πελάτης.
  4. Εδώ ορίζουμε μια συνάρτηση που ονομάζεται 'Guru99WebService', η οποία θα χρησιμοποιηθεί για την επιστροφή μιας συμβολοσειράς στην εφαρμογή-πελάτης που την καλεί. Αυτή η συνάρτηση είναι μια υπηρεσία ιστού που μπορεί να κληθεί από οποιαδήποτε εφαρμογή-πελάτης.
  5. Χρησιμοποιούμε την εντολή return για να επιστρέψουμε τη συμβολοσειρά "Αυτό είναι ένα Guru99 υπηρεσία Web" στην εφαρμογή-πελάτη.

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

Παραγωγή:

Παράδειγμα εξόδου μηνύματος SOAP

  • Το αποτέλεσμα δείχνει ξεκάθαρα ότι το όνομα της διαδικτυακής μας υπηρεσίας είναι "Guru99 Web Service”, το οποίο είναι το αποτέλεσμα της ονοματοδοσίας της διαδικτυακής μας υπηρεσίας.
  • Μπορούμε επίσης να δούμε ότι μπορούμε να καλέσουμε την υπηρεσία web. Αν κάνουμε κλικ στο κουμπί "Κλήση", θα λάβουμε την παρακάτω απάντηση στο πρόγραμμα περιήγησης web.

Παράδειγμα μηνύματος SOAP απόκριση κλήσης

Η παραπάνω έξοδος:

  • Δείχνει ξεκάθαρα ότι καλώντας τη μέθοδο web, η συμβολοσειρά "This is a GuruΕπιστρέφεται η φράση "99 Web service".
  • Το Visual Studio σάς επιτρέπει επίσης να προβάλετε το αίτημα και την απόκριση μηνύματος SOAP που δημιουργείται όταν καλείται η παραπάνω υπηρεσία web.

Το αίτημα SOAP που δημιουργείται όταν καλείται η υπηρεσία web φαίνεται παρακάτω.

Παράδειγμα μηνύματος SOAP Αίτημα SOAP

Code Επεξήγηση:

  1. Το πρώτο μέρος του μηνύματος SOAP είναι το στοιχείο περιβλήματος, το οποίο συζητήθηκε στα προηγούμενα κεφάλαια. Αυτό είναι το στοιχείο ενθυλάκωσης που υπάρχει σε κάθε μήνυμα SOAP.
  2. Το σώμα SOAP είναι το επόμενο στοιχείο και περιέχει τις πραγματικές λεπτομέρειες του μηνύματος SOAP.
  3. Το τρίτο μέρος είναι το στοιχείο που καθορίζει ότι θέλουμε να καλέσουμε την υπηρεσία η οποία ονομάζεται 'Guru99Υπηρεσία Ιστού'.

Παράδειγμα μηνύματος SOAP Απόκριση SOAP

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <Guru99WebServiceResponse xmlns="http://tempuri.org/">
         <Guru99WebServiceResult>string</Guru99WebServiceResult>
      </Guru99WebServiceResponse>
   </soap:Body>
</soap:Envelope>

Code Επεξήγηση:

  1. Το πρώτο μέρος του μηνύματος SOAP είναι το στοιχείο περιβλήματος, το οποίο συζητήθηκε στα προηγούμενα κεφάλαια. Αυτό είναι το στοιχείο ενθυλάκωσης που υπάρχει σε κάθε μήνυμα SOAP.
  2. Το σώμα SOAP είναι το επόμενο στοιχείο και περιέχει τις πραγματικές λεπτομέρειες του μηνύματος SOAP.
  3. Το ενδιαφέρον κομμάτι που θα δείτε τώρα είναι το χαρακτηριστικό 'string'. Αυτό ενημερώνει την εφαρμογή-πελάτης ότι η υπηρεσία web που καλείται επιστρέφει ένα αντικείμενο του τύπου string. Αυτό είναι πολύ χρήσιμο γιατί διαφορετικά η εφαρμογή-πελάτης δεν θα γνώριζε τι επιστρέφει η υπηρεσία web.

Συχνές Ερωτήσεις

Η Τεχνητή Νοημοσύνη μπορεί να δημιουργήσει αιτήματα SOAP από φυσική γλώσσα, να επικυρώσει φακέλους σε σχέση με ένα WSDL και να εντοπίσει λανθασμένα ή ύποπτα μηνύματα. Σε παλαιότερα εταιρικά συστήματα, οι βοηθοί Τεχνητής Νοημοσύνης βοηθούν επίσης τους προγραμματιστές να κατανοήσουν και να συντηρήσουν παλαιότερες υπηρεσίες SOAP πιο γρήγορα.

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

Το SOAP είναι ένα αυστηρό πρωτόκολλο που βασίζεται σε XML με ενσωματωμένα πρότυπα για ασφάλεια και χειρισμό σφαλμάτων. Το REST είναι ένα ελαφρύτερο αρχιτεκτονικό στυλ που χρησιμοποιεί μεθόδους HTTP και συχνά JSON. Το SOAP είναι κατάλληλο για επίσημες εταιρικές ενσωματώσεις, ενώ το REST είναι δημοφιλές για δημόσια API ιστού.

Ναι. Παρόλο που το REST κυριαρχεί στα νέα δημόσια API, το SOAP παραμένει κοινό σε εταιρικά, τραπεζικά, συστήματα πληρωμών και τηλεπικοινωνιών που απαιτούν ισχυρή ασφάλεια, επίσημη συμφωνία.tracts (WSDL) και αξιόπιστη ανταλλαγή μηνυμάτων. Πολλές παλαιές ενσωματώσεις εξακολουθούν να εξαρτώνται από τις υπηρεσίες ιστού SOAP.

Συνοψίστε αυτήν την ανάρτηση με: