views:

31

answers:

2

SOAP is continuing to confuse me.

In RMI, there are remote objects, which live on the remote server. You can pass them around, but this will just create stubs locally. The stubs delegate all method calls over the wire. This is quite different from pure data objects, which are serialized and sent as a copy.

Are there remote objects in SOAP? From what I have seen so far (did not dig deep, though), there are complex objects that can be passed around (as arguments or return values), but those are "just" data carriers.

A: 

Since SOAP is language agnostic, there can't be any remote objects. Which language should be be in?

Since they live on the server, I do not think that would be a problem. Communication with them would also be via SOAP.
Thilo
Their method signature would be specified in the WSDL somewhere.
Thilo
+2  A: 

You may find it helpful to read up on the WebServices standards such as WS-I Basic Profile, which say things like:

SOAP 1.1 defines a message exchange model for processing of messages.

In other words this is is about passing messages between different systems.

As a client of a SOAP service you have no idea whether or not there are objects at the other end and (at least in common practice) the payloads you receive do not give you back reference objects on which you could invoke further remote messages. For example if you had (in concept)

 Order getOrder( int orderId )

and Order looked like

Order {  int orderId;
         Customer {  String name, String TelephoneNumber ... }
}

There Customer "object" there has no methods you invoke that result in remote work. The SOAP interface has payloads expressed purely in terms of data.

Lanaguge bindings, to enable us to code (for example) Java to invoke a SOAP/HTTP give us local proxies objtecs for the service, but that does not imply an RMI-like remote object model.

djna
"The SOAP interface has payloads expressed purely in terms of data". That is exactly the kind of definitive statement I was fishing for. Thanks.
Thilo