A service groups a set of related ports together.
The
name attribute provides a unique name among all services defined in the enclosing WSDL document.

Ports within a service have the following relationships:

  • None of the ports communicate with each other (e.g. the output of one port is not the input of another).
  • If a service has several ports that share a port type, but employ different bindings or addresses, the ports are alternatives. Each port provides semantically equivalent behavior (within the transport and message format limitations imposed by each binding). 
  • By examining its ports, we can determine a service's port types. This allows a consumer of a WSDL document to determine if it wishes to communicate with a particular service based on whether or not it supports several port types.

Example

Code:

<definitions name="StockQuote" 
			targetNamespace="http://example.com/stockquote.wsdl" 
			xmlns:tns="http://example.com/stockquote.wsdl" 
			xmlns:xsd1="http://example.com/stockquote.xsd" 
			xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
			xmlns="http://schemas.xmlsoap.org/wsdl/">
	<types>
		<schema targetNamespace="http://example.com/stockquote.xsd"
			xmlns="http://www.w3.org/2000/10/XMLSchema"> 
		<element name="TradePriceRequest">
			<complexType> 
				<all>
					<element name="tickerSymbol" type="string"/> 
				</all>
			</complexType>
		</element>
		<element name="TradePrice">
			<complexType> 
				<all>
					<element name="price" type="float"/> 
				</all>
			</complexType> 
		</element>
		</schema> 
	</types>

<message name="GetLastTradePriceInput">
	<part name="body" element="xsd1:TradePriceRequest"/>
</message>

<message name="GetLastTradePriceOutput">
	<part name="body" element="xsd1:TradePrice"/>
</message>

<portType name="StockQuotePortType"> 
	<operation name="GetLastTradePrice">
		<input message="tns:GetLastTradePriceInput"/>
		<output message="tns:GetLastTradePriceOutput"/> 
	</operation>
</portType>

<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
	<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/ http"/>
	<operation name="GetLastTradePrice">
		<soap:operation soapAction="http://example.com/GetLastTradePrice"/> 
		<input>
			<soap:body use="literal"/> 
		</input>
		<output>
			<soap:body use="literal"/>
		</output> 
	</operation>
</binding>

<service name="StockQuoteService">
	<documentation>My first service</documentation>
	<port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
		<soap:address location="http://example.com/stockquote"/> 
	</port>
</service> 

</definitions>

Reversed UML model: