What is CORBA?
Developing Applications with VisiBroker
What is CORBA?
The Common Object Request Broker Architecture (CORBA) specification was developed by the Object Management Group to address the complexity and high cost of developing software applications. CORBA specifies an object oriented approach to creating software components that can be reused and shared between applications. Each object encapsulates the details of its inner workings and presents a well defined interface, which reduces application complexity. The cost of developing applications is also reduced because once an object is implemented and tested, it may be used over and over again. Accessing Distributed Objects
To use an object, your application must first bind itself to the object, specifying the object's interface name. The ORB locates the host that offers an object with the requested interface name. If the server that implements the requested object is not currently executing, the ORB can ensure that the appropriate server is started. After the bind is completed, the client application can invoke operations on the object. The client's method invocations are translated into requests that are sent to the object server. What is VisiBroker?
VisiBroker is an ORB that offers a complete implementation of the CORBA specification. VisiBroker makes it easy for you to develop distributed, object-based client applications and servers. VisiBroker offers these important features.
The interface specification you create is used by the VisiBroker IDL compiler to generates stub routines for the client application and skeleton code for the object implementation. The stub routines are used by the client application for all method invocations. You use the skeleton code, along with code you write, to create the server that implements the objects.
VisiBroker Features
In addition to providing the features defined in the CORBA specification, VisiBroker offers enhancements that increase application performance and reliability. Fault Tolerance
VisiBroker can determine if the connection between your client application and an object server has been lost, due to a server crash or network failure. When a failure is detected, an attempt is made to restart the server or to connect your client to a suitable server on a different host. The details of fault tolerance are covered in Chapter 5.
Optimized Binding
When your application binds to an object, VisiBroker selects and establishes the most efficient communication mechanism. Depending on the platform and the location of the requested object, the bind may be established through a pointer reference, shared memory or a TCP/IP socket. Chapter 3 describes optimized binding in detail.
Dynamic Invocation Interface
VisiBroker maintains an interface repository that contains the IDL specifications for all of the object that have been activated. This repository can be used by client applications to discover a recently added object, obtain the object's interface and dynamically construct requests to act on the object.The Dynamic Invocation Interface (DII) is covered in
Chapter 9.
Support for Threads
On those platforms that support threads, VisiBroker is thread-safe and reentrant for both the client application and the server. For each thread within your client application, each bind is allocated its own thread within the server. When your client disconnects, the server thread allocated for your client will exit. Thread support is discussed in Chapter 8.
Event Handling Facilities
VisiBroker allows you to monitor the following events:
Event Loop Integration - For Single Threaded Applications Only
You may find that the objects you implement require interaction with an event-driven environments.Object implementations are also event driven because they must wait for client requests. VisiBroker gives you the ability to incorporate your object's event polling into the network or windowing component's event loop. This frees you from the complexity of managing nested event loops in your code. Chapter 8 explains the details of event loop integration.