SOAP žiniatinklio paslaugų pamoka: kas yra SOAP protokolas? PAVYZDYS

Turinys:

Anonim

Kas yra muilas?

SOAP yra XML pagrįstas protokolas, skirtas prieigai prie interneto paslaugų per HTTP. Jis turi tam tikrą specifikaciją, kurią galima naudoti visose programose.

SOAP yra žinomas kaip paprastas objekto prieigos protokolas, tačiau vėliau jis buvo tiesiog sutrumpintas iki SOAP v1.2. SOAP yra protokolas arba, kitaip tariant, yra apibrėžimas, kaip žiniatinklio tarnybos kalbasi tarpusavyje ar su kliento programomis, kurios jas naudoja.

SOAP buvo sukurta kaip tarpinė kalba, kad įvairiomis programavimo kalbomis sukurtos programos galėtų lengvai susikalbėti ir išvengti ypatingų kūrimo pastangų.

Šioje SOAP žiniatinklio paslaugų pamokoje sužinosite

  • MUILAS Įvadas
  • Muilo pranašumai
  • Muilas Statybiniai blokai
  • SOAP pranešimų struktūra
  • Muilo vokų elementas
  • Muilo komunikacijos modelis
  • Praktinis muilo pavyzdys

MUILAS Įvadas

Šiuolaikiniame pasaulyje yra daugybė programų, sukurtų skirtingomis programavimo kalbomis. Pavyzdžiui, gali būti žiniatinklio programa, sukurta „Java“, kita - „Net“, kita - „PHP“.

Keitimasis duomenimis tarp programų yra labai svarbus šiuolaikiniame tinklų pasaulyje. Tačiau keitimasis duomenimis tarp šių nevienalyčių programų būtų sudėtingas. Kodas bus sudėtingas norint keistis duomenimis.

Vienas iš kovos su šiuo sudėtingumu metodų yra XML (Extensible Markup Language) naudojimas kaip tarpinė kalba keičiantis duomenimis tarp programų.

Kiekviena programavimo kalba gali suprasti XML žymėjimo kalbą. Taigi XML buvo naudojama kaip pagrindinė duomenų mainų terpė.

Tačiau nėra standartinių XML naudojimo visomis programavimo kalbomis duomenų mainams specifikacijų. Čia atsiranda SOAP programinė įranga.

SOAP buvo sukurtas dirbti su XML per HTTP ir turėti tam tikrą specifikaciją, kurią būtų galima naudoti visose programose. Tolimesniuose skyriuose išnagrinėsime daugiau informacijos apie SOAP protokolą.

Muilo pranašumai

SOAP yra protokolas, naudojamas duomenų mainams tarp programų. Toliau pateikiamos kelios priežastys, kodėl naudojamas SOAP.

  • Kurdami SOAP pagrįstas žiniatinklio paslaugas, turite turėti tam tikrą kalbą, kurią galima naudoti žiniatinklio paslaugoms kalbėti su kliento programomis. SOAP yra puiki terpė, sukurta šiam tikslui pasiekti. Šį protokolą taip pat rekomenduoja W3C konsorciumas, kuris yra visų žiniatinklio standartų valdymo organas.
  • SOAP yra lengvas protokolas, naudojamas duomenų mainams tarp programų. Atkreipkite dėmesį į raktinį žodį „ šviesa “. Kadangi SOAP programavimas yra pagrįstas XML kalba, kuri pati yra nedidelė duomenų mainų kalba, todėl SOAP kaip protokolas taip pat priklauso tai pačiai kategorijai.
  • SOAP yra sukurtas taip, kad būtų nepriklausomas nuo platformos ir taip pat nepriklausomas nuo operacinės sistemos. Taigi SOAP protokolas gali veikti bet kokiomis programavimo kalbomis pagrįstomis programomis tiek „Windows“, tiek „Linux“ platformose.
  • Tai veikia HTTP protokole - SOAP veikia HTTP protokole, kuris yra numatytasis protokolas, kurį naudoja visos žiniatinklio programos. Taigi nėra jokio pritaikymo, kurio reikia norint paleisti žiniatinklio paslaugas, pagrįstas SOAP protokolu, kad veiktų visame pasaulyje.

