Οδηγός SOAP Web Services: Τι είναι το πρωτόκολλο SOAP; ΠΑΡΑΔΕΙΓΜΑ

Τι είναι το SOAP;

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

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

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

SOAP Εισαγωγή

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

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

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

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

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

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

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

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

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

SOAP Building Blocks

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

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

SOAP Building Blocks
Δομικά στοιχεία μηνυμάτων SOAP

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

  • Ένα στοιχείο φακέλου που προσδιορίζει το έγγραφο XML ως μήνυμα SOAP – Αυτό είναι το τμήμα που περιέχει το μήνυμα SOAP και χρησιμοποιείται για την ενθυλάκωση όλων των λεπτομερειών στο μήνυμα SOAP. Αυτό είναι το ριζικό στοιχείο στο μήνυμα SOAP.
  • Ένα στοιχείο κεφαλίδας που περιέχει πληροφορίες κεφαλίδας – Το στοιχείο κεφαλίδας μπορεί να περιέχει πληροφορίες όπως διαπιστευτήρια ελέγχου ταυτότητας που μπορούν να χρησιμοποιηθούν από την εφαρμογή κλήσης. Μπορεί επίσης να περιέχει τον ορισμό πολύπλοκων τύπων που θα μπορούσαν να χρησιμοποιηθούν στο μήνυμα 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>
  • Στοιχείο σώματος που περιέχει πληροφορίες κλήσης και απάντησης – Αυτό το στοιχείο περιέχει τα πραγματικά δεδομένα που πρέπει να σταλούν μεταξύ της υπηρεσίας web και της εφαρμογής κλήσης. Παρακάτω είναι ένα παράδειγμα υπηρεσίας ιστού 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. Το μήνυμά μας περιέχει μια υπηρεσία web που έχει το όνομα "Guru99WebService".
  4. Το "Guru99Webservice" δέχεται μια παράμετρο του τύπου 'int' και έχει το όνομα του TutorialID.

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

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

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

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

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

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

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

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

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

<?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, η απάντηση που επιστρέφεται μπορεί να είναι είτε 2 μορφών που είναι επιτυχής απάντηση ή απάντηση σφάλματος. Όταν δημιουργείται μια επιτυχία, η απάντηση από τον διακομιστή θα είναι πάντα ένα μήνυμα SOAP. Αλλά εάν δημιουργηθούν σφάλματα SOAP, επιστρέφονται ως σφάλματα "HTTP 500".

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

  1. – Αυτός είναι ο κωδικός που δηλώνει τον κωδικό του σφάλματος. Ο κωδικός σφάλματος μπορεί να είναι οποιαδήποτε από τις παρακάτω τιμές
    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

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

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

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

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

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

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

Τώρα σε αυτό το σεμινάριο SoapUI, ας δούμε ένα πρακτικό παράδειγμα SOAP,

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

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

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

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

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

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

Η πρώτη προϋπόθεση για τη ρύθμιση της εφαρμογής Web Service μας, η οποία μπορεί να γίνει ακολουθώντας τα παρακάτω βήματα.

Βεβαιωθείτε ότι έχετε εγκαταστήσει το Visual Studio 2013 στο σύστημά σας για αυτό το παράδειγμα.

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

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

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

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

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

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

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

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

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

Θα προσθέσουμε ένα αρχείο υπηρεσίας Web στο έργο μας

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

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

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

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

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

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

Επεξήγηση κώδικα:

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

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

Παραγωγή:

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

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

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

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

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

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

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

Επεξήγηση κώδικα:

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

Παράδειγμα μηνύματος 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>

Επεξήγηση κώδικα:

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

Σύνοψη

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