[Date Prev] [Date Next] [Thread Prev] [Thread Next] Indexes: Date | Thread | Author

[XML-SIG] WSDL library ?

Rich Salz <rsalz@zolera.com> writes:    (01)

> 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    (02)

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

> 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.    (04)

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).    (05)

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

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

# 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)    (08)

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.    (09)

Martin    (010)