SOAP-i veebiteenuste õpetus: mis on SOAP-protokoll? NÄIDE

Lang L: none (table-of-contents):

Anonim

Mis on seep?

SOAP on XML-põhine protokoll, et pääseda veebiteenustele üle HTTP. Sellel on mõned spetsifikatsioonid, mida saab kasutada kõigis rakendustes.

SOAP on tuntud kui lihtsa objekti juurdepääsuprotokoll, kuid hilisemal ajal lühendati see lihtsalt SOAP v1.2-ks. SOAP on protokoll ehk teisisõnu on määratlus, kuidas veebiteenused omavahel räägivad või neid kutsuvate klientrakendustega räägivad.

SOAP töötati välja vahekeelena, et erinevatele programmeerimiskeeltele ehitatud rakendused saaksid omavahel hõlpsalt rääkida ja vältida äärmuslikke arendusvaeva.

Selles SOAP-i veebiteenuste õpetuses saate teada

  • SOAP Sissejuhatus
  • SOAPi eelised
  • SOAP Ehitusplokid
  • SOAPi sõnumi struktuur
  • Seebi ümbriku element
  • SOAPi kommunikatsioonimudel
  • Praktiline seebinäide

SOAP Sissejuhatus

Tänapäeva maailmas on tohutult palju rakendusi, mis on loodud erinevatele programmeerimiskeeltele. Näiteks võib olla veebirakendus, mis on loodud Java-s, teine ​​.Netis ja teine ​​PHP-s.

Andmete vahetamine rakenduste vahel on tänases võrgustatud maailmas ülioluline. Kuid andmevahetus nende heterogeensete rakenduste vahel oleks keeruline. Nii on koodi keerukus selle andmevahetuse saavutamiseks.

Selle keerukuse vastu võitlemiseks on üks meetoditest XML-i (Extensible Markup Language) kasutamine vahekeelena rakenduste vahel andmete vahetamisel.

Iga programmeerimiskeel saab aru XML-i märgistuskeelest. Seega kasutati XML-i andmevahetuse alusmeediumina.

Kuid standardseid spetsifikatsioone XML-i kasutamiseks kõigis programmeerimiskeeltes andmevahetuseks pole. Seal tuleb sisse SOAP-tarkvara.

SOAP oli loodud töötama XML-iga üle HTTP ja sellel on mingisugune spetsifikatsioon, mida saaks kasutada kõigis rakendustes. Uurime SOAP-protokolli üksikasju järgmistes peatükkides.

SOAPi eelised

SOAP on rakenduste vahelise andmevahetuse protokoll. Allpool on toodud mõned põhjused, miks SOAP-i kasutatakse.

  • SOAP-põhiste veebiteenuste väljatöötamisel peab teil olema osa keelt, mida saab kasutada veebiteenuste jaoks kliendirakendustega rääkimiseks. SOAP on ideaalne meedium, mis töötati välja selle eesmärgi saavutamiseks. Seda protokolli soovitab ka W3C konsortsium, mis on kõigi veebistandardite juhtorgan.
  • SOAP on kerge protokoll, mida kasutatakse rakenduste vahel andmete vahetamiseks. Pange tähele märksõna " kerge ". Kuna SOAP-i programmeerimine põhineb XML-keelel, mis on iseenesest kerge andmevahetuskeel, siis ka SOAP kui protokoll, mis kuulub samuti samasse kategooriasse.
  • SOAP on loodud sõltumatuks platvormist ja ka operatsioonisüsteemist sõltumatuks. Nii et SOAP-protokoll võib töötada mis tahes programmeerimiskeelel põhinevates rakendustes nii Windowsi kui ka Linuxi platvormil.
  • See töötab HTTP-protokollil -SOAP töötab HTTP-protokollil, mis on kõigi veebirakenduste vaikeprotokoll. Seega pole SOAP-protokollile ehitatud veebiteenuste käitamiseks ülemaailmses veebis töötamiseks vaja mingit kohandamist.

SOAPi ehitusplokid

SOAP-i spetsifikatsioon määratleb midagi, mida nimetatakse " SOAP-sõnumiks ", mis saadetakse veebiteenusele ja kliendirakendusele.

