Object Request Broker (ORB) Technical Details
This page primarily discusses technical details and specifications of different products and systems called Object Request Broker (ORB).
What's the difference between Location Transparency and Distribution?
We were careful to say that the ORB took care of routing details, not distribution details. That's because CORBA® is location transparent: that is, clients make their invocations the same way regardless of where the target object might be. It might be remote, out on the network somewhere, but it also might be local, in the same process as the calling client.
In component-based applications, which are composed of several component types that call each other to perform the total work process, there are many in-process calls. It's much easier to program this type of application if you don't have to fix the local/remote boundary at coding time. Of course, you do have to fix object location when you assemble the application for deployment, and when you deploy it on your server.
Where can a reply go?
We were careful to say that the response was routed to its destination, and not back to the client. Using the new CORBA Messaging Service, asynchronous replies return to a callback object. Although this object is usually in the client's process, it can be anywhere on the network.
What are Session and Stringified Object References?
An object reference in session form is an electronic token that, when associated with an invocation in the way prescribed by the language mapping, allows the ORB to invoke the intended object instance. In this form, there is no information in the object reference that is meaningful to the client. Many ORBs store the information about the object in vendor-specific internal structures; for these ORBs, the session object reference may be a pointer to some part of these structures.
There is a standard form, termed the Interoperable Object Reference or IOR, that ORBs use to pass object references from one to another across vendor boundaries. To enable IORs to be stored, emailed, printed, and retrieved, the ORB will stringify the reference into a sequence of hexadecimal numbers. Because a stringified IOR contains only alphabetic characters plus the digits 0 through 9, it is guaranteed to pass over the network without being translated by any of the various filters that one finds in routers and such. Although the format is standard, it is a very bad idea for a client to interpret a stringified IOR and and use the information about the object. This breaks encapsulation, and makes the application dependent on aspects the object implementation considers its own, and which may change at any time without notice to the client. Architecturally, this makes the application subject to breakdown. Although this may seem harmless enough for a small application, it can be disastrous for a large application containing years of effort by hundreds or thousands of programmers.