Es gibt viele Unterschiede zwischen RPC- und Document-Webdiensten. Die wichtigen Unterschiede zwischen RPC und Dokument sind unten aufgeführt:
RPC-Stil
1) Webdienste im RPC-Stil verwenden Methodennamen und Parameter, um eine XML-Struktur zu generieren.
2) Die generierte WSDL lässt sich nur schwer anhand des Schemas validieren .
3) Im RPC-Stil wird eine SOAP- Nachricht mit so vielen Elementen gesendet .
4) Die Nachricht im RPC-Stil ist eng gekoppelt .
5) Im RPC-Stil behält die SOAP-Nachricht den Namen der Operation bei .
6) Im RPC-Stil werden Parameter als diskrete Werte gesendet .
Sehen wir uns die im RPC-Stil generierte WSDL-Datei an.WSDL-Datei:
In der WSDL-Datei werden die Typendetails nicht angegeben.
- <Typen/>
Für den Nachrichtenteil definiert es Namens- und Typattribute.
- <message name= “getHelloWorldAsString” >
- <part name= “arg0” type= “xsd:string” />
- </Nachricht>
- <message name= “getHelloWorldAsStringResponse” >
- <part name= “return” type= “xsd:string” />
- </Nachricht>
Für soap:body definiert es Verwendungs- und Namensraumattribute.
- <binding name= “HelloWorldImplPortBinding” type= “tns:HelloWorld” >
- <soap:binding transport= “http://schemas.xmlsoap.org/soap/http” style= “rpc” />
- <Vorgangsname= “getHelloWorldAsString” >
- <soap:operation soapAction= “” />
- <Eingabe>
- <soap:body use= “literal” namespace= “http://javatpoint.com/” />
- </Eingabe>
- <Ausgabe>
- <soap:body use= “literal” namespace= “http://javatpoint.com/” />
- </Ausgabe>
- </Operation>
- </Bindung>
Dokumentstil
1) Webservices im Dokumentstil können anhand eines vordefinierten Schemas validiert werden .
2) Im Dokumentstil wird die SOAP-Nachricht als einzelnes Dokument gesendet .
3) Die Nachricht im Dokumentstil ist lose gekoppelt .
4) Im Dokumentstil verliert die SOAP-Nachricht den Vorgangsnamen .
5) Im Dokumentstil werden Parameter im XML-Format gesendet .
Sehen wir uns die im Dokumentstil generierte WSDL-Datei an.WSDL-Datei:
In der WSDL-Datei werden Typendetails mit Namespace und schemaLocation angegeben.
- <Typen>
- <xsd:schema>
- <xsd: import namespace= “http://javatpoint.com/” schemaLocation= “http://localhost:7779/ws/hello?xsd=1” />
- </xsd:schema>
- </typen>
Für den Nachrichtenteil definiert es Namens- und Elementattribute.
- <message name= “getHelloWorldAsString” >
- <part name= “parameters” element= “tns:getHelloWorldAsString” />
- </Nachricht>
- <message name= “getHelloWorldAsStringResponse” >
- <part name= “parameters” element= “tns:getHelloWorldAsStringResponse” />
- </Nachricht>
Für soap:body definiert es nur das Verwendungsattribut, nicht den Namensraum.
- <binding name= “HelloWorldImplPortBinding” type= “tns:HelloWorld” >
- <soap:binding transport= “http://schemas.xmlsoap.org/soap/http” style= “document” />
- <Vorgangsname= “getHelloWorldAsString” >
- <soap:operation soapAction= “” />
- <Eingabe>
- <soap:body use= “literal” />
- </Eingabe>
- <Ausgabe>
- <soap:body use= “literal” />
- </Ausgabe>
- </Operation>
- </Bindung>