W3C home > Mailing lists > Public > xml-dist-app@w3.org > February 2002

RE: Issue with soap-rpc:result

From: Noah Mendelsohn <noah_mendelsohn@us.ibm.com>
Date: Fri, 15 Feb 2002 18:45:36 -0500
To: <tjewald@develop.com>
Cc: "xml-dist-app" <xml-dist-app@w3.org>
Message-ID: <OF8C2D3692.F7EACDAB-ON85256B61.0081B61A@pok.ibm.com>

>> 2) No support for graphs

Right.  All I'm saying is that we shouldn't fall into the trap of fudging
our model of the endpoint just because we know what we want the wire format
to be.

* I think that to properly model this you need to say:

"We model a procedure as taking (named? ordered?) arguments each of which
is typed as an XML Element information item.  Mappings to the data
structures of particular programming systems at the endpoints is beyond the
scope of this specification (so, we don't really give a standard
representation for)

      x =someMethod (int i)

Conversely, we could introduce a more explicit model of what method calls
look like, and explain how the serialized XML is to relate to the model.

* We must also be clear on whether id like references mean anything for
RPC, and whether they can connect otherwise unrelated arguments.  Saying
there's not graph suggests that such href/id constructions SOULD NOT occur
in the XML.  That's different than document literal.  Whatever we mean, we
should call it out.  Such items (may? must not?) within their content
contain references to elements not within the tree to represented by the
argument itself.  (If allowed...) Such references are represented by (an
attribute named href which must have as its value the contents of an
attribute named id on some other element in the soap element;  the contents
of such IDs must be unique.)

Overall: I have always had doubts about the wisdom of the graph model in
SOAP, but it's also very late in the process to be questioning it.   Count
me as more or less neutral on the technial merits, but very concerned that
whatever we adopt be modeled and explained very carefully and precisely.

Noah Mendelsohn                              Voice: 1-617-693-4036
IBM Corporation                                Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142

                      "Tim Ewald"                                                                                                     
                      <tjewald@develop         To:      "'XMLDISTAPP'" <xml-dist-app@w3.org>                                          
                      .com>                    cc:                                                                                    
                      Sent by:                 Subject: RE: Issue with soap-rpc:result                                                
                      02/14/02 03:18                                                                                                  
                      Please respond                                                                                                  
                      to tjewald                                                                                                      

> Maybe I've misunderstood.  I should confess to not having actually
> programmed with any of the systems such as .Net that provide
> automatic
> document style mappings.  I strongly suspect that they deal best with
> stylized uses of XML, in which case they are in some sense
> encoded.  I
> could be wrong about that.  If so, please let me know what
> I'm missing.

ASP.NET WebMethods support an RPC programming model on top of
"document/literal" messages by default (you can enable SOAP encoding if
you want to). There are two major limitations:

1) No support for derivation by restriction
2) No support for graphs

The first problem is simply an implementation issue that can be fixed
later, it just takes time. The second problem exists by design: they
want all messages to be literal instances of a generated schema. The
practical side effect is that graphs will be converted to trees. For
instance, if you make a call like this:

Point p = new Point(10, 20);
float f = proxy.Distance(p, p);

the resulting SOAP message will look like this:


In this case, the ASP.NET plumbing assumes the first child of body
identifies an operation and each of its children is mapped to a
parameter. The implementation of the remote endpoint will deserialize
two Point objects with the same x and y values. As a result, the
implementation of Distance cannot compare pointer values, as in:

float Distance(Point p1, Point p2)
  if (p1 == p2) return 0.0; // won't work
  if (p1.x == p2.x && p1.y == p2.y) return 0.0; // will work
  ... // TBD by Pythagoras

We can debate whether or not this is sufficient for an RPC

The .NET implementation is actually a little bit more complicated than
this because it also supports mapping the callstack above to a SOAP
message that looks like this:


In this case, there is not identifier for the operation and each child
of the body is treated as a parameter. In this case, the operation is
selected either by the SOAPAction or by the contents of the body (as
long as every operation has a single, uniquely named parameter). I
believe this is primarily in response to WSDL, they (and other SOAP
toolkit vendors) have created mappings for all of the different ways you
can describe operations in WSDL, whether they make a great deal of sense
or not.

Anyway, I still maintain my original position. I want a world where I
can define message formats using XSD. I want that because I've got a
whole bunch of XSD-aware tools, with more coming. If there is a going to
be a SOAP data model, an encoding and an RPC model, I would like it to
be simple enough that I can write an XSD for the encoded message format.
We've talked already about the desire to write contracts at the
graph-level without specifying an encoding, but I think this is a
mistake. I believe there are ultimately going to be a lot more systems
that care about tight integration with XSD than with the ability to send
a graph via n different encodings.

Received on Friday, 15 February 2002 19:40:59 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 22:01:18 UTC