SOAP tīmekļa pakalpojumu apmācība: kas ir SOAP protokols? PIEMĒRS

Satura rādītājs:

Anonim

Kas ir ziepes?

SOAP ir XML protokols, lai piekļūtu tīmekļa pakalpojumiem, izmantojot HTTP. Tam ir kāda specifikācija, kuru var izmantot visās lietojumprogrammās.

SOAP ir pazīstams kā vienkāršs objekta piekļuves protokols, taču vēlāk tas tika saīsināts līdz SOAP v1.2. SOAP ir protokols vai, citiem vārdiem sakot, ir definīcija tam, kā tīmekļa pakalpojumi runā savā starpā vai runā ar klientu lietojumprogrammām, kuras tos izsauc.

SOAP tika izstrādāta kā starpvaloda, lai uz dažādām programmēšanas valodām balstītas lietojumprogrammas varētu viegli sarunāties savā starpā un izvairīties no ārkārtējiem attīstības centieniem.

Šajā SOAP tīmekļa pakalpojumu apmācībā jūs uzzināsiet

  • ZIEPES Ievads
  • Ziepju priekšrocības
  • ZIEPES Celtniecības bloki
  • SOAP ziņojumu struktūra
  • Ziepju aploksnes elements
  • Ziepju komunikācijas modelis
  • Praktisks ziepju piemērs

ZIEPES Ievads

Mūsdienu pasaulē ir ļoti daudz lietojumprogrammu, kas balstītas uz dažādām programmēšanas valodām. Piemēram, varētu būt tīmekļa lietojumprogramma, kas izstrādāta Java, cita - .Net un vēl viena - PHP.

Datu apmaiņa starp lietojumprogrammām ir izšķiroša mūsdienu tīkla pasaulē. Bet datu apmaiņa starp šīm neviendabīgajām lietojumprogrammām būtu sarežģīta. Tā būs koda sarežģītība, lai veiktu šo datu apmaiņu.

Viena no metodēm, kas tiek izmantota šīs sarežģītības apkarošanai, ir XML (Extensible Markup Language) izmantošana kā starpvaloda datu apmaiņai starp lietojumprogrammām.

Katra programmēšanas valoda var saprast XML iezīmēšanas valodu. Tādējādi XML tika izmantots kā pamata datu apmaiņas līdzeklis.

Bet nav standarta specifikāciju XML izmantošanai visās programmēšanas valodās datu apmaiņai. Tajā ienāk SOAP programmatūra.

SOAP tika izstrādāts darbam ar XML, izmantojot HTTP, un tam ir sava veida specifikācija, kuru var izmantot visās lietojumprogrammās. Turpmākajās nodaļās mēs izpētīsim sīkāku informāciju par SOAP protokolu.

Ziepju priekšrocības

SOAP ir protokols, ko izmanto datu apmaiņai starp lietojumprogrammām. Tālāk ir minēti daži iemesli, kāpēc tiek izmantota SOAP.

  • Izstrādājot uz SOAP balstītus tīmekļa pakalpojumus, jums ir jābūt valodai, kuru var izmantot tīmekļa pakalpojumiem, lai runātu ar klientu lietojumprogrammām. SOAP ir ideāls līdzeklis, kas tika izstrādāts, lai sasniegtu šo mērķi. Šo protokolu iesaka arī W3C konsorcijs, kas ir visu tīmekļa standartu pārvaldes institūcija.
  • SOAP ir viegls protokols, kas tiek izmantots datu apmaiņai starp lietojumprogrammām. Ievērojiet atslēgvārdu “ light ”. Tā kā SOAP programmēšana ir balstīta uz XML valodu, kas pati ir viegla datu apmaiņas valoda, līdz ar to SOAP kā protokols ietilpst arī tajā pašā kategorijā.
  • SOAP ir veidots kā neatkarīgs no platformas un ir paredzēts arī neatkarīgs no operētājsistēmas. Tātad SOAP protokols var darboties jebkurā programmēšanas valodā balstītā lietojumprogrammā gan Windows, gan Linux platformā.
  • Tas darbojas uz HTTP protokola - SOAP darbojas uz HTTP protokola, kas ir noklusējuma protokols, ko izmanto visas tīmekļa lietojumprogrammas. Līdz ar to nav nepieciešami pielāgojumi, kas nepieciešami, lai palaistu tīmekļa pakalpojumus, kas veidoti uz SOAP protokola, lai strādātu tīmeklī.