Allpool olev SOAP-arhitektuuri diagramm näitab SOAP-sõnumi erinevaid ehitusplokke.

SOAPi sõnumite koostamise plokid

SOAP-teade pole midagi muud kui lihtsalt XML-dokument, millel on järgmised komponendid.

  • Ümbrikuelement, mis identifitseerib XML-dokumendi SOAP-sõnumina - see sisaldab SOAP-sõnumi osa ja seda kasutatakse kõigi üksikasjade kapseldamiseks SOAP-sõnumis. See on SOAP-teate juurelement.
  • Päiseelement, mis sisaldab päiseteavet - päiseelement võib sisaldada sellist teavet nagu autentimismandaadid, mida helistaja rakendus saab kasutada. See võib sisaldada ka keeruliste tüüpide määratlust, mida saaks kasutada SOAP-sõnumis. Vaikimisi võib SOAP-teade sisaldada parameetreid, mis võivad olla lihtsat tüüpi, näiteks stringid ja numbrid, kuid võib olla ka keeruline objektitüüp.

Allpool on toodud lihtsat tüüpi keerukas SOAP-teenuse näide.

Oletame, et tahtsime saata struktureeritud andmetüübi, millel oleks kombinatsioon "Õpetuse nimi" ja "Õpetuse kirjeldus", siis määratleme kompleksi tüübi, nagu allpool näidatud.

Kompleksitüübi määratleb elemendi silt . Seejärel määratletakse komplekstüüpide kogumis kõik struktuuri nõutavad elemendid koos vastavate andmetüüpidega.

  • Kehaelement, mis sisaldab kõne- ja vastuseteavet - see element sisaldab tegelikke andmeid, mis tuleb veebiteenuse ja helistaja rakenduse vahel saata. Allpool on SOAP-i veebiteenuse näide SOAP-kehast, mis töötab tegelikult päise jaotises määratletud kompleksitüübil. Siin on õpetuse nime ja õpetuse kirjelduse vastus, mis saadetakse helistamisrakendusele, mis helistab sellele veebiteenusele.
Web ServicesAll about web services

SOAPi sõnumi struktuur

Üks asi, mida tuleb märkida, on see, et SOAP-sõnumid genereeritakse veebiteenuse poolt tavaliselt selle kutsumisel automaatselt.

Alati, kui kliendirakendus kutsub veebiteenuses mõnda meetodit, genereerib veebiteenus automaatselt SOAP-teate, millel on vajalikud andmed veebiteenusest kliendirakendusele saadetavate andmete kohta.

Nagu selle SOAP-õpetuse eelmises teemas arutati, on lihtsal SOAP-sõnumil järgmised elemendid -

  • Ümbriku element
  • Päiseelement ja
  • Keha element
  • Veaelement (valikuline)

Vaatame allpool lihtsa SOAP-sõnumi näidet ja vaatame, mida element tegelikult teeb.

SOAPi sõnumi struktuur
  1. Nagu nähtub ülaltoodud SOAP-sõnumist, on SOAP-sõnumi esimene osa ümbrikelement, mida kasutatakse kogu SOAP-sõnumi kapseldamiseks.
  2. Järgmine element on SOAP-keha, mis sisaldab tegeliku sõnumi üksikasju.
  3. Meie sõnum sisaldab veebiteenust, mille nimi on "Guru99WebService".
  4. "Guru99Webservice" aktsepteerib tüübi "int" parameetrit ja selle nimi on TutorialID.

Nüüd edastatakse ülaltoodud SOAP-sõnum veebiteenuse ja kliendirakenduse vahel.

Näete, kui kasulik on ülaltoodud teave kliendirakenduse jaoks. SOAP-teade ütleb kliendirakendusele, mis on veebiteenuse nimi, samuti milliseid parameetreid ta ootab ja mis tüüpi on iga veebiteenuse võetud parameeter.

Seebi ümbriku element

Ehitusploki esimene osa on SOAP-ümbrik.

SOAP-i ümbrikku kasutatakse kõigi vajalike SOAP-sõnumite üksikasjade kapseldamiseks, mida veebiteenus ja kliendirakendus vahetavad.

