SOAP-protocol. Basisconcepten

10 antwoorden

WSDL is een XML-document dat een webservice beschrijft. Het staat eigenlijk voor Web Services Definition Language.

SOAP is een op XML gebaseerd protocol waarmee informatie tussen applicaties kan worden uitgewisseld via een specifiek protocol (zoals HTTP of SMTP). Het staat voor Simple Object Access Protocol en gebruikt XML als berichtenformaat om informatie over te brengen.

REST is een architectuurstijl voor netwerksystemen en staat voor de overdracht van een representatieve staat. Het is zelf geen standaard, maar maakt gebruik van standaarden zoals HTTP, URL, XML, etc.

Elke keer als iemand SOAP/WSDL noemt, denk ik aan objecten en klassen die in xml zijn gedefinieerd...

"Je gebruikt SOAP net als elke andere PHP-klasse. In dit geval bestaat de klasse echter niet in de lokale versie bestandssysteem toepassingen, maar op een extern knooppunt, toegankelijk via http."... "Als we erover denken om een ​​SOAP-service als een andere PHP-klasse, dan is het WSDL-document een lijst met alle beschikbare methoden en eigenschappen van de klasse."

En als iemand het over REST heeft, denk ik aan HTTP-opdrachten (request-methoden) zoals POST, GET en DELETE

Voorbeeld: in eenvoudige woorden, als u een rekenmachinewebservice heeft.

WSDL: WSDL heeft het over de functionaliteit die u kunt implementeren of aan de klant kunt tonen. Bijvoorbeeld: optellen, verwijderen, aftrekken, enz.

SOAP: Wanneer u SOAP gebruikt, voert u feitelijk acties uit zoals doDelete(), doSubtract(), doAdd(). SOAP en WSDL zijn dus appels en peren. We moeten ze niet vergelijken. Ze hebben allebei hun eigen functionaliteit.

Waarom we SOAP en WSDL gebruiken: Om onafhankelijke gegevens over het platform uit te wisselen.

EDIT: normaal het dagelijks leven:

WSDL: Als we naar een restaurant gaan, zien we menu-items, dit is WSDL.

Proxy-klassen: Nu we naar de menu-items hebben gekeken, stellen we onze gedachten samen (verwerken onze gedachten over de bestelling): Dus in feite maken we Proxy-klassen gebaseerd op het WSDL-document.

ZEEP: Wanneer we vervolgens daadwerkelijk eten bestellen op basis van het menu: er wordt gesuggereerd dat we proxyklassen gebruiken om servicemethoden aan te roepen die worden gedaan met behulp van SOAP:)

SOAP → SOAP (Simple Object Access Prototype) is een op protocollen gebaseerde applicatielaag ontworpen voor machine-to-machine-communicatie. Het protocol definieert standaardregels. Alle partijen die een bepaald protocol gebruiken, moeten zich aan de regels van het protocol houden. Net als TCP wordt het afgewikkeld op de transportlaag. Het SOAP-protocol zal worden begrepen op applicatieniveau (elke applicatie die SOAP ondersteunt - Axis2, .Net).

WSDL -> SOAP-bericht bestaat uit SoapEnevelope->SoapHeader en SoapBody. Het definieert niet wat het berichtformaat zal zijn? welke alle transporten (HTTP, JMS) worden ondersteund? zonder deze informatie. Voor elke klant die een specifieke webservice wil gebruiken, is het moeilijk om een ​​SOAP-bericht te maken. Zelfs als ze dat wel doen, weten ze niet zeker of het altijd zal werken. WSDL is een redder in nood. WSDL (Web Services Description Language) definieert de bewerkingen, berichtformaten en transportgegevens voor een SOAP-bericht.