Muilo statybinės medžiagos

SOAP specifikacija apibrėžia tai, kas vadinama „ SOAP pranešimu “, kuris yra siunčiamas žiniatinklio tarnybai ir kliento programai.

Žemiau pateiktoje SOAP architektūros diagramoje parodyti įvairūs SOAP pranešimo blokai.

Muilo pranešimų blokai

SOAP pranešimas yra ne kas kita, o tik XML dokumentas, turintis žemiau nurodytus komponentus.

  • „Envelope“ elementas, identifikuojantis XML dokumentą kaip SOAP pranešimą - tai yra sudedamoji SOAP pranešimo dalis ir naudojamas apibendrinti visas SOAP pranešimo detales. Tai yra pagrindinis SOAP pranešimo elementas.
  • Antraštės elementas, kuriame yra antraštės informacijos - antraštės elemente gali būti tokios informacijos kaip autentifikavimo kredencialai, kuriuos gali naudoti skambinanti programa. Jame taip pat gali būti sudėtingų tipų, kurie galėtų būti naudojami SOAP pranešime, apibrėžimas. Pagal numatytuosius nustatymus SOAP pranešime gali būti parametrų, kurie gali būti paprastų tipų, pavyzdžiui, eilutės ir skaičiai, tačiau gali būti ir sudėtingas objekto tipas.

Žemiau parodytas paprastas sudėtingo tipo SOAP paslaugos pavyzdys.

Tarkime, kad norėjome siųsti struktūrizuotų duomenų tipą, kuriame būtų „Pamokos pavadinimas“ ir „Pamokos aprašas“ derinys, tada mes apibrėžsime sudėtingą tipą, kaip parodyta žemiau.

Komplekso tipą apibrėžia elemento žyma . Tada visi reikalingi struktūros elementai kartu su atitinkamais duomenų tipais apibrėžiami kompleksinio tipo rinkinyje.

  • „Body“ elementas, kuriame yra skambučio ir atsakymo informacija - šiame elemente yra faktiniai duomenys, kuriuos reikia siųsti tarp žiniatinklio tarnybos ir skambinančiosios programos. Žemiau pateikiamas SOAP žiniatinklio paslaugos SOAP kūno pavyzdys, kuris iš tikrųjų veikia antraštės skyriuje apibrėžtu komplekso tipu. Čia pateikiamas mokymo programos pavadinimo ir aprašymo atsakymas, kuris siunčiamas į skambinančią programą, kuri iškviečia šią žiniatinklio paslaugą.
Web ServicesAll about web services

SOAP pranešimų struktūra

Reikėtų atkreipti dėmesį į tai, kad SOAP pranešimus paprastai automatiškai sukuria žiniatinklio tarnyba, kai ji iškviečiama.

Kai kliento programa iškviečia žiniatinklio paslaugos metodą, žiniatinklio tarnyba automatiškai sugeneruos SOAP pranešimą, kuriame bus reikalinga išsami informacija apie duomenis, kurie bus išsiųsti iš žiniatinklio tarnybos į kliento programą.

Kaip aptarta ankstesnėje šios SOAP mokymo programos temoje, paprastame SOAP pranešime yra šie elementai:

  • Voko elementas
  • Antraštės elementas ir
  • Kūno elementas
  • Gedimo elementas (pasirinktinai)

Pažvelkime į žemiau esančio paprasto SOAP pranešimo pavyzdį ir pažiūrėkime, koks elementas iš tikrųjų veikia.

