RPC vs Document
RPC and document style Web Services Description Language are the two most widely used terms in reference to Web services and SOAP protocol. The web services are often described using Web Services Description Language (WSDL) documents. The WSDL outlines the supported Web service operations and messages and binds them to a concrete network protocol and message format. The abstract definitions are defined using “type,” “message,” and “portType” elements. The concrete specifications are described using “binding” and “service” elements. Each of these elements are placed inside a “definitions” element.
RPC and document style differ in their binding styles which are also referred to as SOAP binding styles.The WSDL specifies the binding style as RPC or document depending on the SOAP payload or the structure of the element contents. The document style is always the default choice as the SOAP message is sent as a single “document” in the element. The RPC style element has to follow the rules described by the SOAP specification. As per the rules, the may consist of only one element which is named after the operation, and the parameters are interpreted as sub-elements of the main element. Both RPC and document styles are accepted versions by most of the SOAP clients; however, the use of one over the other is mainly one’s personal choice.
The use attribute also helps to distinguish between RPC and document styles. The use attribute describes how both the styles are represented in XML. The use attribute describes whether the message parts are encoded or the message follows an XML schema definition. Based on choices, there are four possible combinations of both RPC and document styles; viz RPC/encoded, RPC literal, Document/Encoded or Document/Literal. Not all of the four combinations are in use, and the preference of one combination over the other is more of a personal interest.
The main difference between document and RPC styles is that, in the document style, the client always sends the service parameters to the server in a simple XML document format rather than a discrete set of parameter values. The document style is loosely coupled as compared to the RPC style.
In the Document/Literal style, the message can always be validated using any XML validator. The content within the SOAP body is clearly defined in the schema. In the RPC/literal style, the transferred data is difficult to validate by the SOAP message.The Document/Literal style loses the operation name in the SOAP message whereas in the RPC/literal style the operation name still exists in the SOAP message.Out of four different combinations, the styles that are widely used are RPC/literal and Document/Literal.
Summary:
1. In document style, the SOAP message is sent as a single document whereas in the
RPC style, the SOAP body may contain several elements.
2. The document style is loosely coupled whereas the RPC is tightly coupled.
3. In the document style, the client sends the service parameters in simple XML format
whereas in the RPC style the parameters are sent as discrete of values.
4. The Document/Literal style loses the operation name in the SOAP message whereas
the RPC/literal style keeps the operation name in the SOAP message.
5. In the Document/Literal style, messages can always be validated using any XML
validator whereas in the RPC/literal style, the transferred data is difficult to validate by
the SOAP message.