REST → REST (Representation State Transfer) is gebaseerd op transport. In tegenstelling tot SOAP, dat actiegericht is, is REST meer hulpbronnengericht. REST vindt bronnen met behulp van een URL (bijvoorbeeld -http://(serverAddress)/employees/employeeNumber/12345) en is afhankelijk van het transportprotocol (met HTTP-GET, POST, PUT, DELETE,...) voor acties om bronnen uit te voeren . De REST-service vindt een bron op basis van de URL en voert een actie uit op basis van het transportactiewerkwoord. Het gaat meer om architecturale stijl en conventies.

SOAP staat voor Simple (sic) Object Access Protocol. Het was bedoeld om procedureoproepen op afstand te doen afgelegen objecten door XML via HTTP te verzenden.

WSDL is een beschrijvingstaal voor webservices. Verzoek dat eindigt met ".wsdl" eindpunt, zal resulteren in de weergave van een XML-bericht waarin het verzoek en het antwoord worden beschreven dat naar verwachting zal worden gebruikt. Het beschrijft het contract tussen de dienst en de klant.

REST gebruikt HTTP om berichten naar services te verzenden.

SOAP is een specificatie, REST is een stijl.

Je gaat niet ‘zomaar’ iets ingewikkelds begrijpen.

WSDL is een op XML gebaseerde taal voor het beschrijven van een webservice. Het beschrijft berichten, handelingen en informatie over transport netwerk, gebruikt door de dienst. Deze webservices maken doorgaans gebruik van SOAP, maar kunnen ook andere protocollen gebruiken.

WSDL is leesbaar door een programma en kan daarom worden gebruikt om (een deel van) de clientcode te genereren die nodig is om een ​​webservice aan te roepen. Dit is wat het betekent om SOAP-georiënteerde webservices ‘zelfbeschrijvend’ te noemen.

REST is helemaal niet gerelateerd aan WSDL.

Wikipedia zegt: "Web Services Description Language is een op XML gebaseerde taal die een model biedt voor het beschrijven van webservices." Met andere woorden: WSDL verwijst naar een webservice zoals Javadoc verwijst naar de Java-bibliotheek.

Het leuke van WSDL is echter dat software kan client en server genereren met behulp van WSDL.

Geschiedenis van de schepping

Met de komst personal computers Er was ook behoefte om ze te verenigen. In het begin waren ze eenvoudig kabelverbindingen, toen verschenen ze netwerkprotocollen het samenbrengen van computers die op hetzelfde besturingssysteem draaien; met de ontwikkeling van de technologie is de noodzaak om één besturingssysteem op alle computers te hebben verdwenen en is het mogelijk geworden om computers die onder verschillende besturingssystemen draaien te verenigen. Het internet heeft de bewegingssnelheid op het pad van eenwording veranderd.

Maar zelfs vandaag de dag zijn helaas nog niet alle integratieproblemen opgelost. enkel protocol Voor communicatie link tussen internettoepassingen en -diensten. Om dit probleem op te lossen verenigden bedrijven als Microsoft, DevelopMentor, UserLand Software, IBM en Lotus Development zich en als gevolg van hun gezamenlijke activiteiten was het resultaat (Simple Objecttoegang Protocol) een eenvoudig objecttoegangsprotocol beschrijft een standaard voor externe procedureaanroepen op basis van XML (Extensible Opmaaktaal- uitbreidbare opmaaktaal). SOAP is ontworpen om de ontwikkeling van meertalige applicaties en bedrijfsintegratietools aanzienlijk te vereenvoudigen. Er werd begonnen met SOAP 1.0, waarvoor het HTTP-protocol nodig was om te kunnen werken.

Na de initiaal SOAP-versie, gecreëerd, zoals reeds opgemerkt, door de gezamenlijke inspanningen van Microsoft, DevelopMentor en UserLand, sloten IBM en Lotus zich aan bij de ontwikkeling van het product. Als gevolg hiervan heeft de specificatie een aanzienlijke herziening ondergaan om beter aan te sluiten bij de integratie van heterogene omgevingen. Het belangrijkste verschil tussen de volgende versie van SOAP 1.1 en initiële versie was de overgang van Microsoft's XML-Data naar XML Schema. Bovendien is de specificatie in de nieuwe versie niet langer afhankelijk van transportprotocollen. Om SOAP 1.0 te laten werken was het HTTP-protocol vereist, terwijl voor SOAP 1.1 het type transport er niet toe doet: je kunt gebruik maken van per e-mail of verwijzingen naar berichtenwachtrijen (massagequeving-links). Bedrijven die SOAP 1.0 al hadden ingevoerd, raakten gebonden aan de niet-standaardtechnologie van Microsoft. Een aantal veelbelovende producten van dit bedrijf, waaronder BizTalk Server en SQL Server 7.0, vertrouwen echter ook op XML-Data. Met de komst van versie 1.1 breidt de kring van voorstanders van het SOAP-protocol zich uit

Eerste versie van SOAP 1.1 ingediend bij de Task Force technische ondersteuning Internet IETF was gebaseerd op de XML-Data-technologie die in januari 1998 door Microsoft werd voorgesteld. Tijdens de herziening van de standaarden in het W3C-consortium werd de basisstructuur echter vervangen door XML Schema. Wereld Breed web Het Consortium werd gevraagd SOAP 1.1 als potentiële standaard te beschouwen.

Nieuwste specificatieversie Eenvoudig protocol Voorwerp Toegangsprotocol(SOAP) is beschikbaar op de webserver voor leden van het MSDN™ Developer Program (http://msdn.microsoft.com/). SOAP is een open, op standaarden gebaseerd protocol dat, op basis van XML (Extensible Markup Language), een gebruikelijk formaat definieert voor communicatie tussen internettoepassingen en -diensten. Deze versie breidt de mogelijkheden van SOAP voor asynchrone communicatie uit en omvat niet alleen ondersteuning voor HTTP, maar ook voor internetprotocollen zoals SMTP, FTP en TCP/IP. De nieuwste versie van de SOAP-specificatie heeft brede steun gekregen van bedrijven zoals ActiveState Tool Corp., Ariba Inc., BORN Information Services Inc., Commerce One Inc., Compaq Computer Corp., DevelopMentor Inc., Extensibility Inc., IBM, IONA Technologies PLC, Intel Corp., Lotus Development Corp., ObjectSpace Inc., Rogue Wave Software Inc., Scriptics Corp., Secret Labs AB, UserLand Software en Zveno Pty. Ltd. De SOAP-specificatie biedt algemeen mechanisme om diensten op internet en/of intranetten te integreren, ongeacht het gebruikte besturingssysteem, objectmodel of programmeertaal. Gebaseerd op de internetstandaarden XML en HTTP, zorgt SOAP ervoor dat nieuwe of bestaande applicaties met elkaar kunnen communiceren. SOAP-compatibele websites kunnen worden Webdiensten, puur programmatisch toegankelijk en zonder menselijke tussenkomst. Eén enkele infrastructuur die directe interactie tussen internetgerichte applicaties mogelijk maakt, opent nieuwe mogelijkheden voor het integreren van services en apparaten, ongeacht waar ze zich op internet bevinden.

Webservices en SOAP

Webservices en SOAP zijn ontworpen om de problemen van platformonafhankelijke applicatiecommunicatie op te lossen. Dit artikel helpt u inzicht te krijgen in deze nieuwe veelbelovende technologieën.

Wat is zeep

De momenteel gebruikte technologieën voor remote method calling (DCOM, CORBA/IIOP en RMI) zijn vrij lastig te configureren en interactie te organiseren. Dit brengt problemen met de werking en werking met zich mee. gedistribueerde systemen(beveiligingsproblemen, transport door firewalls, etc.). Bestaande problemen met succes opgelost door de creatie van SOAP (Simple Object Access Protocol), eenvoudig protocol, gebaseerd op XML, voor berichtenuitwisseling in gedistribueerde omgevingen (WWW). Het is ontworpen voor het op afstand creëren van webservices en aanroepmethoden. SOAP kan worden gebruikt met verschillende transportprotocollen, waaronder HTTP, SMTP, enz.

Wat zijn webservices

Webservices zijn de functionaliteit en gegevens die voor gebruik worden verstrekt externe toepassingen, die werken met services die standaardprotocollen en gegevensformaten gebruiken. Webservices zijn volledig onafhankelijk van de implementatietaal en het platform. Webservicestechnologie is de hoeksteen van software Microsoft-modellen.NETTO. Om de mogelijkheden van SOAP te demonstreren, heb ik de onlangs uitgebrachte implementatie van SOAP Toolkit versie 2.0 van Microsoft gebruikt. Opgemerkt moet worden dat de huidige versie van de Toolkit merkbaar verschilt van de vorige (Microsoft SOAP Toolkit voor Visueel Studio 6.0) en vanaf de bètaversie van SOAP Toolkit 2.0.

Mechanisme van interactie tussen client en server

  1. De clienttoepassing instantiëert het SOAPClient-object
  2. SOAPClient leest webserv(WSDL en Webdiensten Metataal - WSML). Deze bestanden kunnen ook op de client worden opgeslagen.
  3. Clienttoepassing met behulp van functies late binding methoden van het SOAPClient-object roept de servicemethode aan. SOAPClient genereert een verzoekpakket (SOAP Envelope) en verzendt dit naar de server. Elk transportprotocol kan worden gebruikt, maar doorgaans wordt HTTP gebruikt.
  4. Het pakket accepteert een Listener-servertoepassing (kan een ISAPI-toepassing zijn of ASP-pagina), maakt een SOAPServer-object en geeft het verzoekpakket daaraan door
  5. SOAPServer leest de beschrijving van de webservice, laadt de beschrijving en het aanvraagpakket in XML DOM-bomen
  6. SOAPServer roept een methode aan van het object/de applicatie die de service implementeert
  7. De resultaten van de uitvoering van de methode of de foutbeschrijving worden door het SOAPServer-object omgezet in een antwoordpakket en naar de client verzonden
  8. Het SOAPClient-object parseert het ontvangen pakket en keert terug klant applicatie resultaten van de dienst of een beschrijving van de opgetreden fout.

WSDL-bestand is een document in XML-formaat, waarin de methoden worden beschreven die door de webservice worden aangeboden. Ook parameters van methoden, hun typen, namen en locatie van de service Listener. De SOAP Toolkit-wizard genereert dit document automatisch.

SOAP-envelop (pakket) - een XML-document dat een verzoek/antwoord bevat voor het uitvoeren van een methode. Het is het handigst om het te beschouwen als een postenvelop waarin informatie is ingesloten. De Envelop-tag moet het hoofdelement van het pakket zijn. Het Header-element is optioneel, maar het Body-element moet aanwezig zijn en een direct onderliggend element zijn van het Envelope-element. Als er een methode-uitvoeringsfout optreedt, genereert de server een pakket met daarin een Fault-element in de Body-tag, dat een gedetailleerde beschrijving van de fout bevat. Als u de interfaces op hoog niveau SOAPClient, SOAPServer gebruikt, hoeft u niet in te gaan op de fijne kneepjes van het pakketformaat, maar kunt u desgewenst interfaces op laag niveau gebruiken of zelfs met de hand een pakket maken.

Het SOAP Toolkit-objectmodel maakt het mogelijk om met API-objecten op laag niveau te werken:

  • SoapConnector - Biedt werk met het transportprotocol voor het uitwisselen van SOAP-pakketten
  • SoapConnectorFactory - Biedt een methode voor het maken van een connector voor het transportprotocol dat is opgegeven in WSDL-bestand(tag)
  • SoapReader - Leest SOAP-berichten en bouwt XML DOM-bomen
  • SoapSerializer - Bevat methoden voor het maken van een SOAP-bericht
  • IsoapTypeMapper, SoapTypeMapperFactory - Interfaces waarmee u met complexe gegevenstypen kunt werken

Met API-objecten op hoog niveau kunt u alleen gegevens overdragen eenvoudige soorten(int, srting, float...), maar de SOAP 1.1-specificatie staat complexere gegevenstypen toe, zoals arrays, structuren, lijsten en combinaties daarvan. Om met dergelijke typen te werken, moet u de interfaces IsoapTypeMapper en SoapTypeMapperFactory gebruiken.

Wat is zeep?

SOAP staat voor Simple Object Access Protocol. Ik hoop dat je na het lezen van het artikel alleen maar de vraag zult stellen: “Wat is dit voor een vreemde naam?”

SOAP in zijn huidige vorm is een RPC-methode (Remote Procedure Call) via een netwerk. (Ja, het wordt ook gebruikt om documenten als XML over te dragen, maar dat laten we voorlopig buiten beschouwing.)

Laten we het uitzoeken. Stel u voor dat u een dienst heeft die een aandelenkoers retourneert voor een bepaalde ticker (aandelensymbool). Het stuurt de gegevens naar de Nasdaq-site en genereert deze op basis van de geretourneerde HTML gewenst resultaat. Vervolgens maak je van deze dienst een onderdeel dat via internet informatie over offertes opzoekt, zodat andere ontwikkelaars het binnen hun applicaties kunnen gebruiken. Het werkt prima totdat Nasdaq op een dag de lay-out van zijn pagina's verandert. Je moet de hele logica van de component heroverwegen en updates sturen naar alle ontwikkelaars die er gebruik van maken. En zij moeten op hun beurt updates naar al hun gebruikers sturen. Als dit min of meer gebeurt op een voortdurende basis, kun je veel vijanden maken onder je mede-ontwikkelaars. En met programmeurs moet je, zoals je weet, niet spotten. Je wilt morgen toch niet een foto van je favoriete kat uit de papierversnipperaar halen?

Wat te doen? Laten we eens kijken... het enige wat u nodig heeft is één functie aan te bieden die als invoer een tickersymbool (type string) gebruikt en een aandelenkoers retourneert (type float of double). Zou het dus niet eenvoudiger zijn om uw ontwikkelaars deze functie op de een of andere manier gewoon via internet te laten aanroepen? Geweldig! Ook nieuws voor mij: er zijn COM en Corba en Java die dit al jaren doen... wat waar is, is waar, maar deze methoden zijn niet zonder gebreken. Op afstand COM-instelling niet triviaal. Bovendien moet je zoveel poorten in de firewall openen dat je niet genoeg bier aankan voor een systeembeheerder. Ja, en je zult alle gebruikers moeten vergeten besturingssystemen behalve Windows. Maar Linux-gebruikers zijn soms ook geïnteresseerd in de uitwisseling.

Hoewel het erop lijkt dat niet alles verloren is Linux-gebruikers als ze DCOM gebruiken, meer hier: http://www.idevresource.com/com/library/res/articles/comonlinux.asp.

Ik kan niet veel zeggen over Corba en Java, dus als oefening nodig ik lezers uit om de nadelen van deze benaderingen te ontdekken.

SOAP is een standaard waarmee je zo’n oproep op afstand kunt beschrijven en de vorm waarin het resultaat terugkomt. U moet uw functie dus hosten in een applicatie die toegankelijk is via het netwerk en oproepen ontvangen als SOAP-pakketten. Vervolgens valideert u de invoer, voert u uw functie uit en retourneert u het resultaat in een nieuw SOAP-pakket. Het hele proces kan via HTTP verlopen, zodat u niet een hele reeks poorten op uw firewall hoeft te openen. Is het echt eenvoudig?

Waar gaat dit artikel over?

Dit is de eerste in een reeks artikelen die we schrijven over SOAP bij Agni Software. In dit artikel zal ik proberen je een idee te geven van wat SOAP is en hoe je een applicatie schrijft die communiceert met een SOAP-server.

Zeep en XML

Als SOAP je nog steeds eenvoudig lijkt, laten we XML toevoegen. Nu krijgen we in plaats van de functienaam en parameters een nogal complexe XML-envelop, alsof deze is ontworpen om u in verwarring te brengen. Maar haast je niet om bang te worden. Er komt meer bij kijken en je moet het hele plaatje zien om de complexiteit van SOAP te kunnen begrijpen.
Als je niet weet wat XML is, lees dan eerst mijn artikel over XML hier: http://www.agnisoft.com/white_papers/xml_delphi.asp.

Alle SOAP-pakketten zijn in XML-formaat. Wat betekent het? Laten we eens kijken. Kijk eens naar deze functie (Pascal):
functie GetStockQuote(Symbool: string) : dubbel; Het ziet er geweldig uit, maar het probleem is dat het Pascal is. Wat is het nut hiervan eenvoudige definitie
voor een Java-ontwikkelaar? Of voor iemand die met VB werkt? We hebben iets nodig dat voor iedereen begrijpelijk is, zelfs voor VB-programmeurs. Geef ze dus XML met dezelfde informatie (parameters, aandelenkoersen, enz.). U maakt een SOAP-pakket, dat in wezen een oproep is voor uw functie, verpakt in XML, zodat elke toepassing op elk platform het kan begrijpen. Laten we nu eens kijken hoe onze SOAP-oproep eruit ziet:
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"


xmlns:xsd="http://www.w3.org/1999/XMLSchema">


IBM

Informatief, toch? SOAP wordt steeds gemakkelijker voor onze ogen. Oké, grapjes opzij. Nu zal ik proberen u uit te leggen hoe u deze SOAP-oproep kunt begrijpen.

Tag-decodering De eerste tag die in het oog springt is . Dit label is buitenste schil

Een SOAP-pakket met verschillende naamruimtedeclaraties waar we niet bijzonder in geïnteresseerd zijn, maar die erg belangrijk zijn voor elke programmeertaal of parser. Naamruimten worden gedefinieerd om ervoor te zorgen dat daaropvolgende voorvoegsels zoals "SOAP-ENV:" of "xsd:" door de parser worden begrepen. Volgende label – . (We hebben een tag gemist die hier niet wordt weergegeven - . Het staat niet in dit specifieke voorbeeld, maar als je er meer over wilt lezen, bekijk dan hier de SOAP-specificatie: http://www.w3.org/TR/SOAP/). Label

bevat feitelijk een SOAP-oproep. De volgende tag in de lijst is

. De tagnaam, GetStockQuote, is de functie die wordt aangeroepen. In SOAP-terminologie wordt dit een bewerking genoemd. GetStockQuote is dus de bewerking die moet worden uitgevoerd. ns1 is de naamruimte die in ons geval naar urn:xmethods-quotes verwijst. Een opmerking over naamruimten: Een naamruimte maakt het mogelijk een XML-tag te kwalificeren. U kunt bijvoorbeeld niet twee variabelen hebben in één procedure, maar als ze zich in twee verschillende procedures bevinden, is er geen probleem. Een procedure is dus een naamruimte, omdat alle namen daarin uniek zijn. Precies hetzelfde XML-tags hebben hun eigen bereik binnen naamruimten, dus op basis van de naamruimte en tagnaam kunt u deze uniek identificeren. We definiëren de naamruimte als een URI om onze NS1 te onderscheiden van copycats. In het bovenstaande voorbeeld is NS1 een alias die verwijst naar urn:xmethods-quotes.

Let ook op het encodingStyle attribuut: dit attribuut bepaalt hoe de SOAP-oproep wordt geserialiseerd.

Binnen een label bevat parameters. In ons eenvoudigste geval hebben we slechts één parameter: tag . Let op deze regel naast de tag:
xsi:type=”xsd:string”
Dit is ongeveer hoe typen in XML worden gedefinieerd. (Merk op hoe slim ik het woord ‘ongeveer’ heb gebruikt toen ik generaliseerde over technologie die kan veranderen zodra het artikel is gepubliceerd.) Wat betekent dit precies: een type dat is gedefinieerd in de xsi-naamruimte en waarvan u zult merken dat het in de tag is gedefinieerd – xsd:tekenreeks. En dit is op zijn beurt een string, gedefinieerd in de xsd-naamruimte, wederom eerder gedefinieerd. (Ik weet zeker dat advocaten hier heel blij mee zouden zijn).

Binnen een label "IBM" wordt aangegeven. Dit is de waarde van de symboolparameter van de GetStockQuote-functie.

Nou, uiteindelijk hebben we, net als fatsoenlijke mensen, alle tags gesloten.

Dus we hebben het SOAP-pakket ontdekt dat de oproep naar de SOAP-server definieert. En de SOAP-server decodeert deze oproep, met behulp van XML-parsers, de rode knop en het MIR-ruimtestation, en bepaalt dat u een aandelenkoers nodig heeft. Hij vindt meteen de juiste offerte en stuurt deze in deze vorm aan u terug:
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>


34.5


Na het uitpakken van de SOAP-envelop, het afscheuren van de linten en het ritselen van de verpakking, vernemen we dat de koers van het IBM-aandeel 34,5 bedraagt.

De meeste commerciële servers zouden veel meer informatie retourneren, zoals in welke valuta en tegen welke prijs de laatste voorraad is gekocht. En de aandelenkoers zou misschien nauwkeuriger zijn geweest.

Zo weten wij wat de SOAP-server verwacht en wat deze teruggeeft. Dus HOE verzendt u deze informatie? Je kunt gebruik maken van elk vervoermiddel. Het meest gedekt is HTTP. Ik zal niet in detail treden over HTTP, voor degenen die het niet weten: dit is wat uw browser gebruikt om te communiceren met de sites die u bezoekt.

Nodig HTTP-verzoek zal er ongeveer zo uitzien:
POST/StockQuote HTTP/1.1
Host: www.stockquoteserver.com

Inhoud-lengte: nnnn
SOAPActie: "Sommige-URI"

Het soap-verzoekpakket hier... Het enige andere dat het vermelden waard is, is de SOAPAction-header. Deze header geeft het doel van het verzoek aan en is vereist. Elke SOAP-server kan een onbeperkt aantal functies hebben en kan aan de hand van de SOAPAction-header bepalen welke functie wordt aangeroepen. Firewalls en multiplexers kunnen ook inhoud filteren op basis van deze header.

Het SOAP-antwoord van de HTTP-server ziet er als volgt uit:
HTTP/1.1 200 OK
Inhoudstype: tekst/xml; tekenset = "utf-8"
Inhoud-lengte: nnnn

Soap Response-pakket hier... Waarom HTTP? Ten eerste hoeven netwerkbeheerders niet veel aparte poorten te openen voor SOAP-oproepen... de webserver kan de oproepen met gemak afhandelen, omdat Poort 80 staat doorgaans voor iedereen open om inkomende verzoeken te ontvangen. Een ander voordeel is de uitbreidbaarheid van webservers met behulp van CGI, ISAPI en andere native modules. Dankzij deze uitbreidbaarheid kunt u een module schrijven die SOAP-verzoeken verwerkt zonder andere webinhoud te beïnvloeden.

Dat is alles

Ik hoop dat dit artikel enig licht heeft geworpen op SOAP. Als je nog steeds hier bent en meer over dit onderwerp wilt lezen, bezoek dan de website van de auteur: http://www.agnisoft.com/soap

Eenvoudig Object Access Protocol (SOAP) is een op XML gebaseerd protocol dat de regels definieert voor het verzenden van berichten via internet tussen verschillende applicatiesystemen. Het wordt voornamelijk gebruikt voor externe procedureaanroepen. SOAP is oorspronkelijk ontworpen om ‘boven’ HTTP te functioneren (om de integratie van SOAP in webapplicaties te vereenvoudigen), maar nu kunnen ook andere transportprotocollen, zoals SMTP, worden gebruikt.

Stel dat u een applicatietoegangsservice op internet maakt; Consumenten hebben interactie met deze dienst door deze van informatie te voorzien. Uw servers verwerken de gegevens en sturen de resultaten terug naar consumenten. Wat is de beste manier om de communicatie met het systeem te onderhouden?

Je zou er een op maat kunnen maken client-server-applicatie en van consumenten eisen dat ze een speciaal clientprogramma gebruiken om toegang te krijgen tot uw service. Maar als je serieus wilt gaan werken in de internetwereld, zul je een client moeten maken die op alle mogelijke clientplatforms draait: Windows, Macintosh, Unix, Linux, enz. Met andere woorden, je zult veel verschillende clients moeten schrijven .

Wat vindt u van het gebruik van internet? Deze oplossing is natuurlijk heel acceptabel, maar is nauw verbonden met de browserimplementatie, en ook hier zul je een infrastructuur moeten creëren om inkomende en uitgaande informatie te verzenden en ontvangen, en de gegevens voor een dergelijke uitwisseling te formatteren en te verpakken. Voor implementatie complexe toepassingen u kunt Java of ActiveX kiezen, maar sommige gebruikers zullen uw diensten weigeren vanwege duidelijk te hoge bandbreedtevereisten en onvoldoende beveiliging.

Het enige dat nodig is, is een eenvoudig protocol dat het verpakken van applicatiegegevens vereenvoudigt en deze op een aan de inhoud aangepaste manier over het web verzendt. XML-taal. Door dit te doen, zorgt het ervoor dat zowel de afzender als de ontvanger de inhoud van elk bericht gemakkelijk kunnen interpreteren. Tegelijkertijd zal het dankzij het gebruik van het HTTP-webprotocol als transportmiddel mogelijk zijn om de noodzaak om het niveau van firewallbescherming te verlagen te elimineren.

Het goed beschreven Simple Object Access Protocol (SOAP) is een eenvoudig ‘lijm’-protocol waarmee hosts op afstand applicatieobjecten kunnen aanroepen en resultaten kunnen retourneren. SOAP-aanbiedingen minimale instelling voorwaarden waardoor een applicatie berichten kan doorgeven: de client kan een bericht verzenden om een ​​programmaobject aan te roepen, en de server kan de resultaten van die oproep retourneren.

SOAP is vrij eenvoudig: berichten zijn XML-documenten met SOAP-opdrachten. Hoewel SOAP theoretisch aan elk transportprotocol voor toepassingen kan worden gekoppeld, wordt het doorgaans in combinatie met HTTP gebruikt.

Kennard Scribner, een van de auteurs van het boek SOAP begrijpen: de gezaghebbende oplossing(Macmillan USA, 2000), zegt dat SOAP werkt door de informatie die nodig is om een ​​methode aan te roepen (zoals argumentwaarden en transactie-ID's) om te zetten in XML-formaat.

De gegevens zijn ingekapseld in HTTP of iets anders transportprotocol en worden verzonden naar de ontvanger, meestal de server. Deze server haalt de SOAP-gegevens uit het pakket, voert de vereiste verwerking uit en retourneert de resultaten als een SOAP-antwoord.

Scribner merkte op dat SOAP fungeert als een remote procedure call-protocol, vergelijkbaar met het Remote Method Invocation-protocol in Java of het General Inter-ORB Protocol in CORBA.

Omdat HTTP en XML vrijwel overal worden gebruikt, lijkt SOAP het meest schaalbare protocol voor externe procedureaanroepen dat tot nu toe is gebouwd, aldus Scribner. SOAP is niet ontworpen om te fungeren als een complete objectarchitectuur.

SOAP vervangt het Remote Method Invocation-protocol in Java, Distributed Component niet Objectmodel en CORBA; het biedt regels die elk van deze modellen kan gebruiken. SOAP is dat niet volledige oplossing. Het ondersteunt geen objectactivering of -beveiliging. Volgens Scribner "vertrouwen SOAP-ontwikkelaars erop dat gebruikers deze code zelf zullen toevoegen" door deze bovenop SOAP te bouwen, in plaats van deze onderdeel te maken van het protocol zelf.

De afbeelding toont een voorbeeld uit de SOAP 1.1-specificatie waarin een host een offerteservice aanvraagt ​​voor de prijs van een bepaald aandeel. Het SOAP-verzoek is ingebed in een HTTP POST en de verzoektekst specificeert het type verzoek en de parameter: het aandelensymbool. Het antwoord biedt ook XML-object, ingekapseld in een HTTP-antwoord met een enkele retourwaarde (34,5 in in dit geval).

Kenmerken van SOAP

MET gebruik van SOAP Ontwikkelaars kunnen net zo snel webservices maken als ze SOAP-berichten kunnen schrijven om programma's voor bestaande applicaties aan te roepen, en die applicaties vervolgens aan eenvoudige webpagina's toevoegen. Maar daarnaast hebben ontwikkelaars de mogelijkheid om SOAP-oproepen in speciale applicaties te gebruiken en applicaties te creëren die naar de webpagina's van anderen kunnen worden geporteerd, waardoor het tijdrovende en dure ontwikkelingsproces wordt vermeden.

Volgens Mark Stiver, een andere auteur van het boek Understanding SOAP, is dit precies het doel dat Microsoft nastreeft met zijn veelbelovende .Net-platform. “Dit is waar SOAP uitblinkt. Het geeft ontwikkelaars een geweldige manier om applicaties te maken zonder zich zorgen te hoeven maken over mogelijke incompatibiliteit”, zegt hij.

SOAP-voorbeeld

Het volgende voorbeeld illustreert een SOAP-verzoek met de naam GetLastTradePrice, waarmee een klant een verzoek kan verzenden voor de nieuwste koersen voor een specifiek aandeel.

POST/StockQuote HTTP/1.1
Gastheer: stockquoteserver.com
Inhoudstype: tekst/xml; tekenset = "utf-8"
Inhoud-lengte: nnnn
SOAPActie:"Sommige-URI"

De eerste vijf regels (onderdeel van de HTTP-header) specificeren het berichttype (POST), de host, het payload-type en de payload-lengte, en de SOAPAction-header specificeert het doel van het SOAP-verzoek. Het SOAP-bericht zelf is dat wel XML-document, waarbij de SOAP-envelop eerst komt, en vervolgens een XML-element dat de SOAP-naamruimte en eventuele attributen specificeert. Een SOAP-envelop kan een header bevatten (maar in dit geval niet), gevolgd door een SOAP-body. In ons voorbeeld bevat de hoofdtekst het GetLastTradePrice-verzoek en het symbool van het aandeel waarvoor de laatste koersen worden opgevraagd. Het antwoord op deze vraag zou er als volgt uit kunnen zien:

HTTP/1.1 200 OK
Inhoudstype: tekst/xml; tekenset = "utf-8"
Inhoud-lengte: nnnn

Nogmaals, de eerste drie regels maken deel uit van de HTTP-header; Het SOAP-bericht zelf bestaat uit een envelop die het antwoord op het oorspronkelijke verzoek bevat, met de naam GetLastTradePriceResponse, en de retourwaarde bevat, in ons geval 34.5.

ZEEP-een tekstprotocol dat XML gebruikt om gestructureerde berichten uit te wisselen in een gedistribueerde computeromgeving. SOAP was oorspronkelijk vooral bedoeld om te implementeren oproep op afstand procedures (RPC), en de naam was een afkorting: Simple Object Access Protocol - een eenvoudig protocol voor toegang tot objecten. Het protocol wordt nu gebruikt om willekeurige berichten in XML-formaat uit te wisselen, en niet alleen om procedures aan te roepen. Officiële specificatie nieuwste versie 1.2 van het protocol ontcijfert de naam SOAP op geen enkele manier. SOAP is een uitbreiding van het XML-RPC-protocol. SOAP kan met elk protocol worden gebruikt toepassingsniveau: SMTP, FTP, HTTP, enz. De interactie met elk van deze protocollen heeft echter zijn eigen kenmerken, die afzonderlijk moeten worden gedefinieerd. Meestal wordt SOAP via HTTP gebruikt. SOAP is een van de standaarden waarop webservicetechnologieën zijn gebaseerd. De communicatie tussen webservices en hun klanten vindt plaats via berichten in XML-formaat. SOAP (Simple Object Access Protocol) is een berichtenprotocol voor het selecteren van webservices. We kunnen zeggen dat het SOAP-formaat ideaal is voor RPC-technologie (Remote Procedure Call), omdat het SOAP-bericht parameters bevat die door de client zijn verzonden of een retourwaarde die door de service is verzonden.

Voordelen van het gebruik van het SOAP-formaat:

· Flexibelere gegevenstypen.

· Ondersteuning voor headers en extensies:

Gebreken:

· Het gebruik van SOAP om berichten te verzenden verhoogt het volume ervan en verlaagt de verwerkingssnelheid. In systemen waar snelheid belangrijk is, is het gebruikelijker om XML-documenten rechtstreeks via HTTP te verzenden, waarbij de verzoekparameters worden doorgegeven als reguliere HTTP parameters.

· Hoewel SOAP een standaard is, diverse programma's genereren vaak berichten in incompatibel formaat. Een verzoek gegenereerd door een AXIS-client zal bijvoorbeeld niet worden begrepen door de WebLogic-server.

Basisconcepten van het protocol: De partij die het SOAP-bericht verzendt, wordt de SOAP-afzender genoemd en de partij die het SOAP-bericht ontvangt, wordt de SOAP-ontvanger genoemd. Het pad dat een SOAP-bericht aflegt van de oorspronkelijke afzender naar de uiteindelijke ontvanger wordt de berichtenroute genoemd. De berichtroute bevat de oorspronkelijke afzender, de uiteindelijke ontvanger en 0 of meer SOAP-tussenpersonen. Objecten die berichten verwerken volgens de regels van specifieke SOAP-protocollen worden SOAP-knooppunten genoemd. De elementaire informatie-eenheid die deelneemt aan de uitwisseling tussen SOAP-knooppunten wordt genoemd SOAP-bericht is een XML-document met een SOAP-wrapper rond het hoofdelement.