SOAP veebiteenuste õpetus: Mis on SOAP protokoll?

⚡ Nutikas kokkuvõte

SOAP (Simple Object Access Protocol) on XML-põhine protokoll veebiteenustele juurdepääsuks HTTP kaudu. See ressurss selgitab SOAP-i ehitusplokke, sõnumistruktuuri, ümbriku- ja veaelemente, kommunikatsioonimudelit ja praktilist ASMX-veebiteenuse näidet.

  • 📦 Põhiprotokoll: SOAP on transpordist sõltumatu, XML-põhine sõnumsideprotokoll, mis võimaldab erinevatel programmeerimiskeeltel loodud rakendustel HTTP kaudu andmeid vahetada.
  • 🧱 Ehituskivid: SOAP-sõnum koosneb ümbrikust, valikulisest päisest, sisust ja valikulisest veaelemendist.
  • ✉️ Ümbriku element: Kohustuslik juurümbrik kapseldab sõnumi ja annab kliendirakendusele märku selle algusest ja lõpust.
  • 🔁 Suhtlusmudel: Klient koondab päringu SOAP-sõnumiks; server demaršeerib selle ja tagastab SOAP-vastuse, kogu aeg HTTP kaudu.
  • 🛠️ Praktiline näide: Visual Studio ASMX veebiteenus genereerib SOAP-päringu ja vastuse automaatselt kutsuvale kliendile.

Mis on SOAP-protokoll

Mis on SEEP?

SOAP on XML-põhine protokoll veebiteenustele juurdepääsuks HTTP kaudu. Sellel on mõned spetsifikatsioonid, mida saab kasutada kõigis rakendustes.

SOAP on tuntud kui lihtne objektipöördusprotokoll (Simple Object Access Protocol), kuid hiljem lühendati seda lihtsalt SOAP v1.2-ks. SOAP on protokoll ehk teisisõnu definitsioon selle kohta, kuidas veebiteenused omavahel või neid käivitavate kliendirakendustega suhtlevad.

SOAP töötati välja vahekeelena, et erinevatele programmeerimiskeeltele üles ehitatud rakendused saaksid omavahel hõlpsalt rääkida ja vältida äärmuslikku arendustööd.

SEEBI tutvustus

Tänapäeva maailmas on tohutu hulk rakendusi, mis on loodud erinevatel programmeerimiskeeltel. Näiteks võib olla veebirakendus, mis on loodud Java, teine ​​.Netis ja teine PHP.

Andmete vahetamine rakenduste vahel on tänapäeva võrguga ühendatud maailmas ülioluline. Kuid andmevahetus nende heterogeensete rakenduste vahel oleks keeruline. Nii on ka koodi keerukus selle andmevahetuse teostamiseks.

Üks selle keerukuse vastu võitlemise meetodeid on kasutada XML-i (Extensible Markup Language) vahekeelena andmete vahetamiseks rakenduste vahel.

Iga programmeerimiskeel saab XML-i märgistuskeelest aru. Seetõttu kasutati andmevahetuse aluskandjana XML-i.

Kuid XML-i kasutamise kohta kõigis programmeerimiskeeltes andmevahetuseks puuduvad standardsed spetsifikatsioonid. Siin tulebki mängu SOAP-tarkvara.

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

SEEBI eelised

SOAP on rakendustevaheliseks andmevahetuseks kasutatav protokoll. Allpool on mõned põhjused, miks SEEPI kasutatakse.

  • Kui arenebping SOAP-põhiste veebiteenuste puhul on vaja keelt, mida veebiteenused saavad kasutada kliendirakendustega suhtlemiseks. 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 rakendustevaheliseks andmevahetuseks. Pange tähele märksõna "valgusKuna SOAP-programmeerimine põhineb XML-keelel, mis ise on kerge andmevahetuskeel, kuulub ka SOAP protokollina samasse kategooriasse.
  • SOAP on loodud platvormist sõltumatuks ja ka operatsioonisüsteemist sõltumatuks. Seega saab SOAP-protokoll töötada mis tahes programmeerimiskeelel põhineva rakendusega mõlemal platvormil. Windows ja Linux platvormid.
  • See töötab HTTP-protokollil – SOAP töötab HTTP-protokollil, mis on kõigi veebirakenduste vaikeprotokoll. Seega pole SOAP-protokollil loodud veebiteenuste veebis töötamiseks vaja mingeid kohandusi.

