WSDL - Elemento <portType>
Il <portType> element combina più elementi del messaggio per formare un'operazione completa di sola andata o andata e ritorno.
Ad esempio, a <portType>può combinare una richiesta e un messaggio di risposta in un'unica operazione di richiesta / risposta. Questo è più comunemente usato nei servizi SOAP. Un portType può definire più operazioni.
Prendiamo un pezzo di codice dal capitolo WSDL Example -
<portType name = "Hello_PortType">
<operation name = "sayHello">
<input message = "tns:SayHelloRequest"/>
<output message = "tns:SayHelloResponse"/>
</operation>
</portType>
L'elemento portType definisce una singola operazione, chiamata sayHello .
L'operazione consiste in un singolo messaggio di input SayHelloRequest e un file
messaggio di output SayHelloResponse .
Modelli di funzionamento
WSDL supporta quattro modelli di funzionamento di base:
Senso unico
Il servizio riceve un messaggio. L'operazione ha quindi un unico elemento di input . La grammatica per un'operazione a senso unico è:
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken">
<wsdl:input name = "nmtoken"? message = "qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
Richiedere risposta
Il servizio riceve un messaggio e invia una risposta. L'operazione ha quindi un elemento di input , seguito da un elemento di output . Per incapsulare gli errori, è anche possibile specificare un elemento fault opzionale . La grammatica per un'operazione di richiesta-risposta è:
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken" parameterOrder = "nmtokens">
<wsdl:input name = "nmtoken"? message = "qname"/>
<wsdl:output name = "nmtoken"? message = "qname"/>
<wsdl:fault name = "nmtoken" message = "qname"/>*
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
Sollecitare-risposta
Il servizio invia un messaggio e riceve una risposta. L'operazione ha quindi un elemento di output , seguito da un elemento di input . Per incapsulare gli errori, è anche possibile specificare un elemento fault opzionale . La grammatica per un'operazione di sollecitazione-risposta è:
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken" parameterOrder = "nmtokens">
<wsdl:output name = "nmtoken"? message = "qname"/>
<wsdl:input name = "nmtoken"? message = "qname"/>
<wsdl:fault name = "nmtoken" message = "qname"/>*
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
Notifica
Il servizio invia un messaggio. L'operazione ha quindi un unico elemento di output . Di seguito è riportata la grammatica per un'operazione di notifica:
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken">
<wsdl:output name = "nmtoken"? message = "qname"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>