ZEEP

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken
SOAP in de TCP / IP-protocolstack :
gebruik maken van ZEEP
HTTP HTTPS ...
vervoer- TCP
internet IP ( IPv4 , IPv6 )
Netwerktoegang Ethernet token
bus
token
ring
FDDI ...

SOAP (oorspronkelijk voor Simple Object Access Protocol ) is een netwerkprotocol waarmee gegevens tussen systemen kunnen worden uitgewisseld en procedureaanroepen op afstand kunnen worden uitgevoerd. SOAP is een industriële standaard van het World Wide Web Consortium (W3C).

SOAP is gebaseerd op XML om de gegevens weer te geven en op internetprotocollen van de transport- en applicatielaag (cf. TCP/IP-referentiemodel ) om de berichten te verzenden . De meest voorkomende combinatie is SOAP over HTTP en TCP . SOAP kan bijvoorbeeld ook over SMTP [1] of JMS [2] worden gebruikt . De gebruikersgegevens die met het bericht worden verzonden, hoeven niet per se in XML te worden verzonden, andere formaten zoals Base64 of CSV zijn ook mogelijk. [3] [4] De afkorting SOAP wordt officieel niet boven versie 1.2 acroniem gebruikt aangezien het ten eerste (subjectief) in geen geval eenvoudig is (Simple), en ten tweede niet alleen toegang tot gebruikte objecten (Object Access).

verhaal

Dave Winer (de "vader" van RSS 2.0) en Microsoft ontwikkelden de specificatie voor XML-RPC in 1998. Als verdere ontwikkeling ontstond SOAP, dat eind 1999 in versie 0.9 verscheen. De reactie van de ontwikkelaars was echter nog steeds erg voorzichtig. Versie 1.0 werd later uitgebracht in 1999. Toen vond ontwikkeling meer steun. Dit blijkt vooral uit het feit dat IBM zich in 2000 bij de ontwikkeling van SOAP aansloot, wat ertoe leidde dat IBM, Microsoft, DevelopMentor (Don Box) en UserLand Software (Dave Winer) de SOAP 1.1-specificatie overnamen op het World Wide Web Consortium (W3C ) ingediend. Het doel was om een werkgroep te starten om SOAP verder te ontwikkelen. Het resultaat van deze werkgroep is SOAP versie 1.2, de aanbevelingen (in juni 2003 Engelse aanbeveling) werden erkend. Een belangrijke verandering was dat SOAP geen acroniem meer is , aangezien alle interpretaties voor SOAP , zoals Simple Object Access Protocol of Service Oriented Architecture Protocol , niet voldoen aan de volledige betekenis van SOAP. Het feit dat SOAP niet langer als een gangbare afkorting wordt opgevat, maakte het mogelijk om SOAP als merknaam in de VS te registreren.

Manier van werken

SOAP is een protocol voor de uitwisseling van op XML-informatieset gebaseerde berichten via een computernetwerk en heeft de status van een W3C- aanbeveling. Het stelt regels vast voor het ontwerpen van berichten. Het regelt hoe gegevens in het bericht in kaart moeten worden gebracht en geïnterpreteerd en specificeert een conventie voor procedureaanroepen op afstand met behulp van SOAP-berichten. SOAP voorziet niet in de semantiek van applicatie-specifieke gegevens die verzonden moeten worden, maar voorziet in een framework ( framework ) waarmee alle applicatie-specifieke informatie kan worden verzonden. SOAP wordt gebruikt voor procedureoproepen op afstand, maar ook voor eenvoudige berichtensystemen of voor gegevensuitwisseling . Elk transportprotocol kan worden gebruikt om berichten te verzenden, bijvoorbeeld FTP , SMTP , HTTP of JMS . In de praktijk wordt HTTP meestal gebruikt vanwege de compatibiliteit met veelvoorkomende netwerkarchitecturen (zoals firewalls). De versleutelde verzending van SOAP-berichten is ook mogelijk via HTTPS . Dit staat echter geen end-to-end-codering toe. Dit wordt mogelijk gemaakt door WS-Security , dat begint op berichtniveau en niet op het niveau van het onderliggende transportprotocol. Bij gebruik van HTTP (S), wordt de XML-informatieset van het SOAP-verzoek als XML verzonden naar een bepaalde URL in de hoofdtekst van een HTTP POST-verzoek .