SEEBI ehitusplokid

SOAP spetsifikatsioon määratleb midagi, mida tuntakse kui "SEEBI sõnum„, mis saadetakse veebiteenusele ja kliendirakendusele.

Allolev SOAP-i arhitektuuri diagramm näitab SOAP-sõnumi erinevaid ehitusplokke.

SEEBI ehitusplokid

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

  • An Ümbrik element, mis identifitseerib XML-dokumendi SOAP-sõnumina – see on SOAP-sõnumi sisaldav osa ja seda kasutatakse kõigi SOAP-sõnumi üksikasjade kapseldamiseks. See on SOAP-sõnumi juurelement.
  • A Päise element, mis sisaldab päiseteavet – päiseelement võib sisaldada teavet, näiteks autentimismandaate, mida kutsuv rakendus saab kasutada. See võib sisaldada ka keerukate tüüpide definitsiooni, mida saaks SOAP-sõnumis kasutada. Vaikimisi võib SOAP-sõnum sisaldada parameetreid, mis võivad olla lihtsat tüüpi, näiteks stringid ja numbrid, aga ka keeruka objekti tüüpi.

Lihtne näide keerulisest tüübist on näidatud allpool. Oletame, et tahtsime saata struktureeritud andmetüüpi, mis sisaldas kombinatsiooni atribuutidest „Õpetuse nimi“ ja „Õpetus“. Descriptioon”, siis defineeriksime komplekstüübi allpool näidatud viisil. Komplekstüüp on defineeritud elemendi sildiga Seejärel defineeritakse kõik struktuuri vajalikud elemendid koos vastavate andmetüüpidega keerukate tüüpide kogumis.

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

A Keha element, mis sisaldab kõne- ja vastuseteavet – see element sisaldab tegelikke andmeid, mis tuleb veebiteenuse ja kutsuva rakenduse vahel saata. Allpool on SOAP-veebiteenuse näide SOAP-kehast, mis tegelikult töötab päiseosas määratletud keerulise tüübiga. Siin on õpetuse nime ja õpetuse vastus. Descriptioon, mis saadetakse sellele veebiteenusele helistavale helistavale rakendusele.

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

SEEBI sõnumi struktuur

Üks asi, mida tuleb tähele panna, on see, et SOAP-sõnumid genereerib tavaliselt veebiteenus selle väljakutsumisel automaatselt.

Iga kord, kui klientrakendus kutsub veebiteenuses mõnda meetodit, genereerib veebiteenus automaatselt SOAP-teate, mis sisaldab vajalikke üksikasju andmete kohta, mis saadetakse veebiteenusest kliendirakendusele.

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

  • Element Ümbrik
  • Päise element ja
  • Keha element
  • Element Vea (valikuline)

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

SEEBI sõnumi struktuur
SEEBI sõnumi struktuur

  1. Nagu ülaltoodud SOAP-sõnumist näha, on SOAP-sõnumi esimene osa ümbrikuelement, mida kasutatakse kogu SOAP-sõnumi kapseldamiseks.
  2. Järgmine element on SOAP-i keha, mis sisaldab tegeliku sõnumi üksikasju.
  3. Meie sõnum sisaldab veebiteenust, mille nimi on „Guru99Veebiteenus”.
  4. "Guru„99Webservice” aktsepteerib parameetrit tüübiga „int” ja selle nimi on TutorialID.

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

Nagu näete, kui kasulik ülaltoodud teave klientrakendusele on. SOAP-sõnum annab klientrakendusele teada veebiteenuse nime, milliseid parameetreid see ootab ja millist tüüpi parameeter iga veebiteenuse poolt vastu võetakse.

SEEBI ümbriku element

Ehitusploki esimene osa on SOAP Envelope.

SOAP-ümbrikut kasutatakse SOAP-sõnumite kõigi vajalike üksikasjade kapseldamiseks, mida vahetatakse veebiteenuse ja kliendirakenduse vahel.

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