SOAP pranešimų struktūra
  1. Kaip matyti iš pirmiau minėto SOAP pranešimo, pirmoji SOAP pranešimo dalis yra voko elementas, naudojamas visam SOAP pranešimui apgaubti.
  2. Kitas elementas yra SOAP turinys, kuriame yra išsami faktinio pranešimo informacija.
  3. Mūsų pranešime yra žiniatinklio paslauga, kurios pavadinimas yra „Guru99WebService“.
  4. „Guru99Webservice“ priima „int“ tipo parametrą ir turi „TutorialID“ pavadinimą.

Dabar aukščiau pateiktas SOAP pranešimas bus perduotas tarp žiniatinklio tarnybos ir kliento programos.

Galite pamatyti, kiek aukščiau pateikta informacija naudinga kliento programai. SOAP pranešimas kliento programai nurodo, koks yra žiniatinklio paslaugos pavadinimas, taip pat kokių parametrų ji tikisi, taip pat kiekvieno tipo, kurį priima žiniatinklio tarnyba, tipas.

Muilo vokų elementas

Pirmasis pastato bloko gabalas yra „SOAP Envelope“.

SOAP vokas naudojamas apibendrinti visą būtiną informaciją apie SOAP pranešimus, kuriais keičiamasi tarp žiniatinklio tarnybos ir kliento programos.

SOAP voko elementas naudojamas nurodyti SOAP pranešimo pradžią ir pabaigą. Tai leidžia kliento programai, iškvietusiai žiniatinklio tarnybą, žinoti, kada baigiasi SOAP pranešimas.

Ant SOAP vokelio elemento galima pažymėti šiuos dalykus.

  • Kiekviename SOAP pranešime turi būti šakninis vokų elementas. Visiškai privaloma, kad SOAP pranešime būtų voko elementas.
  • Kiekviename voko elemente turi būti bent vienas muilo korpuso elementas.
  • Jei voko elemente yra antraštės elementas, jame turi būti ne daugiau kaip vienas ir jis turi būti rodomas kaip pirmasis voko vaikas prieš kūno elementą.
  • Vokas pasikeičia, kai keičiasi SOAP versijos.
  • V1.1 suderinamas SOAP procesorius sugenda sugavęs, gavęs pranešimą, kuriame yra v1.2 voko vardų sritis.
  • Su v1.2 suderinamas SOAP procesorius sukuria versijos neatitikimo gedimą, jei gauna pranešimą, kuriame nėra v1.2 voko vardų srities.

Žemiau pateikiamas SOAP API 1.2 versijos SOAP voko elemento pavyzdys.

int

Pranešimas apie gedimą

Kai pateikiama užklausa SOAP žiniatinklio tarnybai, atsakymas gali būti dviejų formų, kurios yra sėkmingas atsakymas, arba klaidos atsakymas. Kai sukuriama sėkmė, atsakymas iš serverio visada bus SOAP pranešimas. Bet jei sugenda SOAP, jie grąžinami kaip „HTTP 500“ klaidos.

SOAP gedimo pranešimą sudaro šie elementai.

  1. - tai kodas, nurodantis klaidos kodą. Gedimo kodas gali būti bet kuri iš žemiau esančių verčių
    1. SOAP-ENV: VersionMismatch - tai yra tada, kai atsiranda netinkama SOAP Envelope elemento vardų sritis.
    2. SOAP-ENV: „MustUnderstand“ - nebuvo suprastas tiesioginis antrinio elemento „Elementas“ elementas, kurio „mustUnderstand“ atributas nustatytas kaip „1“.
    3. SOAP-ENV: klientas - pranešimas buvo neteisingai suformuotas arba jame buvo neteisinga informacija.
    4. SOAP-ENV: Serveris - kilo problema su serveriu, todėl pranešimas negalėjo tęstis.
  2. - tai tekstinis pranešimas, kuriame pateikiamas išsamus klaidos aprašymas.
  3. (neprivaloma) - tai yra teksto eilutė, nurodanti, kas sukėlė gedimą.
  4. (neprivaloma) - tai yra konkrečios programos klaidų pranešimų elementas. Taigi programa gali turėti konkretų klaidos pranešimą skirtingiems verslo logikos scenarijams.