SOAP-ümbriku elementi kasutatakse SOAP-sõnumi alguse ja lõpu tähistamiseks. See võimaldab veebiteenusele helistaval kliendirakendusel teada saada, millal SOAP-sõnum lõpeb.

SOAP-ümbriku elemendil võib märkida järgmisi punkte.

  • Igal SOAP-sõnumil peab olema juurümbriku element. SOAP-sõnumil on absoluutselt kohustuslik olla ümbriku element.
  • Igal ümbriku elemendil peab olema vähemalt üks seebikeha element.
  • Kui ümbrikuelement sisaldab päiseelementi, ei tohi see sisaldada rohkem kui ühte ja see peab ilmuma ümbriku esimese lapsena enne kehaosa.
  • Ümbrik muutub, kui muutuvad SOAP-versioonid.
  • V1.1-ga ühilduv SOAP-protsessor tekitab vea, kui ta saab sõnumi, mis sisaldab v1.2 ümbriku nimeruumi.
  • V1.2-ga ühilduv SOAP-protsessor loob versiooni mittevastavuse, kui ta saab teate, mis ei sisalda v1.2 ümbriku nimeruumi.

Allpool on SOAP API näide SOAP ümbriku elemendi versioonist 1.2.

int

Veateade

Kui taotlus esitatakse SOAP-i veebiteenusele, võib vastus olla kas kahes vormis, mis on edukas vastus või tõrketeave. Kui edu saadakse, on serveripoolne vastus alati SOAP-sõnum. Kuid kui genereeritakse SOAP-tõrkeid, tagastatakse need tõrgetena "HTTP 500".

SOAP Fault teade koosneb järgmistest elementidest.

  1. - see on kood, mis tähistab vea koodi. Veakood võib olla ükskõik milline allpool toodud väärtustest
    1. SOAP-ENV: VersionMismatch - see on siis, kui SOAP-i ümbriku elemendile ilmub vale nimeruum.
    2. SOAP-ENV: MustUnderstand - ei mõistetud päise elemendi kohest alamelementi, mille atribuudi mustUnderstand väärtuseks määrati "1".
    3. SOAP-ENV: klient - sõnum oli valesti vormistatud või sisaldas valet teavet.
    4. SOAP-ENV: Server - serveriga oli probleem, mistõttu sõnumit ei saanud jätkata.
  2. - see on tekstsõnum, mis kirjeldab vea üksikasjalikult.
  3. (valikuline) - see on tekstistring, mis näitab, kes tõrke põhjustas.
  4. (valikuline) - see on rakendusepõhiste tõrketeadete element. Nii et rakendusel võib olla konkreetne veateade erinevate äriloogika stsenaariumide jaoks.

Veateate näide

Rikketeate näide on toodud allpool. Viga luuakse, kui stsenaarium, kus klient proovib klassis GetTutorial kasutada meetodit nimega TutorialID.

Allpool toodud veateade luuakse juhul, kui meetodit määratletud klassis ei eksisteeri.

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

Väljund:

Kui täidate ülaltoodud koodi, kuvatakse selles viga nagu "Meetodi (GetTutorialID) klassis (GetTutorial) leidmine ebaõnnestus"

SOAPi kommunikatsioonimudel

Kogu suhtlemine SOAP-i kaudu toimub HTTP-protokolli kaudu. Enne SOAPi kasutasid paljud veebiteenused suhtlemiseks standardset RPC (Remote Procedure Call) stiili. See oli kõige lihtsam suhtlemisviis, kuid sellel oli palju piiranguid.

Vaatame nüüd selles SOAP API õpetuses allpool toodud skeemi, et näha, kuidas see suhtlus töötab. Oletame, et selles näites serveris on veebiteenus, mis pakkus kahte meetodit nagu

  • GetEmployee - see annaks kõik töötaja üksikasjad
  • SetEmployee - see määraks vastavalt detailide väärtuse, nagu töötajate osakond, palk jne.

Tavapärases RPC-stiilis suhtluses helistab klient lihtsalt oma taotluses toodud meetoditele ja saadab vajalikud parameetrid serverisse ning server saadab seejärel soovitud vastuse.