SOAP-ümbriku elemendile saab märkida järgmisi punkte.

  • Igal SOAP-sõnumil peab olema juurelement „Envelope“. SOAP-sõnumi puhul on ümbrikuelemendi omamine absoluutselt kohustuslik.
  • Igal ümbriku elemendil peab olema vähemalt üks seebi korpuse element.
  • Kui element Envelope sisaldab päiseelementi, ei tohi see sisaldada rohkem kui ühte ja see peab ilmuma ümbriku esimese alamelemendina enne kehaelementi.
  • Ümbrik muutub SOAP-i versioonide muutumisel.
  • V1.1-ga ühilduv SOAP-protsessor tekitab v1.2 ümbriku nimeruumi sisaldava sõnumi saamisel vea.
  • V1.2-ga ühilduv SOAP-protsessor genereerib versiooni mittevastavuse tõrke, kui saab sõnumi, mis ei sisalda v1.2 ümbriku nimeruumi.

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

<?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>

Veateade

Kui SOAP-veebiteenusele esitatakse päring, võib tagastatud vastus olla kahel kujul: edukas vastus või veavastus. Edu korral on serveri vastus alati SOAP-teade. Kuid kui genereeritakse SOAP-vead, tagastatakse need „HTTP 500” vigadena.

SOAP Fault teade koosneb järgmistest elementidest.

  1. <faultCode> – See on kood, mis tähistab vea koodi. Veakood võib olla ükskõik milline järgmistest väärtustest:
    1. SOAP-ENV:VersionMismatch – see on siis, kui avastatakse SOAP Envelope elemendi vale nimeruum.
    2. SOAP-ENV:MustUnderstand – Päiseelemendi vahetut alamelementi, mille atribuudi mustUnderstand väärtuseks on määratud „1”, ei mõistetud.
    3. SOAP-ENV:Klient – ​​sõnum oli valesti koostatud või sisaldas ebaõiget teavet.
    4. SOAP-ENV:Server – serveriga tekkis probleem, mistõttu sõnumit ei saanud edasi saata.
  2. – See on tekstsõnum, mis kirjeldab viga üksikasjalikult.
  3. (Valikuline) – See on tekstistring, mis näitab, kes tõrke põhjustas.
  4. (Valikuline) – See on rakendusepõhiste veateadete element. Seega võib rakendusel olla konkreetne veateade erinevate äriloogika stsenaariumide jaoks.

Näide veateate kohta

Näide veateatest on toodud allpool. Viga genereeritakse stsenaariumis, kus klient proovib kasutada meetodit nimega TutorialID klassis GetTutorial. Allolev veateade genereeritakse juhul, kui meetodit määratletud klassis ei eksisteeri.

<?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>

Väljund:

Ülaltoodud koodi käivitamisel kuvatakse tõrge, näiteks „Metoodi (GetTutorialID) leidmine klassis (GetTutorial) ebaõnnestus”.

SEEBI kommunikatsioonimudel

Kogu SOAP-i suhtlus toimub HTTP-protokolli kaudu. Enne SEEPI palju veebiteenused kasutas suhtlemiseks standardset RPC-stiili (Remote Procedure Call). See oli lihtsaim suhtlusviis, kuid sellel oli palju piiranguid.

Selles SOAP API õpetuses vaatleme allolevat diagrammi, et näha, kuidas see suhtlus toimib. Oletame selles näites, et server majutab veebiteenust, mis pakub kahte meetodit:

  • GetTemployee – See annaks teada kõigi töötajate andmed.
  • SetEmployee – See määraks vastavalt selliste andmete väärtuse nagu töötaja osakond, palk jne.

Tavalises RPC-stiilis suhtluses helistab klient lihtsalt oma päringus olevad meetodid ja saadab serverile vajalikud parameetrid ning server saadab seejärel soovitud vastuse.

SOAP-kommunikatsioonimudel RPC-stiil

Ülaltoodud suhtlusmudelil on järgmised tõsised piirangud:

  1. Ei ole keelest sõltumatu – Meetodeid majutav server oleks kindlas programmeerimiskeeles ja tavaliselt tehtaksid serverile suunatud kõned ainult selles programmeerimiskeeles.
  2. Mitte standardprotokoll – Kui helistatakse kaugprotseduurile, ei toimu kõne standardprotokolli kaudu. See oli probleem, kuna enamasti tuli kogu veebi kaudu suhtlemine toimuda HTTP-protokolli kaudu.
  3. Tulemüürid – Kuna RPC-kõned ei toimu tavalise protokolli kaudu, peavad serveris olema avatud eraldi pordid, et klient saaks serveriga suhelda. Tavaliselt blokeerivad kõik tulemüürid seda tüüpi liiklust ja kliendi ja serveri vahelise suhtluse toimimise tagamiseks oli üldiselt vaja palju konfiguratsiooni.