ZIEPES Celtniecības bloki

SOAP specifikācijā ir definēts kaut kas pazīstams kā " SOAP ziņojums ", kas tiek nosūtīts tīmekļa pakalpojumam un klienta lietojumprogrammai.

Zemāk redzamā SOAP arhitektūras diagramma parāda dažādus SOAP ziņojuma veidošanas blokus.

ZIEPES ziņojumu veidošanas bloki

SOAP ziņojums ir nekas cits kā tikai XML dokuments, kuram ir tālāk minētie komponenti.

  • Aploksnes elements, kas identificē XML dokumentu kā SOAP ziņojumu - tas satur SOAP ziņojuma daļu un tiek izmantots, lai iekapsulētu visu informāciju SOAP ziņojumā. Šis ir SOAP ziņojuma saknes elements.
  • Galvenes elements, kas satur galvenes informāciju - galvenes elements var saturēt tādu informāciju kā autentifikācijas akreditācijas dati, kurus var izmantot izsaucošā lietojumprogramma. Tas var saturēt arī sarežģītu tipu definīciju, ko varētu izmantot SOAP ziņojumā. Pēc noklusējuma SOAP ziņojumā var būt parametri, kas varētu būt vienkārša veida, piemēram, virknes un cipari, bet var būt arī sarežģīts objekta tips.

Zemāk parādīts vienkāršs, sarežģīta veida SOAP pakalpojuma piemērs.

Pieņemsim, ka mēs vēlējāmies nosūtīt strukturētu datu tipu, kurā būtu kombinācija "Pamācības nosaukums" un "Apmācības apraksts", tad mēs definēsim kompleksa veidu, kā parādīts tālāk.

Kompleksa veidu nosaka elementa tags . Pēc tam kompleksa tipa kolekcijā tiek definēti visi nepieciešamie struktūras elementi kopā ar to attiecīgajiem datu tipiem.

  • Body elements, kas satur zvana un atbildes informāciju - šis elements satur faktiskos datus, kas jānosūta starp tīmekļa pakalpojumu un zvanīšanas lietojumprogrammu. Zemāk ir SOAP tīmekļa pakalpojuma SOAP ķermeņa piemērs, kas faktiski darbojas uz galvenes sadaļā definētā kompleksa veida. Šeit ir sniegta apmācības nosaukuma un apmācības apraksta atbilde, kas tiek nosūtīta zvanīšanas lietojumprogrammai, kas izsauc šo tīmekļa pakalpojumu.
Web ServicesAll about web services

SOAP ziņojumu struktūra

Jāatzīmē, ka SOAP ziņojumus parasti automātiski ģenerē tīmekļa pakalpojums, kad to izsauc.

Ikreiz, kad klienta lietojumprogramma izsauc tīmekļa pakalpojuma metodi, tīmekļa pakalpojums automātiski ģenerēs SOAP ziņojumu, kurā būs nepieciešamā informācija par datiem, kas no tīmekļa pakalpojuma tiks nosūtīti klienta lietojumprogrammai.

Kā tika apspriests šīs SOAP apmācības iepriekšējā tēmā, vienkāršam SOAP ziņojumam ir šādi elementi:

  • Aploksnes elements
  • Galvenes elements un
  • Ķermeņa elements
  • Kļūdas elements (pēc izvēles)

Apskatīsim vienkārša SOAP ziņojuma piemēru zemāk un redzēsim, kāds elements faktiski darbojas.

SOAP ziņojumu struktūra
  1. Kā redzams no iepriekš minētā SOAP ziņojuma, SOAP ziņojuma pirmā daļa ir aploksnes elements, ko izmanto visa SOAP ziņojuma iekapsulēšanai.
  2. Nākamais elements ir SOAP pamatteksts, kurā ir informācija par faktisko ziņojumu.
  3. Mūsu ziņojumā ir tīmekļa pakalpojums, kura nosaukums ir "Guru99WebService".
  4. "Guru99Webservice" pieņem tipa "int" parametru un tam ir TutorialID nosaukums.

