Inprise Delphi CORBA Support - Frequently Asked Questions

# Frequently Asked Questions

1. Is the ORB written in Delphi?
   No. Delphi uses the VisiBroker C++ ORB. Access is provided by Delphi code contained in the OrbPas33.dll or OrbPas 40.dll file. This approach provides the Delphi community with the ability to use a fast and stable industry-standard ORB and avoids the need to develop and maintain a new ORB from scratch.

2. How does the Delphi/C++ connection work?
   The OrbPas33.dll (or OrbPas40.dll) DLL is a Delphi wrapper round the the C++ Visibroker run time DLL (orb_br.dll). The CORBA objects are created in the C++ ORB in the same way as they would be for a pure C++ client and a proxy for the object is maintained on the Delphi side. When a method is invoked on the proxy from a Delphi executable the proxy in turn invokes the same method on the C++ object.

3. How fast is this ORB?
   The wrapper classes impose some overhead but the Delphi ORB still achieves a performance comparable to that of the unwrapped C++ ORB. Initial tests indicate an overall performance within 10% of the C++ ORB.

4. Why do I see COM-style code when it is supposed to be CORBA ?
   The code that implements Delphi CORBA access both in Delphi and in this implementation has a COM-style appearance but this is superficial. The use of COM QueryInterface, AddRef and Release is for object reference counting. By way of an example, the TCorbaObject class definition has a COM-style with a QueryInterface, AddRef and Release methods and a GUID. Under the covers the TCorbaObject implementation substitutes custom calls in place of the operating system COM calls.

5. How does the garbage collection work ?
   The garbage collection is done with reference counting. Note, however, that when a client sets a stub to nil, the runtime will not reduce the reference of the associated skeleton on the server side.

6. Is it thread safe ?
   Yes and there is no need to call CoInitialize at any time.

7. What goes over the wire?
   The on-the-wire stuff is handled by the C++ ORB and is industry standard IIOP. This ensures full compatibility with the VisiBroker Java and C++ ORBs as well as with IIOP-compliant ORBs from third parties.

8. What is the long term goal ?
   The intention is to provide interfaces and implementation classes for all of the main classes in the Visibroker for C++ implementation. The OrbPas33.dll and OrbPas40.dll DLL links in the Visibroker for C++ DLL and provides wrappers around the C++ calls. With this release, Delphi has a pretty feature rich set of CORBA capabilities.

9. What about SSL?
   No support is planned right now.

10. Will a Delphi Client work with GateKeeper ?
    The GateKeeper is intended for use with the VisiBroker Java ORB. It does not work with the C++ ORB and so does not work with the Delphi ORB either.