programmera.net -> webservice -> normal för utskrift | info@programmera.net |
WS-I Basic Profile 1.0
1. Vad är WS-I Basic Profile 1.0? 2. Definitioner och allmänna regler 3. Knyt en WSDL-fil till en profil 4. HTTP |
1. Vad är WS-I Basic Profile 1.0?
WS-I står för "Web Service Interoperability Organization", en organisation som standardiserar webbtjänster. WS-I utfärdar olika profiler, som är en typ av paketering av specifikationer och övriga regler som underlättar interoperabilitet mellan de som stödjer profilen. Basic Profile 1.0 är den mest spridda profilen.
Från och med nu förkortar vi WS-I Basic Profile 1.0 med BP. BP refererar till följande specifikationer:
BP beskriver inte bara vilka specifikationer som ska ingå i profilen utan lägger även till extra restriktioner på de ingående specifikationerna eftersom de ofta är för generella eller har avsnitt som anses vara tvetydiga. Nedan följer en kort sammanfattning på hur specifikationerna begränsas av BP:
2. Definitioner och allmänna regler
Profilen definierar följande termer:
Första regeln: Beskrivning måste finnas. En Instans måste beskrivas av minst en av föjande:
Om ingen av dessa beskrivningar av tjänsten finns tillgänglig går den inte att hitta.
3. Knyt en WSDL-fil till en profil
Man kan knyta en WSDL-fil till en profil med hjälp av wsi:Claim-elementet.
wsi:Claim måste ligga innanför en wsdl:documentation-tagg. Man kan placera knytningen på flera ställen i WSDL-filen, men vanligaste är att man gör det i port-elementet, se exemplet nedan:
För att SOAP-meddelanden ska kunna signalera vilken profil de uppfyller kan de innehålla ett eller flera wsi:Claim i soap:Header.
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl"
xmlns:tns="http://example.org/myservice"
xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap"
xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/"
targetNamespace="http://example.org/myservice">
<wsdl:portType name="MyPortType">
...
</wsdl:portType>
<wsdl:binding name="MyBinding" portType="MyPortType" >
...
</wsdl:binding>
<wsdl:service name="MyService" >
<wsdl:port name="MyPort" binding="tns:MyBinding" >
<wsdl:documentation>
<wsi:Claim conformsTo="http://ws-i.org/profiles/basic/1.0" />
</wsdl:documentation>
<soapbind:address location="http://example.org/myservice/myport" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Detta exempel visar hur ett SOAP-meddelande kan se ut:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" >
<soap:Header>
<!-- other headers -->
<wsi:Claim conformsTo="http://ws-i.org/profiles/basic/1.0"
xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" />
<!-- other headers -->
</soap:Header>
<soap:Body>
<!-- body content -->
</soap:Body>
</soap:Envelope>
4. HTTP
Följande regler gäller för HTTP-versioner:
Följande gäller för HTTP-headern "SOAPAction":
BP ställer upp följande regler för statuskoder för instansen:
Cookies är ett annat intressant ämne för webbtjänster. Cookies används för att behålla tillståndet i konversationen då man surfar, men eftersom SOAP 1.1 och WSDL 1.1 är tillståndslösa och därför inte utnyttjar Cookies förlorar den sin funktion för webbtjänster. Cookies kan däremot användas till andra saker, som t.ex. lastbalansering, och därför förbjuds inte Cookies av BP: