150 likes | 175 Views
Learn about Dynamic Invocation Interface (DII) in CORBA, steps for programmers, how it differs from using IDL stubs, Interface Repository usage, DSI, bridges, and more. Dive into advanced CORBA concepts and applications with examples from experts.
E N D
Dynamic Invocation Interface • Alternative to using IDL stubs • Object cannot distinguish between the two. • How is DII different for the programmer?
Step 1 • Client needs to build an argument list • Each element has the following structure struct NamedValue { identifier name; //argument name any argument; // the argument long len; // size of argument (in bytes) : }
Step 2 • Invoking create_request() on remote object. • Implemented by the ORB • Inputs include: • Operation name • Argument list • Variable to contain the result • create_request() returns an object reference to a request object.
Step 3 - Request object operations • invoke() • Deliver request to a remote object • delete() • Destroys the request object • get_response() • send() • send() and get_response() are used for asynchronous invocations
DII Notes • Less abstract • Hides fewer aspects of distribution • Clients not restricted to using services that were defined at compile time • Good for building class browsers • Good for building bridges • What is missing?
Interface Repository • Provides access to interface definitions • Is itself a CORBA Object • Operations on it can be invoked like any other CORBA object. • Used for Dynamic Invocation
Root Account Bank Debit() Nigel Edwards JUL95
Interface Repository Nodes • Each node has a number of attributes • Name • Return Type • Exceptions • Arguments • Each Node can be uniquely identified • Nodes are treated as objects • Support some functions like : • contains() – return a list of interfaces • within() – return object reference to interface object
DSI-Dynamic Skeleton Invocation • Introduced in CORBA 2.0 • To support implementation of gateways between ORBs utilizing different communication protocols • DSI is the server side equivalent of DII • Object invocation without skeletons being statically compiled into the program
ORB1 Bridge ORB2 Interoperability • Allowing client in one ORB invoke object in a different ORB
Interoperability DSI DSI DII DII IIOP DSI DSI DII DII Client Half Bridge Server
Why Bridges use Dynamic Invocation? • Because bridges are generic • Can be used to invoke any object regardless of its interface • If bridge is built using IDL stubs then it can work only for objects whose stubs are incorporated into the bridge
Next Time … • Object Adapters (BOA (obsolete) /POA) • Inter-ORB protocols (IIOP/GIOP) • Event Services, Naming Services, • Trading, Transaction • COM vs. CORBA • QOS • Examples / Applications
Resources • Advanced CORBA programming with C++ - Henning, Vinoski • CORBA - An Industrial Approach to Open Distributed Computing -Nigel Edwards • CORBA : Integrating diverse Applications within Distributed Heterogeneous Environments – Steve Vinoski
Discussion • What design patterns are used in Interface Repository, bridges?