Gedimo pranešimo pavyzdys

Toliau pateikiamas gedimo pranešimo pavyzdys. Klaida generuojama, jei scenarijus, kuriame klientas bando „GetTutorial“ klasėje naudoti metodą, vadinamą „TutorialID“.

Žemiau pateiktas klaidos pranešimas generuojamas tuo atveju, jei metodo nėra apibrėžtoje klasėje.

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

Išvestis:

Kai vykdysite pirmiau nurodytą kodą, jame bus rodoma klaida, pvz., „Nepavyko rasti metodo (GetTutorialID) klasėje („ GetTutorial “)

Muilo komunikacijos modelis

Visas SOAP ryšys atliekamas per HTTP protokolą. Iki SOAP daugelyje interneto paslaugų bendravimui buvo naudojamas įprastas RPC (Remote Procedure Call) stilius. Tai buvo paprasčiausias bendravimo tipas, tačiau jis turėjo daug apribojimų.

Dabar šioje SOAP API pamokoje apsvarstykime žemiau pateiktą diagramą, kad pamatytume, kaip veikia šis ryšys. Tarkime, kad šiame pavyzdyje serveryje yra žiniatinklio paslauga, teikianti 2 metodus kaip

  • „GetEmployee“ - taip gausite visą išsamią informaciją apie darbuotoją
  • „SetEmployee“ - tai nustatytų detalių, pvz., Darbuotojų departamento, atlyginimo ir kt. Vertę.

Įprastu RPC stiliaus ryšiu klientas tiesiog iškvies savo užklausoje nurodytus metodus ir išsiųs reikiamus parametrus serveriui, o tada serveris išsiųs norimą atsakymą.

Pirmiau pateiktame komunikacijos modelyje yra šie rimti apribojimai

  1. Nepriklausomas nuo kalbos - serveris, kuriame talpinami metodai, būtų vykdoma tam tikra programavimo kalba, o skambučiai į serverį paprastai būtų atliekami tik ta programavimo kalba.
  2. Ne standartinis protokolas - kai skambinama į nuotolinę procedūrą, skambutis neatliekamas per standartinį protokolą. Tai buvo problema, nes dažniausiai visas ryšys internete turėjo vykti per HTTP protokolą.
  3. Ugniasienės - kadangi RPC skambučiai vyksta ne per įprastą protokolą, serveryje turi būti atidaryti atskiri prievadai, kad klientas galėtų bendrauti su serveriu. Paprastai visos ugniasienės blokuoja tokio pobūdžio srautą, todėl norint konfigūruoti kliento ir serverio ryšį, reikalinga didelė konfigūracija.

Norėdami įveikti visus aukščiau nurodytus apribojimus, SOAP naudos žemiau pateiktą komunikacijos modelį

  1. Klientas formatuos informaciją apie procedūrinį iškvietimą ir visus argumentus į SOAP pranešimą ir išsiųs į serverį kaip HTTP užklausos dalį. Šis duomenų kaupimo į SOAP pranešimą procesas buvo žinomas kaip „ Marshalling“.
  2. Tada serveris išvyniojo kliento atsiųstą pranešimą, pamatė, ko klientas paprašė, ir tada išsiuntė atitinkamą atsakymą klientui kaip SOAP pranešimą. Kliento atsiųstos užklausos išvyniojimo praktika vadinama „ Demarshalling“.

Praktinis muilo pavyzdys

Dabar šioje „SoapUI“ pamokoje pažiūrėkime praktinį SOAP pavyzdį,

Tikriausiai vienas iš geriausių būdų pamatyti, kaip gaunami SOAP pranešimai, yra tai, kaip iš tikrųjų matyti žiniatinklio paslaugą.

Šioje temoje bus nagrinėjama „Microsoft.Net“ sistemos naudojimas kuriant ASMX žiniatinklio paslaugą. Šio tipo interneto paslaugos palaiko tiek SOAP 1.1, tiek 1.2 versiją.