Tagad iepriekš minētais SOAP ziņojums tiks nodots starp tīmekļa pakalpojumu un klienta lietojumprogrammu.

Jūs varat redzēt, cik noderīga iepriekš minētā informācija ir klienta lietojumprogrammai. SOAP ziņojums klienta lietojumprogrammai norāda, kāds ir tīmekļa pakalpojuma nosaukums, kā arī kādus parametrus tā sagaida, kā arī kāda ir katra tīmekļa pakalpojuma ņemtā parametra tips.

Ziepju aploksnes elements

Pirmais celtniecības elementa bits ir SOAP aploksne.

SOAP aploksne tiek izmantota, lai apkopotu visu nepieciešamo informāciju par SOAP ziņojumiem, ar kuriem apmainās starp tīmekļa pakalpojumu un klienta lietojumprogrammu.

SOAP aploksnes elements tiek izmantots, lai norādītu SOAP ziņojuma sākumu un beigas. Tas ļauj klienta lietojumprogrammai, kas izsauc tīmekļa pakalpojumu, uzzināt, kad beidzas SOAP ziņojums.

Uz SOAP aploksnes elementa var atzīmēt šādus punktus.

  • Katram SOAP ziņojumam ir jābūt saknes Envelope elementam. SOAP ziņojumam ir obligāti jābūt aploksnes elementam.
  • Katrā aploksnes elementā ir jābūt vismaz vienam ziepju ķermeņa elementam.
  • Ja aploksnes elementā ir galvenes elements, tajā nedrīkst būt vairāk par vienu, un tam ir jāparādās kā pirmajam aploksnes bērnam pirms ķermeņa elementa.
  • Aploksne mainās, mainoties SOAP versijām.
  • V1.1 saderīgs SOAP procesors, saņemot ziņojumu, kurā ir v1.2 aploksnes nosaukumvieta, ģenerē kļūdu.
  • V1.2 saderīgs SOAP procesors ģenerē versijas nesakritības kļūdu, ja saņem ziņojumu, kurā nav v1.2 aploksnes nosaukumvietas.

Zemāk ir SOAP API SOAP aploksnes elementa 1.2 versijas piemērs.

int

Kļūdas ziņojums

Kad tiek iesniegts pieprasījums SOAP tīmekļa pakalpojumam, atbilde var būt vai nu 2 veidlapas, kas ir veiksmīga atbilde, vai kļūdas atbilde. Kad tiek gūti panākumi, atbilde no servera vienmēr būs SOAP ziņojums. Bet, ja tiek ģenerētas SOAP kļūdas, tās tiek atgrieztas kā "HTTP 500" kļūdas.

SOAP Fault ziņojums sastāv no šādiem elementiem.

  1. - tas ir kods, kas apzīmē kļūdas kodu. Kļūdas kods var būt jebkura no zemāk esošajām vērtībām
    1. SOAP-ENV: VersionMismatch - tas ir tad, kad SOAP Envelope elementam tiek parādīta nederīga nosaukumvieta.
    2. SOAP-ENV: MustUnderstand - netika saprasts galvenes elementa tūlītējs pakārtotais elements ar atribūtu mustUnderstand, kas iestatīts uz "1".
    3. SOAP-ENV: klients - ziņojums ir nepareizi veidots vai satur nepareizu informāciju.
    4. SOAP-ENV: Serveris - Radās problēma ar serveri, tāpēc ziņojumu nevarēja turpināt.
  2. - šis ir īsziņa, kurā sniegts detalizēts kļūdas apraksts.
  3. (Neobligāti) - šī ir teksta virkne, kas norāda, kurš izraisīja kļūdu.
  4. (Neobligāti) - šis ir lietojumprogrammu kļūdu ziņojumu elements. Tātad lietojumprogrammai varētu būt īpašs kļūdas ziņojums dažādiem biznesa loģikas scenārijiem.

