You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Werner Jörling <jo...@lkv-wl.de> on 2003/01/14 11:35:53 UTC

General Question RPC vs. Messaging

(Sorry, first posted as a reply)

Hello,

studying the SOAP-Messaging samples from the  the book 'Java and SOAP' (Robert 
Englander, O'Reilly) and from apache-soap I'm confused about the difference 
between SOAP-RPC and SOAP-Messaging.

There are SOAP-Messaging samples, where services are implemented with the 
signiture

public void serviceMethod(
        Envelope env, 
        SOAPContext reqCtx, 
        SOAPContext resCtx
)

Services of this kind are usually sent to client messages containing Envlopes 
to an URL like http//host:pppp/soap/servlet/messagerouter.

On the other side there are SOAP-Messaging-service samples not distinguishable 
from SOAP-RPC-style services . Only the service-tag in the 
deployment-descriptor contains the type="message"-attribute.

Moreover this services are invoked by a Call in a SOAP-RPC like manner, with a 
URL like http://host:pppp/soap/servlet/rpcrouter.

Consequently I do not really understand the difference between SOAP-RPC and 
SOAP-Messaging.

Regards

Werner
mailto:joerling@lkv-wl.de


RE: General Question RPC vs. Messaging

Posted by Anne Thomas Manes <an...@manes.net>.
Werner,

If you're just starting out with SOAP, I suggest you start with a SOAP
implementation that supports WSDL -- for example Apache Axis. See
http://xml.apache.org/axis. It's the follow-on project to Apache SOAP.

More and more, SOAP-RPC is becoming out of favor. WS-I has decided that SOAP
Encoding is a key source of interoperability issues, and SOAP Encoding is
disallowed by the WS-I Basic Profile. Since most SOAP implementations always
use SOAP Encoding with the RPC style, SOAP-RPC has become a "bad" thing.

>From the SOAP message point of view, there's really very little difference
between SOAP RPC style and SOAP document style. The key difference is SOAP
encoding versus literal encoding. From a message perspective, the only
difference is whether or not you use a methodname container for your
payload. For example, you can pass a purchase order as a document or as a
parameter in a method called placeOrder. It's your choice:

Document style:
  <env:Body>
    <m:purchaseOrder xmlns:m="someURI">
      ...
    </m:purchaseOrder>
  </env:Body>

RPC style:
  <env:Body>
    <m:placeOrder xmlns:m="someURI">
      <m:purchaseOrder>
        ...
      </m:purchaseOrder>
    </m:placeOrder>
  </env:Body>

Per the specification, both types of messages can be encoded using a XML
Schema or using the SOAP Encoding data model. In practice, many SOAP
implementations only support RPC style with SOAP Encoding and Document style
with literal encoding.

A WSDL description provides the same information about the format of the
message whether you're using RPC or document style. So a WSDL compiler can
just as easily generate a client stub for document style as it can for RPC
style. The Microsoft implementations (.NET and MS SOAP Toolkit) generate
document style by default. Many of the Java-based SOAP implementations are
switching over to document style by default, also.

Anne

> -----Original Message-----
> From: Werner Jorling [mailto:joerling@lkv-wl.de]
> Sent: Tuesday, January 14, 2003 5:36 AM
> To: soap-user@xml.apache.org
> Subject: General Question RPC vs. Messaging
>
>
> (Sorry, first posted as a reply)
>
> Hello,
>
> studying the SOAP-Messaging samples from the  the book 'Java and
> SOAP' (Robert
> Englander, O'Reilly) and from apache-soap I'm confused about the
> difference
> between SOAP-RPC and SOAP-Messaging.
>
> There are SOAP-Messaging samples, where services are implemented with the
> signiture
>
> public void serviceMethod(
>         Envelope env,
>         SOAPContext reqCtx,
>         SOAPContext resCtx
> )
>
> Services of this kind are usually sent to client messages
> containing Envlopes
> to an URL like http//host:pppp/soap/servlet/messagerouter.
>
> On the other side there are SOAP-Messaging-service samples not
> distinguishable
> from SOAP-RPC-style services . Only the service-tag in the
> deployment-descriptor contains the type="message"-attribute.
>
> Moreover this services are invoked by a Call in a SOAP-RPC like
> manner, with a
> URL like http://host:pppp/soap/servlet/rpcrouter.
>
> Consequently I do not really understand the difference between
> SOAP-RPC and
> SOAP-Messaging.
>
> Regards
>
> Werner
> mailto:joerling@lkv-wl.de
>
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>
>


--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


RE: General Question RPC vs. Messaging

Posted by Anne Thomas Manes <an...@manes.net>.
Werner,

If you're just starting out with SOAP, I suggest you start with a SOAP
implementation that supports WSDL -- for example Apache Axis. See
http://xml.apache.org/axis. It's the follow-on project to Apache SOAP.

More and more, SOAP-RPC is becoming out of favor. WS-I has decided that SOAP
Encoding is a key source of interoperability issues, and SOAP Encoding is
disallowed by the WS-I Basic Profile. Since most SOAP implementations always
use SOAP Encoding with the RPC style, SOAP-RPC has become a "bad" thing.