ASMX žiniatinklio paslaugos automatiškai sukuria žiniatinklio tarnybos apibrėžties kalbos (WSDL) dokumentą. Šį WSDL dokumentą reikalauja skambinanti kliento programa, kad programa žinotų, ką gali atlikti žiniatinklio tarnyba.

Savo pavyzdyje ketiname sukurti paprastą žiniatinklio paslaugą, kuri bus naudojama norint grąžinti eilutę programai, kuri iškviečia žiniatinklio paslaugą.

Ši žiniatinklio paslauga bus priglobta žiniatinklio programoje „Asp.Net“. Tada mes pasikviesime žiniatinklio paslaugą ir pamatysime rezultatą, kurį grąžins žiniatinklio paslauga.

„Visual Studio“ taip pat parodys, koks SOAP pranešimas perduodamas tarp žiniatinklio tarnybos ir skambinančios programos.

Pirmoji išankstinė sąlyga norint nustatyti mūsų interneto paslaugų programą, kurią galima atlikti atlikus toliau nurodytus veiksmus.

Šiame pavyzdyje įsitikinkite, kad jūsų sistemoje yra įdiegta „Visual Studio 2013“.

1 žingsnis) Pirmasis žingsnis yra sukurti tuščią ASP.Net žiniatinklio programą. „Visual Studio 2013“ spustelėkite meniu parinktį Failas-> Naujas projektas.

Kai spustelėsite parinktį Naujas projektas, „Visual Studio“ suteiks jums kitą dialogo langą, kuriame galėsite pasirinkti projekto tipą ir pateikti reikiamą projekto informaciją. Tai paaiškinama kitame žingsnyje.

2 žingsnis) Šiame žingsnyje

  1. Pirmiausia įsitikinkite, kad pirmiausia pasirinkote ASP.NET žiniatinklio programos C # žiniatinklio šabloną. Norint sukurti SOAP paslaugų projektą, projektas turi būti tokio tipo. Pasirinkusi šią parinktį, „Visual Studio“ atliks būtinus veiksmus, kad pridėtų reikiamus failus, kurių reikalauja bet kuri žiniatinklio programa.
  2. Pavadinkite savo projektą, kuris mūsų atveju buvo suteiktas kaip webservice.asmx. Tada įsitikinkite, kad nurodėte vietą, kurioje bus saugomi projekto failai.

Kai tai padarysite, pamatysite projekto failą, sukurtą jūsų sprendimų naršyklėje „Visual Studio 2013“.

3 žingsnis) Šiame žingsnyje

Prie savo projekto ketiname pridėti žiniatinklio paslaugų failą

  1. Pirmiausia dešiniuoju pelės mygtuku spustelėkite projekto failą, kaip parodyta žemiau

  1. Dešiniuoju pelės mygtuku spustelėję projekto failą, turite galimybę pasirinkti parinktį „Pridėti-> žiniatinklio tarnyba (ASMX), kad pridėtumėte žiniatinklio paslaugos failą. Tiesiog pateikite žiniatinklio paslaugos pavadinimo failo„ Tutorial Service “pavadinimą.

4 žingsnis) Įtraukite šį kodą į savo „Tutorial Service“ asmx failą.

Kodo paaiškinimas:

  1. Šioje kodo eilutėje nurodomas jūsų žiniatinklio paslaugų failo pavadinimas. Tai svarbus žingsnis, nes tai suteikia galimybę kliento programai paskambinti į žiniatinklio tarnybą žiniatinklio paslaugos pavadinimu.
  2. Paprastai klasės failas naudojamas internetinės paslaugos funkcijoms apibendrinti. Taigi klasės faile bus apibrėžti visi žiniatinklio metodai, kurie suteiks tam tikrą funkciją kliento programai.
  3. Čia [WebMethod] yra žinomas kaip atributas, apibūdinantis funkciją. Vėlesnis žingsnis sukuria funkciją, vadinamą „Guru99WebService“, tačiau įtraukus šį atributo [WebMethod] pridėjimo veiksmą užtikrinama, kad kliento programa galėtų pasinaudoti šiuo metodu. Jei šio atributo nėra, kliento programa metodo niekada negali iškviesti.
  4. Čia mes apibrėžiame funkciją, vadinamą „Guru99WebService“, kuri bus naudojama norint grąžinti eilutę į skambinančią kliento programą. Ši funkcija yra žiniatinklio paslauga, kurią gali iškviesti bet kuri kliento programa.
  5. Mes naudojame grįžimo sakinį, kad grąžintume eilutę „Tai yra„ Guru99 “interneto paslauga“ į kliento programą.