Kļūdu ziņojuma piemērs

Kļūdas ziņojuma piemērs ir sniegts zemāk. Kļūda tiek ģenerēta, ja scenārijs, kurā klients mēģina klasē GetTutorial izmantot metodi ar nosaukumu TutorialID.

Zemāk redzamais kļūdas ziņojums tiek ģenerēts gadījumā, ja metode nepastāv definētajā klasē.

SOAP-ENV:ClientFailed to locate method (GetTutorialID) in class (GetTutorial)

Izeja:

Izpildot iepriekš minēto kodu, tajā tiks parādīta kļūda, piemēram, "Neizdevās atrast metodi (GetTutorialID) klasē (GetTutorial)"

Ziepju komunikācijas modelis

Visa saziņa, izmantojot SOAP, tiek veikta, izmantojot HTTP protokolu. Pirms SOAP, daudzi tīmekļa pakalpojumi saziņai izmantoja standarta RPC (Remote Procedure Call) stilu. Šis bija vienkāršākais saziņas veids, taču tam bija daudz ierobežojumu.

Tagad šajā SOAP API apmācībā ņemsim vērā zemāk redzamo diagrammu, lai redzētu, kā darbojas šī saziņa. Šajā piemērā pieņemsim, ka serveris mitina tīmekļa pakalpojumu, kas nodrošināja 2 metodes kā

  • GetEmployee - tas iegūs visu darbinieku informāciju
  • SetEmployee - Tas attiecīgi iestatītu tādu detaļu vērtību kā darbinieku nodeva, alga utt.

Parastā RPC stila komunikācijā klients vienkārši izsauc pieprasījumā norādītās metodes un nosūta serverim nepieciešamos parametrus, un tad serveris nosūta vēlamo atbildi.

Iepriekš minētajam komunikācijas modelim ir šādi nopietni ierobežojumi

  1. Nav neatkarīgs no valodas - serveris, kas mitina metodes, būtu noteiktā programmēšanas valodā, un parasti zvani uz serveri notiek tikai šajā programmēšanas valodā.
  2. Nav standarta protokols - kad tiek zvanīts uz attālo procedūru, zvans netiek veikts, izmantojot standarta protokolu. Tas bija jautājums, jo pārsvarā visa saziņa tīmeklī bija jāveic, izmantojot HTTP protokolu.
  3. Ugunsmūri - Tā kā RPC zvani nenotiek, izmantojot parasto protokolu, serverī jābūt atvērtiem atsevišķiem portiem, lai klients varētu sazināties ar serveri. Parasti visi ugunsmūri bloķēja šāda veida trafiku, un, lai nodrošinātu šāda veida saziņu starp klientu un serveri, parasti bija nepieciešama liela konfigurācija.

Lai pārvarētu visus iepriekš minētos ierobežojumus, SOAP tad izmantotu tālāk norādīto komunikācijas modeli

  1. Klients formatēja informāciju par procedūras izsaukumu un visiem argumentiem SOAP ziņojumā un nosūta to serverim kā daļu no HTTP pieprasījuma. Šis datu iekapsulēšanas process SOAP ziņojumā bija pazīstams kā Marshalling.
  2. Pēc tam serveris atritinās klienta nosūtīto ziņojumu, redzēja klienta pieprasīto informāciju un pēc tam nosūtīja klientam atbilstošu atbildi kā SOAP ziņojumu. Klienta sūtīta pieprasījuma izpakošanas prakse ir pazīstama kā Demarshalling.

Praktisks ziepju piemērs

Tagad šajā SoapUI apmācībā apskatīsim praktisku SOAP piemēru,

Droši vien viens no labākajiem veidiem, kā redzēt, kā tiek ģenerēti SOAP ziņojumi, ir faktiski redzēt tīmekļa pakalpojumu darbībā.

Šajā tēmā tiks aplūkota Microsoft.Net ietvara izmantošana ASMX tīmekļa pakalpojuma izveidei. Šāda veida tīmekļa pakalpojumi atbalsta gan SOAP 1.1, gan 1.2 versiju.