Kõigist eespool nimetatud piirangutest ülesaamiseks kasutaks SOAP seejärel allolevat suhtlusmudelit.

SOAP-kommunikatsioonimudel SOAP-stiil

  1. Klient vormistas protseduurikutse ja kõigi argumentide kohta käiva teabe SOAP-sõnumiks ja saatis selle serverile HTTP-päringu osana. Seda andmete SOAP-sõnumiks kapseldamise protsessi tunti kui Järjestamine.
  2. Seejärel pakiks server kliendi saadetud sõnumi lahti, vaataks, mida klient soovis, ja saadaks seejärel kliendile sobiva vastuse SOAP-sõnumina. Lahtipakkimise praktikaping Kliendi saadetud päringut nimetatakse Demaršalleerimine.

Praktiline SEEBI näide

Nüüd selles SoapUI õpetuses vaatame praktilist SOAP-näidet. Tõenäoliselt on üks parimaid viise SOAP-sõnumite genereerimise nägemiseks veebiteenuse tegevuse nägemine.

Selles teemas vaadeldakse selle kasutamist Microsoft.Neti raamistik ASMX-i veebiteenuse loomiseks. Seda tüüpi veebiteenus toetab nii SOAP-i versiooni 1.1 kui ka versiooni 1.2.

ASMX veebiteenused genereerivad automaatselt Web Service Definition Language (WSDL) dokument. Seda WSDL-dokumenti nõuab helistav kliendirakendus, et rakendus teaks, mida veebiteenus on võimeline tegema.

Meie näites loome lihtsa veebiteenuse, mida kasutatakse stringi tagastamiseks rakendusele, mis veebiteenust kutsub. See veebiteenus majutatakse Asp.Net veebirakendus. Seejärel käivitame veebiteenuse ja näeme tulemust, mille veebiteenus tagastab.

Visual Studio näitab meile ka seda, milline on veebiteenuse ja kutsuva rakenduse vahel edastatav SOAP-sõnum. Veebiteenuse rakenduse seadistamise esimese eeltingimuse saab teha järgmiste sammude abil. Selle näite jaoks veenduge, et teie süsteemis oleks installitud Visual Studio 2013.

Step 1) Esimene samm on tühja ASP.Neti veebirakenduse loomine. Visual Studio 2013-s klõpsake menüükäsku Fail->Uus projekt.

SOAP-sõnumi näide uuest projektist

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.

Step 2) Selles sammus

  1. Valige esmalt kindlasti C# ASP.NET veebirakenduse veebimall. SOAP-teenuste projekti loomiseks peab projekt olema seda tüüpi. Selle valiku valimisel teeb Visual Studio vajalikud toimingud, et lisada kõik veebipõhised rakendused vajalikke faile.
  2. Andke oma projektile nimi, mis meie puhul on webservice.asmx. Seejärel veenduge, et määraksite asukoha, kuhu projektifailid salvestatakse.

SOAP-sõnumi näidisprojekti üksikasjad

Kui see on tehtud, näete Visual Studio 2013 lahenduste uurijas loodud projektifaili.

SOAP-sõnumi näidislahenduste uurija

Step 3) Selles etapis lisame oma projektile veebiteenuse faili.

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

SOAP-sõnumi näide paremklõpsuga projektil

  1. Kui olete projektifailil paremklõpsanud, saate veebiteenuse faili lisamiseks valida suvandi „Lisa->Veebiteenus (ASMX)“. Sisestage veebiteenuse nimefailile lihtsalt nimi „Õpetusteenus“.

SOAP-sõnumi näide veebiteenuse lisamiseks

Step 4) Lisage oma Tutorial Service asmx-faili järgmine kood.

SOAP-sõnumi näidis veebiteenuse koodis

