----- Original Message -----
Sent: Tuesday, June 17, 2003 12:56
PM
Subject: passing objects by reference in
SOAP - How would it work?
Hi
A typical SDK is object-oriented and
involves passing objects/data by
references (pointers). This will work as
long as the client using the SDK is
in the same address space of the SDK.
However, if client and SDK (i.e., the
service which provides SDK functions)
are in different address spaces, then
this will not work "AS IS", and we
need some kind of
marshalling/demarshalling mechanism used in DCOM and
CORBA etc.
How does such a thing will work in SOAP given the fact that
SOAP does NOT
support passing objects by reference?
Consider the
example of a typical SDK given below:
Z, A, B, C, D and E are some
classes. a, b, c, d and e are instances of A,
B, C, D, E respectively.
Classes Z, A, B, C, D and E have various functions,
which could be used for
various purposes. consider the code below, which
shows how to use a
function "getE" of class E.
----------
A a = Z.getA(some
parameters - p1) // getA is static function
B b = a.getB(some
parameters - p2)
C c = b.getC(some parameters - p3)
D d =
c.getD(some parameters - p4)
E e = d.getE(some parameters -
p5)
---------
Now if I wish to expose such a SDK as a
WebService, then I cann't do this
"as is" because SOAP does not support
passing objects by references. Thus, I
cannot expose "getA" function as
WebService, as it returns instance of class
A, which inturn has functions
(executed at service side), which return other
objects (like b)
Thus
AFAIK, the only way out is to expose a single function "getE", which
in
turn will do all the stuff, i.e.,
getE(p1, p2, p3, p4, p5)
{
A a = Z.getA(p1) // getA is static function
B b =
a.getB(p2)
C c = b.getC( p3)
D d = c.getD(p4)
E e =
d.getE(p5)
return e;
}
Is there a better way out? Or this
is the only way to expose such existing
SDKs as Web Services?
thanks
& regards,
Naresh
Agarwal