ASMX tīmekļa pakalpojumi automātiski ģenerē Web Service Definition Language (WSDL) dokumentu. Šis WSDL dokuments ir nepieciešams izsaucošā klienta lietojumprogrammai, lai lietojumprogramma zinātu, ko spēj veikt tīmekļa pakalpojums.

Šajā piemērā mēs izveidosim vienkāršu tīmekļa pakalpojumu, kas tiks izmantots, lai atgrieztu virkni lietojumprogrammai, kas izsauc tīmekļa pakalpojumu.

Šis tīmekļa pakalpojums tiks mitināts Asp.Net tīmekļa lietojumprogrammā. Pēc tam mēs izmantosim tīmekļa pakalpojumu un redzēsim rezultātu, ko atdod tīmekļa pakalpojums.

Visual Studio arī parādīs, kāds SOAP ziņojums tiek pārsūtīts starp tīmekļa pakalpojumu un zvanīšanas lietojumprogrammu.

Pirmais priekšnoteikums mūsu tīmekļa pakalpojumu lietojumprogrammas iestatīšanai, ko var izdarīt, veicot tālāk norādītās darbības.

Lūdzu, pārliecinieties, vai šajā piemērā jūsu sistēmā ir instalēta Visual Studio 2013.

1. solis . Pirmais solis ir tukšas ASP.Net tīmekļa lietojumprogrammas izveidošana. Programmā Visual Studio 2013 noklikšķiniet uz izvēlnes opcijas Fails-> Jauns projekts.

Noklikšķinot uz opcijas Jauns projekts, Visual Studio jums parādīs vēl vienu dialoglodziņu, lai izvēlētos projekta veidu un sniegtu nepieciešamo informāciju par projektu. Tas ir izskaidrots nākamajā solī.

2. solis) Šajā solī

  1. Vispirms pārliecinieties, ka vispirms izvēlaties C # tīmekļa veidni ASP.NET tīmekļa lietojumprogrammā. Projektam jābūt šāda veida, lai izveidotu SOAP pakalpojumu projektu. Izvēloties šo opciju, Visual Studio veiks nepieciešamās darbības, lai pievienotu nepieciešamos failus, kas nepieciešami jebkurai tīmekļa lietojumprogrammai.
  2. Piešķiriet savam projektam nosaukumu, kas mūsu gadījumā ir piešķirts kā webservice.asmx. Pēc tam norādiet vietu, kur tiks glabāti projekta faili.

Kad tas būs izdarīts, redzēsit projekta failu, kas izveidots jūsu risinājumu pārlūkprogrammā Visual Studio 2013.

3. solis) Šajā solī

Mēs savam projektam pievienosim tīmekļa pakalpojumu failu

  1. Vispirms ar peles labo pogu noklikšķiniet uz projekta faila, kā parādīts zemāk

  1. Kad ar peles labo pogu noklikšķiniet uz projekta faila, jums būs iespēja izvēlēties opciju "Pievienot-> Web pakalpojums (ASMX), lai pievienotu tīmekļa pakalpojumu failu. Vienkārši norādiet apmācības pakalpojuma nosaukumu tīmekļa pakalpojuma nosaukuma failam.

4. solis. Pievienojiet šo kodu savam apmācības pakalpojuma asmx failam.

Koda skaidrojums:

  1. Šajā koda rindiņā ir norādīts jūsu tīmekļa pakalpojumu faila nosaukums. Šis ir svarīgs solis, jo tas ļauj klienta lietojumprogrammai zvanīt uz tīmekļa pakalpojumu, izmantojot tīmekļa pakalpojuma nosaukumu.
  2. Parasti tīmekļa pakalpojuma funkcionalitātei tiek izmantots klases fails. Tātad klases failā būs visu tīmekļa metožu definīcija, kas klienta lietojumprogrammai nodrošinās zināmu funkcionalitāti.
  3. Šeit [WebMethod] ir pazīstams kā atribūts, kas apraksta funkciju. Nākamais solis izveido funkciju ar nosaukumu "Guru99WebService", taču, iekļaujot šo atribūta [WebMethod] pievienošanas darbību, tiek nodrošināts, ka klienta lietojumprogramma var izmantot šo metodi. Ja šis atribūts nav vietā, klienta lietojumprogramma šo metodi nekad nevar izsaukt.
  4. Šeit mēs definējam funkciju ar nosaukumu "Guru99WebService", kas tiks izmantota, lai atgrieztu virkni zvanošā klienta lietojumprogrammā. Šī funkcija ir tīmekļa pakalpojums, kuru var izsaukt jebkura klienta lietojumprogramma.
  5. Mēs izmantojam atgriešanās paziņojumu, lai klienta lietojumprogrammā atgrieztu virkni "Šis ir Guru99 tīmekļa pakalpojums".