Ülaltoodud kommunikatsioonimudelil on allpool tõsised piirangud

  1. Pole keelest sõltumatu - meetodeid majutav server oleks kindlas programmeerimiskeeles ja tavaliselt helistatakse serverile ainult selles programmeerimiskeeles.
  2. Mitte standardprotokoll - kui helistatakse kaugprotseduurile, ei toimu kõnet standardprotokolli kaudu. See oli probleem, sest enamasti pidi kogu veebis toimuv suhtlus toimuma HTTP-protokolli kaudu.
  3. Tulemüürid - kuna RPC-kõned ei käi tavapärase protokolli kaudu, peavad serveris olema avatud eraldi pordid, et klient saaks serveriga suhelda. Tavaliselt blokeerisid kõik tulemüürid sedalaadi liikluse ja sellise kliendi ja serveri vahelise side toimimiseks oli vaja palju seadistusi.

Kõigi ülalnimetatud piirangute ületamiseks kasutaks SOAP seejärel allolevat kommunikatsioonimudelit

  1. Klient vormindab teabe protseduurikõne ja kõigi argumentide kohta SOAP-sõnumiks ja saadab selle HTTP-päringu osana serverisse. See andmete SOAP-sõnumisse kapseldamise protsess oli tuntud kui Marshalling.
  2. Seejärel pakib server lahti kliendi saadetud sõnumi, vaatab, mida klient soovib, ja saadab seejärel vastava vastuse kliendile SOAP-sõnumina. Kliendi saadetud päringu lahti harutamise tava on tuntud kui Demarshalling.

Praktiline seebinäide

Nüüd näeme selles SoapUI õpetuses praktilist SOAP-i näidet,

Ilmselt on üks parimaid viise, kuidas SOAP-sõnumeid luua, see, et näete tegelikult veebiteenust toimimas.

Selles teemas käsitletakse Microsoft.Neti raamistiku kasutamist ASMX-i veebiteenuse loomiseks. Seda tüüpi veebiteenus toetab nii SOAP-i versiooni 1.1 kui ka versiooni 1.2.

ASMX-i veebiteenused genereerivad automaatselt veebiteenuse määratluskeele (WSDL) dokumendi. Selle WSDL-i dokumendi nõuab helistaja kliendirakendus, et rakendus teaks, mida veebiteenus on võimeline tegema.

Meie näites loome lihtsa veebiteenuse, mida kasutatakse stringi tagastamiseks rakendusele, mis helistab veebiteenusele.

Seda veebiteenust hostitakse Asp.Neti veebirakenduses. Seejärel pöördume veebiteenuse poole ja näeme tulemust, mille veebiteenus tagastab.

Visual Studio näitab meile ka seda, millist SOAP-sõnumit veebiteenuse ja helistaja rakenduse vahel edastatakse.

Esimene eeltingimus meie veebiteenuse rakenduse seadistamiseks, mida saab teha järgmiste sammude järgi.

Veenduge, et selle näite jaoks oleks teie süsteemi installitud Visual Studio 2013.

Samm 1) Esimene samm on luua tühi veebirakendus ASP.Net. Klõpsake Visual Studio 2013-s menüüvalikut Fail-> Uus projekt.

Kui klõpsate suvandil Uus projekt, annab Visual Studio teile uue dialoogiboksi projekti tüübi valimiseks ja projekti vajalike üksikasjade esitamiseks. Seda selgitatakse järgmises etapis.

2. samm. Selles etapis

  1. Valige esmalt ASP.NET-i veebirakenduse veebimall C #. SOAP-teenuste projekti loomiseks peab projekt olema seda tüüpi. Selle suvandi valimisel teeb Visual Studio vajalikud toimingud kõigi veebipõhiste rakenduste jaoks nõutavate failide lisamiseks.
  2. Pange oma projektile nimi, mis on antud juhul veebiserver.asmx. Seejärel veenduge, et annaksite koha, kuhu projekti failid salvestatakse.

Kui olete valmis, näete Visual Studio 2013 oma lahenduste avastajaga loodud projektifaili.

3. samm. Selles etapis

Lisame oma projekti veebiteenuse faili

  1. Kõigepealt paremklõpsake projektifailil, nagu allpool näidatud

  1. Kui paremklõpsate projektifailil, on teil võimalus valida veebiteenuse faili lisamiseks suvand "Lisa-> Veebiteenus (ASMX). Sisestage lihtsalt veebiteenuse nimefaili jaoks Juhendamisteenuse nimi.

