COM/CORBA/DCOP (was: Hello people. I have some questions)
nhodgson at bigpond.net.au
Wed Sep 5 23:15:23 CEST 2001
> I didn't mean to imply it had to be symmetric -- as long as the
> Automation protocols are respected from both sides, you may
> indeed be able to save some part of the marshaling overhead by
> this means. But you did say you can write automation code
> for BOTH client and server (check above, it's still quoted),
> and I'm still saying you can only do that if you write both
> sides -- in which case it WOULD be faster to use custom.
We are still disagreeing. I can independently write server code that does
not marshal, and you can independently write client code that does not
marshal. What is your definition of "marshal"? Mine does not include calling
a method, instead requiring a conversion process that moves, copies or
transforms the set of arguments into a different form.
In automation, much code uses a generic interpretive marshaller based on
typeinfo that does transform the argument set into another form. This code
is quite slow. Performance can be increased by writing your own specific
marshalling code or by not performing marshalling.
> No way, the Automation reference is adamant about it: Invoke
> *MUST* return DISP_E_MEMBERNOTFOUND if it's called with a
> dispatch-id that is not valid for this object -- it's NOT
> allowed to crash or return other random HRESULT's.
I don't believe this, callers must provide valid arguments. An incorrect
dispid is the same as passing an invalid pointer as pDispParams. Reference
More information about the Python-list