Ja kods ir veiksmīgi izpildīts, palaižot kodu pārlūkprogrammā, tiks parādīta šāda izeja.

Izeja:

  • Rezultāts skaidri parāda, ka mūsu tīmekļa pakalpojuma nosaukums ir "Guru99 Web Service", kas ir rezultāts mūsu tīmekļa pakalpojuma nosaukuma piešķiršanai.
  • Mēs varam arī redzēt, ka varam izsaukt tīmekļa pakalpojumu. Ja noklikšķināsim uz pogas Izsaukt, tīmekļa pārlūkprogrammā mēs saņemsim tālāk sniegto atbildi.

Iepriekš minētā izeja,

  • Tas skaidri parāda, ka, atsaucoties uz tīmekļa metodi, tiek atgriezta virkne "Šis ir Guru99 tīmekļa pakalpojums".
  • Visual Studio ļauj arī apskatīt SOAP ziņojumu pieprasījumu un atbildi, kas tiek ģenerēta, izsaucot iepriekš minēto tīmekļa pakalpojumu.

SOAP pieprasījums, kas tiek ģenerēts, izsaucot tīmekļa pakalpojumu, ir parādīts zemāk.

Koda skaidrojums:

  1. SOAP ziņojuma pirmā daļa ir aploksnes elements, kas tika apspriests iepriekšējās nodaļās. Tas ir iekapsulējošais elements, kas atrodas katrā SOAP ziņojumā.
  2. SOAP pamatteksts ir nākamais elements un satur faktisko informāciju par SOAP ziņojumu.
  3. Trešā daļa ir elements, kas norāda, ka mēs vēlamies izsaukt pakalpojumu, ko sauc par “Guru99WebService”.

string

Koda skaidrojums:

  1. SOAP ziņojuma pirmā daļa ir aploksnes elements, kas tika apspriests iepriekšējās nodaļās. Tas ir iekapsulējošais elements, kas atrodas katrā SOAP ziņojumā.
  2. SOAP pamatteksts ir nākamais elements un satur faktisko informāciju par SOAP ziņojumu.
  3. Interesanta daļa, ko redzēsiet tagad, ir atribūts “string”. Tas klienta lietojumprogrammai norāda, ka izsauktais tīmekļa pakalpojums atgriež virknes tipa objektu. Tas ir ļoti noderīgi, jo, ja klienta lietojumprogramma, kas citādi nezinātu, ko atdod tīmekļa pakalpojums.

Kopsavilkums

  • SOAP ir protokols, ko izmanto datu apmaiņai starp lietojumprogrammām, kas veidotas uz dažādām programmēšanas valodām.
  • SOAP ir veidots uz XML specifikācijas un darbojas ar HTTP protokolu. Tas padara to perfektu lietošanai tīmekļa lietojumprogrammās.
  • SOAP veidošanas bloki sastāv no SOAP ziņojuma. Katrs SOAP ziņojums sastāv no aploksnes elementa, galvenes un pamatteksta elementa.
  • Aploksnes elements ir obligāts SOAP ziņojuma elements, un to izmanto, lai iekapsulētu visus datus SOAP ziņojumā.
  • Galvenes elementu var izmantot, lai saturētu tādu informāciju kā autentifikācijas informācija vai sarežģītu datu tipu definīcija.
  • Pamatteksts ir galvenais elements, kas satur tīmekļa metožu definīciju, kā arī jebkādu informāciju par parametriem, ja nepieciešams.