[XML-SIG] WSDL library ?

Martin v. Loewis martin@v.loewis.de
15 Feb 2002 01:18:01 +0100


Rich Salz <rsalz@zolera.com> writes:

> The ability to transmit pointer-using data types (e.g, a balanced tree
> in C/C++), to make changes on the server, and to send the new tree
> back such that the client can reconstruct -- that can be important and
> useful. Sure, Corba proves that you can solve real-world problems
> without it

Since CORBA 2.3 (July 1999), this kind of interaction is supported.

> It has been more than three years since I left the COM, Corba, DCE
> middleware trenches, and I've gladly forgotten many details, but I
> don't believe it's possible to use Corba IIOP without using the Corba
> object model.  Most of the distributed computing world does not use
> the Corba object model.

Can you please clarify? The "CORBA object model" is roughly: Objects
have interfaces, interfaces provide operations, clients invoke
operations. Seems quite general to me, and except for asynchronous,
event-oriented interactions, this is also standard in the distributed
computing world (even HTTP is an RPC mechanism, with clearly
identified request and response messages).

> As for pointers, etc., I'd like to see the IIOP serialization of a
> doubly-linked list.

// IDL
module PointerDemo{
  valuetype linked_list{
    public string data;
    linked_list prev, next;
  };
  interface ListReceiver{
    void put_list(in linked_list list);
  };
};

# Python client side
from PointerDemo import linked_list
receiver = obtain_reference_to_receiver() #somehow
head = linked_list("Hello",None,None)
head.next = linked_list("World",None,None)
head.next.next = linked_list("!",None,None)
# backlinks
head.next.prev = head
head.next.next.prev = head.next
# invoke operation
receiver.put_list(head)

This will send an isomorphic copy of the list to the receiver, which
can be written in any of the languages that have an IDL mapping.  I
could construct the IIOP/GIOP/CDR byte sequence that is marshalled for
this invocation (including any necessary back-references); please
refer to the CORBA spec if you really need to know.

Regards,
Martin