Samm 4) Lisage oma juhendamisteenuse asmx-faili järgmine kood.

Koodi selgitus:

  1. See koodirida annab teie veebiteenuse failile nime. See on oluline samm, sest see annab kliendirakendusele võimaluse helistada veebiteenusele veebiteenuse nime kaudu.
  2. Tavaliselt kasutatakse veebiteenuse funktsionaalsuse kapseldamiseks klassifaili. Seega on klassi failil kõigi veebimeetodite määratlus, mis pakub kliendirakendusele teatud funktsionaalsust.
  3. [WebMethod] on siin atribuut, mis kirjeldab funktsiooni. Järgmine samm loob funktsiooni nimega "Guru99WebService", kuid kaasates selle atribuudi [WebMethod] lisamise sammu, tagab see, et kliendirakendus saab seda meetodit kasutada. Kui seda atribuuti pole, ei saa kliendirakendus seda meetodit kunagi kutsuda.
  4. Siin määratleme funktsiooni nimega 'Guru99WebService', mida kasutatakse stringi tagastamiseks helistavasse kliendirakendusse. See funktsioon on veebiteenus, millele saab helistada iga kliendirakendus.
  5. Tagasilause abil tagastame kliendirakendusse stringi "See on Guru99 veebiteenus".

Kui kood on edukalt käivitatud, kuvatakse brauseris koodi käivitamisel järgmine väljund.

Väljund:

  • Väljund näitab selgelt, et meie veebiteenuse nimi on "Guru99 Web Service", mis tuleneb meie veebiteenusele nime andmisest.
  • Samuti näeme, et saame veebiteenusele tugineda. Kui klõpsame nuppu Kutsu, saame veebibrauseris allpool toodud vastuse.

Ülaltoodud väljund,

  • See näitab selgelt, et veebimeetodile tuginedes tagastatakse string "See on Guru99 veebiteenus".
  • Visual Studio võimaldab teil vaadata ka ülaltoodud veebiteenuse kutsumisel genereeritavaid SOAP-i päringuid ja vastuseid.

Veebiteenuse kutsumisel genereeritud SOAP-päring on näidatud allpool.

Koodi selgitus:

  1. SOAP-sõnumi esimene osa on ümbrikuelement, mida arutati eelnevates peatükkides. See on kapseldav element, mis sisaldub igas SOAP-sõnumis.
  2. SOAP Body on järgmine element ja sisaldab SOAP-teate tegelikke üksikasju.
  3. Kolmas osa on element, mis täpsustab, et tahame helistada teenusele, mille nimi on Guru99WebService.

string

Koodi selgitus:

  1. SOAP-sõnumi esimene osa on ümbrikuelement, mida arutati eelnevates peatükkides. See on kapseldav element, mis sisaldub igas SOAP-sõnumis.
  2. SOAP Body on järgmine element ja sisaldab SOAP-teate tegelikke üksikasju.
  3. Huvitav osa, mida nüüd näete, on atribuut „string”. See ütleb kliendirakendusele, et kutsutav veebiteenus tagastab tüübi stringi objekti. See on väga kasulik, sest kui kliendirakendus, mis muidu ei teaks, mida veebiteenus tagastab.

Kokkuvõte

  • SOAP on protokoll, mida kasutatakse andmete vahetamiseks rakenduste vahel, mis on ehitatud erinevatele programmeerimiskeeltele.
  • SOAP põhineb XML-i spetsifikatsioonil ja töötab HTTP-protokolliga. See muudab selle ideaalseks kasutamiseks veebirakendustes.
  • SOAP-i ehitusplokid koosnevad SOAP-sõnumist. Iga SOAP-teade koosneb ümbrikuelemendist, päisest ja kehaelemendist.
  • Ümbrikuelement on SOAP-teate kohustuslik element ja seda kasutatakse kõigi andmete SOAP-i kapseldamiseks.
  • Päiseelementi saab kasutada sellise teabe nagu autentimisteave või keerukate andmetüüpide määratlemiseks.
  • Kehaelement on peamine element, mis sisaldab veebimeetodite määratlust koos vajaduse korral parameetrite teabega.