Jei kodas sėkmingai įvykdytas, paleidus kodą naršyklėje bus rodoma ši išvestis.

Išvestis:

  • Išvestis aiškiai parodo, kad mūsų žiniatinklio paslaugos pavadinimas yra „Guru99 Web Service“, kuris atsirado dėl mūsų interneto paslaugos pavadinimo suteikimo.
  • Taip pat galime pastebėti, kad galime pasinaudoti žiniatinklio paslauga. Jei spustelėsime mygtuką Invoke, žiniatinklio naršyklėje gausime žemiau pateiktą atsakymą.

Aukščiau išvardyta produkcija,

  • Tai aiškiai parodo, kad pasinaudojus žiniatinklio metodu, pateikiama eilutė „Tai yra„ Guru99 “interneto paslauga“.
  • „Visual Studio“ taip pat leidžia peržiūrėti SOAP pranešimo užklausą ir atsakymą, kurie sugeneruojami iškviečiant aukščiau nurodytą žiniatinklio paslaugą.

SOAP užklausa, sugeneruota iškviečiant žiniatinklio paslaugą, rodoma žemiau.

Kodo paaiškinimas:

  1. Pirmoji SOAP pranešimo dalis yra voko elementas, apie kurį buvo kalbėta ankstesniuose skyriuose. Tai yra apibendrinantis elementas, esantis kiekviename SOAP pranešime.
  2. „SOAP Body“ yra kitas elementas ir jame pateikiama tikroji SOAP pranešimo informacija.
  3. Trečioji dalis yra elementas, nurodantis, kad mes norime iškviesti paslaugą, vadinamą „Guru99WebService“.

string

Kodo paaiškinimas:

  1. Pirmoji SOAP pranešimo dalis yra voko elementas, apie kurį buvo kalbėta ankstesniuose skyriuose. Tai yra apibendrinantis elementas, esantis kiekviename SOAP pranešime.
  2. „SOAP Body“ yra kitas elementas ir jame pateikiama tikroji SOAP pranešimo informacija.
  3. Įdomi dalis, kurią pamatysite dabar, yra „string“ atributas. Tai kliento programai nurodo, kad iškviečiama žiniatinklio paslauga grąžina tipo eilutės objektą. Tai labai naudinga, nes jei kliento programa, kuri kitaip nežinotų, ką grąžina žiniatinklio paslauga.

Santrauka

  • SOAP yra protokolas, naudojamas keistis duomenimis tarp programų, sukurtų skirtingomis programavimo kalbomis.
  • SOAP yra sukurtas remiantis XML specifikacija ir veikia su HTTP protokolu. Tai leidžia puikiai naudoti žiniatinklio programose.
  • SOAP statybiniai blokai susideda iš SOAP pranešimo. Kiekvieną SOAP pranešimą sudaro voko elementas, antraštė ir turinio elementas.
  • Voko elementas yra privalomas SOAP pranešimo elementas ir naudojamas visiems duomenims į SOAP pranešimą įtraukti.
  • Antraštės elementas gali būti naudojamas tokiai informacijai kaip autentifikavimo informacija arba sudėtingų duomenų tipų apibrėžimui.
  • Kūno elementas yra pagrindinis elementas, kuriame pateikiamas žiniatinklio metodų apibrėžimas kartu su visa parametro informacija, jei reikia.