SOAP wordt regelmatig gebruikt waar directe toegang vanuit externe systemen tot een informatiebron geen zin heeft. Dit kan te wijten zijn aan compatibiliteitsproblemen tussen verschillende applicatiearchitecturen , maar ook aan veiligheidsaspecten. Hierdoor is (gedeeltelijke) toegang tot een database mogelijk zonder dat het gebruikersprogramma direct toegang hoeft te krijgen. Het aantal uitvoerbare methoden kan worden geregeld en gedefinieerd via de SOAP-interface.

Communicatie met SOAP maakt het mogelijk systemen te koppelen, maar het open ontwerp van SOAP maakt het alleen mogelijk om zwak gekoppelde systemen op te zetten. De flexibiliteit van het concept wordt gekocht ten koste van nadelen in termen van transmissievolume en rekeninspanning . Het XML-document moet eerst worden ingesteld bij de afzender en vervolgens worden gevalideerd. Het concept streeft het doel van een lichtgewicht protocol na, maar door het flexibele toepassingsgebied heeft het over te dragen bestand een reeks metadata die worden toegevoegd wanneer het XML-document wordt opgebouwd. Zo leidt het simpelweg verzenden van "true" of "false" tot een datavolume van enkele honderden bytes, hoewel in theorie één bit voldoende zou zijn in een sterk gekoppeld systeem. Door de mogelijkheid van de flexibele structuur van het document kunnen complexe transacties echter atomair in één aanvraag worden gecombineerd, terwijl in sterk gekoppelde systemen vaak meerdere aanvragen hiervoor moeten worden gedaan. Dit verbetert de payload ratio (payload to metadata) en de communicatie-inspanning (voor het opzetten van een verbinding, alleen verzenden/ontvangen).

SOAP maakt onderscheid tussen de eindontvanger en tussenontvangers. Dit maakt het mogelijk om een ​​bericht te versturen via verschillende "hops", die zelfs verschillende transportprotocollen gebruiken. Het bericht kan bijvoorbeeld naar de eerste hop worden verzonden met behulp van de Java Message Service , vervolgens via e-mail en uiteindelijk naar de ontvanger met HTTP. De afzender hoeft geen informatie te hebben over de tussenliggende hops, maar de middleware wel.

Structuur van SOAP-berichten

SOAP-structuur

Een minimaal SOAP-bericht bestaat uit een element dat een envelop wordt genoemd en waaraan een lokale naam moet worden toegewezen. Dit element verwijst door middel van een namespace-attribuut naar http://www.w3.org/2003/05/soap-envelope . Het kind van dit element moet een lichaamselement zijn. Eventueel kan vooraf een header- element worden toegevoegd. Hierin kan meta-informatie worden ondergebracht, bijvoorbeeld over routering, encryptie of transactie-identificatie. De daadwerkelijke gebruikersgegevens zijn ondergebracht in het body- element.

Structuur van een SOAP-bericht:

 <? xml-versie = "1.0"?>
<s: Envelop xmlns: s = "http://www.w3.org/2003/05/soap-envelope" >
    <s: kop>
    </ s: kop>
    <s: Lichaam>
    </ s: Lichaam>
</ s: Envelop>

Het body- element kan informatie over gegevensuitwisseling bevatten, evenals instructies voor een procedureaanroep op afstand. Dit dient door de ontvanger dienovereenkomstig te worden geïnterpreteerd.

De volgende hop (tussenpersoon) en de uiteindelijke ontvanger (uiteindelijke ontvanger) worden in de kop vermeld. [5] Een tussenpersoon kan het bericht bijvoorbeeld versleutelen, loggen of het bericht splitsen. Het eerste betekent dat de applicatielogica zich geen zorgen hoeft te maken over de beveiliging van het bericht, maar dat de middleware ervoor zorgt. De mogelijkheid dat intermediairs alles kunnen doen, wordt mogelijk gemaakt door enterprise applicatie-integratie, bijvoorbeeld met de EAI-patronen van Gregor Hohpe en Bobby Woolf [6] .

Werken met SOAP

SOAP wordt gebruikt voor databasequery's via een internetinterface. eBay of Amazon gebruiken deze technologie bijvoorbeeld om zoekopdrachten te verwerken. In het volgende dient via een internetinterface bij een centrale database te worden nagevraagd of er een werk is met de titel “DOM, SAX en SOAP”, en zo ja, dan wordt deze teruggestuurd. Deze database biedt hiervoor de "TitleInDatabase"-methode, waarbij de titel moet worden ingevoerd. Een aanvraag kan er dan als volgt uitzien:

 <? xml-versie = "1.0"?>
<s: Envelop xmlns: s = "http://www.w3.org/2003/05/soap-envelope" >
    <s: Lichaam>
        <m: TitleInDatabase xmlns: m = "http://www.lecture-db.de/soap" >
            DOM, SAX en SOAP
        </ m: TitleInDatabase>
    </ s: Lichaam>
</ s: Envelop>

Dit SOAP-verzoek bevat geen header- element. Het element "TitleInDatabase" is geen onderdeel van de SOAP-definitie, maar applicatiespecifiek. De server ontvangt het bericht en evalueert het. Zowel SAX als DOM kunnen worden gebruikt om het bericht in te lezen. In dit geval kan een SAX-parser worden aanbevolen die een overeenkomstige databasequery aanroept op "startElement ("TitelInDatabase", [...])", waarvan de invoerwaarde wordt ingelezen bij de volgende "karaktergebeurtenis". Op deze manier kan een parallellisme worden bereikt tussen het inlezen en de evaluatie van het bericht. Vervolgens wordt in dit voorbeeld een SOAP-bericht als antwoord geretourneerd:

 <? xml-versie = "1.0"?>
<s: Envelop xmlns: s = "http://www.w3.org/2003/05/soap-envelope" >
    <s: kop>
        <m: RequestID xmlns: m = "http://www.lecture-db.de/soap" > a3f5c109b </ m: RequestID>
    </ s: kop>
    <s: Lichaam>
        <m: DbResponse xmlns: m = "http://www.lecture-db.de/soap" >
            <m: titelwaarde = "DOM, SAX en SOAP" >
                <m: Keuzewaarde = "1" > Werkrapport informatica </ m: Keuze>
                <m: Keuzewaarde = "2" > Seminar XML en databases </ m: Keuze>
            </ m: titel>
        </ m: DbResponse>
    </ s: Lichaam>
</ s: Envelop>

De server heeft een header- element aan zijn antwoord gekoppeld, dat in dit voorbeeld de aanvraag-ID retourneert. De gevraagde informatie is te vinden in de hoofdtekst van het bericht. In dit geval zijn er twee werkstukken gevonden en teruggestuurd naar het aanvragende systeem. Dit leidt hierna tot onderlinge communicatie, een dialooggerichte uitwisseling van XML-documenten met SOAP, waarna het gevraagde element wordt verzonden.

Implementaties

Extensies op basis van SOAP

  • WS-Reliability (Web Services Reliability): Beveiligingsmechanismen, b.v. B. Om transacties betrouwbaar te kunnen verwerken [8]
  • WS-Security (Web Services Security): Waarborgen van de integriteit en vertrouwelijkheid van berichten [9]
  • WSRP (Web Services for Remote Portlets): Integratie van presentatielogica in portals [10]
  • verdere specificaties: WS- *
  • TR-069 CPE WAN-beheerprotocol (CWMP)

Zie ook

  • Service Oriented Architecture (SOA) - architectuur gebaseerd op SOAP of vergelijkbare protocollen
  • UDDI (gebaseerd op SOAP; gebruikt SOAP)
  • WSDL - beschrijvingstaal voor op SOAP gebaseerde interfaces inclusief een berichtbeschrijving
  • SoapUI - tool voor het testen van SOAP-berichten
  • Hessisch , Jute - alternatieve protocollen
  • MTOM - protocol voor het verzenden van binaire gegevens binnen SOAP-berichten
  • SOAP met bijlagen - W3C- voorstel voor het transport van SOAP-berichten binnen MIME-berichten
  • DSSP - een SOAP-gebaseerd protocol [11] voor de Microsoft Robotic Developer Studio

Verder:

web links

Individueel bewijs

  1. nl: SOAP Versie 1.2 E-mailbinding
  2. nl: SOAP via Java Message Service 1.0
  3. nl: SOAP Message Construct
  4. nl: XmlCsvReader-implementatie
  5. nl: SOAP-verwerkingsmodel
  6. nl: Patronen en best practices voor bedrijfsintegratie
  7. TclSOAP
  8. ( Web Services Betrouwbare Messaging TC WS-Betrouwbaarheid 1.1 )
  9. ( Beveiliging van webservices ( Memento van 16 september 2012 in het internetarchief ))
  10. ( specificatie webservices voor externe portlets )
  11. Gedecentraliseerd Software Services Protocol - DSSP / 1.0