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”>
			<PolicyAssertion type=“anyURI” />
			<PolicyAssertion type=“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.)
	
Example (cont.)
  <Port type=“tns:FooPortType” name=“http://keithba.com/MyPort”>
<PolicyAssertion 
	type=“http://schemas.xmlsoap.org/soap/http” />
<PolicyAssertion type=“http://schemas.xmlsoap.org/ws/2002/01/secext”/>
  </Port>
</Description>