Innføring i SOAP Mari Svalastog (mariss@ifi.uio.no) Joakim Blomskøld (joakimbl@ifi.uio.no) Erlend Nilsen (erlend@ifi.uio.no) Sten Amundsen (stena@simula.no) Dato: 28 oktober 2003 Agenda Motivasjon og oversikt Teknisk gjennomgang Eksempel på bruk Sammenligning mot CORBA Fordeler og ulemper 2
Introduksjon (1) SOAP = Simple Object Access Protocol En lettvekts XML-basert protokoll for informasjonsutveksling i et distribuert miljø. Meldingsbasert kommunikasjon mellom applikasjoner. Uavhengig av plattform og programmeringsspråk. 3 Introduksjon (2) Baserer seg på eksisterende teknologi: XML for koding av meldinger hvilken som helst protokoll for transport (HTTP, SMTP, FTP, TCP etc.) Velegnet for interaksjon i Web Services. Basert på åpne standarder og spesifikasjoner 4
Bakgrunn Motivasjon: - Applikasjoners behov for samhandling på tvers av forskjellige plattformer, OS og brannmurer. - Med Internett kom et behov for å utføre interaksjon prosesser utenfor lokalnettet. - Behov for en mer interaktiv web. Prosjekt startet av Microsoft, DevelopMentor og UserLand Software i april 1998. En gruppe ledende selskaper, blant annet Microsoft, IBM, HP, Compaq og Lotus, foreslo SOAP 1.1 for W3C i mai 2000. Versjon 1.2 ble anbefalt av W3C 24. juni 2003. 5 Hype Mer interesse er knyttet til SOAP enn til de fleste andre, velprøvde teknologier. Grunner til dette kan være: Mer spennende med nye teknologier enn teknologier man har benyttet og sett feil og komplikasjoner med. Mer interessant å skrive og spekulere i ny teknologi framfor gammel og velprøvd. Mange tunge støttespillere. Internett og Web Services er i skuddet. SOAP er designet for disse. Snøballeffekt. Folk vil være med på hypen. Mye oppstuss basert på teknologi som egentlig ikke er ny! 6
Sikkerhet SOAP har ingen støtte for sikkerhet. Det er ikke definert som en del av SOAP s ansvarsområde. Kryptering og autentisering må utføres for å garantere beskyttelse. Ved å benytte en sikker transportprotokoll som f.eks. SSL, TLS eller IPSec kan man sikre integritet og konfidensialitet. Større utfordringer for brannmurer. HTTP-strømmer kan nå inneholde avanserte klient-tjener interaksjoner. Begrenses ved at man ikke sender eksekverbar kode. Store forskjeller i krav til sikkerhet for ulike web-tjenester. 7 SOAP og Web-services Web-services ende mer hype enn SOAP. Ingen klar definisjon eller teknologi valg. Typisk arkitektur: For å finne Web-tjenesten => UDDI For å beskrive Web-tjenesten => WSDL For å bruk Web-tjenesten => SOAP Web klient 3. Søk UDDI 2. Publiser WSDL 4. SOAP Webtjenesten 1. Opprett 8
Teknisk oversikt Interaksjon Oppbygging av SOAP-meldinger Koding av SOAP-meldinger 9 Teknisk oversikt Enkel interaksjon Prinsipielt er SOAP en enveis meldingsprotokoll Klient SOAP Server SOAP meldinger kombineres ofte til requestresponse applikasjonsprotokoller Mulig siden 1) meldingene er enkle og tekstbaserte 2) transportprotokoller ikke spesifisert Klient request response Server Følgelig er SOAP-implementasjoner applikasjonsavhengige 10
Teknisk oversikt RPC/RMI interaksjon RPC - Remote Procedure Call C RMI - Remote Method Invocation Java, C++ Ingen IDL tilgjengelig Overførere kall på prosedyre/metode som en melding. Mottaker tolker SOAPmeldingen og utfører prosedyre/metodekallet med parametere. 11 Teknisk oversikt Meldingsformat Bruker envelope-prinsippet med header og body. Kodet ved hjelp av XML <?xml version= 1.0?> <env: Envelope xmlns:env= http://ww.w3.org/2003/05/soap-envelope>.. </env: Envelope> SOAP envelope HEADER BODY Header er valgfritt Body er obligatorisk 12
Teknisk oversikt SOAP Header <env:header> Ikke adresseringsinformasjon i header. SOAP envelope Header brukes til avanserte protokoller. HEADER Primært til prosessering av mellomliggende SOAP noder Ruting av SOAP meldinger Sikkerhet Transaksjonskontroll </env:header> 13 Teknisk oversikt SOAP Body <env:body> Innholder informasjon til mottaker av meldingen SOAP gir kun ett element for å lage feilmeldinger <env.:fault> <sub-elementer> </env:fault> Lager egne elementer som følger SOAPs standardtyper tilpasset applikasjonen <m:reservation xlmns:m=http://localhost/encoding/mobilser > <m:to>bangladesh</m:to> </m:reservation> </env:body> SOAP envelope BODY 14
Teknisk oversikt XML XML kun data; struktur programmeringsvennlig XML inneholder ingen faste tagger, noe SOAP definerer Utover SOAP-taggene lager man egne struct product_info{ char name[30]; int price; } <element name= product_info > <complextype> <element name= name type= string > <element name= cost type= int > </complextype> </element> <product_info> <name>phillips DVD</name> <price>999</price> </product_info> 15 Teknisk oversikt - WSDL WSDL - Web Services Description Language WSDL er også et XML-dokument Brukes til Å lokalisere SOAP-mottaker Å definere typer, meldinger og bindinger Typene i SOAP meldingene kan enten defineres i: XML skjema WSDL fil 16
Eksempel - Bruk av SOAP i HTTP SOAP følger HTTP s forespørsel/svar-modell: - SOAP-forespørselparametere i HTTP-forespørselmelding - SOAP-svarparametere i HTTP-svarmelding HTTP-applikasjoner må bruke "text/xml som Content-type når de inneholder SOAP-meldinger i HTTP-meldinger. 17 SOAP HTTP Request SOAPAction HTTP request header field Indikerer hensikten til SOAP HTTP-forespørselen URI-verdi (RFC 2396) En HTTP-klient må bruke dette headerfeltet når den utsteder en SOAP HTTP-forespørsel SOAPAction header field kan bli brukt av nettverksnoder til å filtrere bort SOAP forespørselsmeldinger i HTTP Eks. brannmurer 18
SOAP HTTP Response SOAP HTTP følger semantikken til kodene for statusinformasjon i HTTP-svar. 2xx statuskode indikerer at klientens forespørsel inkludert SOAPkomponenten ble vel mottatt, forstått og akseptert. Feil i SOAP under prosessering av en forespørsel: HTTP 500 "Internal Server Error Inkluderer en SOAP-melding i svaret med et SOAP Faultelement som indikerer feilen. 19 HTTP ved bruk av POST POST /StockQuote HTTP/1.1 Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "http://electrocommerce.org/abc#mymessage" < env: Envelope xmlns:env. HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn </env:envelope> 20
Implementasjonseksempel - ksoap En SOAP-implementasjon spesielt relevant for mobile terminaler Tradisjonelle pakker som Xerces (for XML) og Axis (for SOAP) store og ressurskrevende Avhenger av Java-applikasjonsmiljø som ikke finnes på mobile terminaler ksoap og kxml designet for å la SOAP og XML applikasjoner kjøre i en KVM (en VM med lite minnekrav som kjører på en mobil terminal) Kombinert i en.jar-fil: <42K Gratis, open source (Enhydra.org) 21 SOAP versus CORBA Ikke direkte sammenlignbart. SOAP tilsvarer bare protokolldelen av RPC-mekanismen i CORBA, IIOP. Noen ORB er tillater bruk av andre protokoller enn IIOP, også SOAP for å aksessere CORBA-objekter. 22
SOAP versus CORBA SOAP Lett å lære og bruke. Kan benytte standard porter (f.eks HTTP/80, SMTP/25) Benytter ren tekst. Må serialiseres og deserialiseres. Ekstra båndbredde. Endringer kan tilkomme til standarden. Tidlige implementasjoner kan falle utenfor. Helt språkuavhengig. CORBA Høyere inngangsterskel. Ingen standardport for IIOP. Problem med brannmurer. Binært. Veletablert standard. Implementert i mange språk. 23 Fordeler og ulemper Fordeler Enkel. XML-basert. Lav inngangsterskel. Fleksibel. Lesbar for mennesker. Støttet av tunge aktører som IBM og MS. Lett å få igjennom brannmurer. Ulemper Treg. Data skal serialiseres, sendes og deserialiseres. Mye overhead. Lesbar for mennesker. Data må krypteres. Hypet Ingen innebygd sikkerhet gir programmerer stort ansvar. 24
Konklusjon SOAP er kulere enn CORBA! SOAP tilpasset Web verdenen. SOAP supplement til eksisterende teknologi, som CORBA 25 Referanser SOAP 1.1; Note for discussion (i.e. not the standard) http://www.w3.org/tr/2000/note-soap-20000508 SOAP version 1.2 Part 0: Primer http://www.w3.org/tr/rec-soap12-part0-20030624 http://ws.apache.org/soap/docs/guide/interop.html http://webservices.xml.com/pub/a/ws/2003/08/19/ksoap.html 26