Web Service Description Language, Nirvana Edition

Keith Ballinger

Microsoft

Datatypes are schema

Schema is the type language

<Types> 
  <xsd:schema targetNamespace="http://tempuri.org/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="foo"
	  type="xsd:string" />
  </xsd:schema>
</Types>

It's all about the PortType

  • An PortType is a collection of operations
  • An operation is defined thusly:
    <PortType name="String">  
      <Operation>
        <Input>
          <Body type="QName" />
          <Header type="QName" mandatory="Boolean" />
        </Input>
        <Output>
          <Body type="QName" />
          <Header type="QName" mandatory="Boolean" />
        </Output>
        <Fault />??
      </Operation>
    </PortType>

    The port is everything else

    Port = PortType + Policy Assertions + LogicalName

    <Port
          type="QName"
          name="anyURI">
      <PolicyAssertiontype="anyURI" />
      <PolicyAssertiontype="anyURI" />
    </Port>

    Policy Assertions

    • The sum of policy assertions = a binding
    • Example: SOAP/HTTP + Sessions + Auditing
    • List of URIs, complementary
    • These URIs refer to aspects that defined elsewhere.
    • Can also be queried for at runtime
      • Runtime query not defined by WSDL

    Recommendations

    • WSDL 1.2 first
      • May date reasonable
    • Nirvana second
      • Never done by May

    Appendix

    • Schema Example

    Schema Example

    <Description
         targetNamespace="http://keithba.com"
         xmlns="http://schemas.xmlsoap.org/ws/2002/04/wsdl/nirvana"
         xmlns:tns="http://keithba.com">
      <Types> 
        <xsd:schema
    		targetNamespace="http://keithba.com"
    		xmlns:xsd="http://www.w3.org/2001/XMLSchema">
          <xsd:element
    		   name="FooRequest"
    		   type="xsd:string" />
          <xsd:element
    	   name="FooResponse"
    	   type="xsd:int" />
        </xsd:schema>
      </Types>

    Example (cont.)

    [missing figure]

    Example (cont.)

    <Port type="tns:FooPortType" name="http://keithba.com/MyPort">
        <PolicyAssertion
             type="http://schemas.xmlsoap.org/soap/http" />
        <PolicyAssertiontype="http://schemas.xmlsoap.org/ws/2002/01/secext"/>
      </Port>
    </Description>