Code Selgitus:

  1. See koodirida annab teie veebiteenuse failile nime. See on oluline samm, kuna võimaldab kliendirakendusel helistada veebiteenusele veebiteenuse nime kaudu.
  2. Tavaliselt kasutatakse veebiteenuse funktsioonide kapseldamiseks klassifaili. Seega on klassifailis kõigi veebimeetodite määratlused, mis pakuvad kliendirakendusele teatud funktsioone.
  3. Siin tuntakse [WebMethod] atribuudina, mis kirjeldab funktsiooni. Järgmine samm loob funktsiooni nimega „Guru99WebService”, aga selle [WebMethod] atribuudi lisamise sammu lisamisega tagatakse, et klientrakendus saab seda meetodit käivitada. Kui see atribuut puudub, ei saa klientrakendus meetodit kunagi käivitada.
  4. Siin defineerime funktsiooni nimega 'Guru99WebService', mida kasutatakse stringi tagastamiseks kutsuvale kliendirakendusele. See funktsioon on veebiteenus, mida saab kutsuda iga kliendirakendus.
  5. Me kasutame return-lauset stringi „See on Guru99 veebiteenus” kliendirakendusele.

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

Väljund:

SOAP-sõnumi näidisväljund

  • Väljund näitab selgelt, et meie veebiteenuse nimi on „Guru99 veebiteenus”, mis on meie veebiteenusele nime andmise tulemus.
  • Samuti näeme, et saame veebiteenust käivitada. Kui klõpsame nupul „Kutsu“, saame veebibrauseris alloleva vastuse.

SOAP-sõnumi näide kutsumisvastusest

Ülaltoodud väljund:

  • See näitab selgelt, et veebimeetodi kutsumisel saadakse string „See on GuruTagastati „99 veebiteenus”.
  • Visual Studio võimaldab teil vaadata ka SOAP-sõnumipäringut ja vastust, mis genereeritakse ülaltoodud veebiteenuse kutsumisel.

SOAP-i päring, mis genereeritakse veebiteenuse kutsumisel, on näidatud allpool.

SOAP-sõnumi näide SOAP-päring

Code Selgitus:

  1. SOAP-sõnumi esimene osa on ümbriku element, mida käsitleti eelmistes peatükkides. See on kapseldav element, mis esineb igas SOAP-sõnumis.
  2. SOAP Body on järgmine element ja sisaldab SOAP-sõnumi tegelikke üksikasju.
  3. Kolmas osa on element, mis määrab, et me tahame kutsuda teenust nimega 'Guru99Veebiteenus'.

SOAP-sõnumi näide SOAP-vastus

<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 Selgitus:

  1. SOAP-sõnumi esimene osa on ümbriku element, mida käsitleti eelmistes peatükkides. See on kapseldav element, mis esineb igas SOAP-sõnumis.
  2. SOAP Body on järgmine element ja sisaldab SOAP-sõnumi tegelikke üksikasju.
  3. Huvitav osa, mida te nüüd näete, on atribuut „string”. See annab kliendirakendusele teada, et kutsutav veebiteenus tagastab string-tüüpi objekti. See on väga kasulik, sest vastasel juhul ei teaks kliendirakendus, mida veebiteenus tagastab.

KKK

Tehisintellekt suudab genereerida SOAP-päringuid loomulikust keelest, valideerida ümbrikke WSDL-i suhtes ja tuvastada vigaseid või kahtlaseid sõnumeid. Vanemates ettevõttesüsteemides aitavad tehisintellekti assistendid arendajatel ka vanemaid SOAP-teenuseid kiiremini mõista ja hallata.

Jah. Tehisintellekti tööriistad saavad automaatselt genereerida SOAP-ümbrike näidiseid, luua veastsenaariume ja luua lõpp-punktide regressiooniteste. Arendajad peaksid enne loodud XML-i üle vaatama, et kinnitada nimeruumide, andmetüüpide ja turvapäiste õigsust.

SOAP on range XML-põhine protokoll sisseehitatud turvalisuse ja veakäsitlusstandarditega. REST on kergem arhitektuuristiil, mis kasutab HTTP-meetodeid ja sageli JSON-i. SOAP sobib ametlike ettevõtte integratsioonide jaoks, samas kui REST on populaarne avalike veebi API-de jaoks.

Jah. Kuigi REST domineerib uute avalike API-de seas, on SOAP endiselt levinud ettevõtete, panganduse, maksete ja telekommunikatsioonisüsteemides, mis nõuavad tugevat turvalisust, ametlikku kontrolli.tracts (WSDL) ja usaldusväärne sõnumside. Paljud pärandintegratsioonid sõltuvad jätkuvalt SOAP-veebiteenustest.

Võta see postitus kokku järgmiselt: