Netscape Internet Service Broker for C++ Programmer's Guide

[Contents] [Previous] [Next]

Chapter 1
ISB for C++ Basics

This chapter introduces Netscape Internet Service Broker for C++ (ISB for C++), a complete implementation of the CORBA 2.0 specification for developing distributed object-based applications. It includes the following major sections:

What is CORBA?

What is ISB for C++?

Developing Applications with ISB for C++

ISB for C++ Features

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.

The Object Request Broker (ORB) in Figure 1.1 connects a client application with the objects it wishes to use. The client application does not need to know whether the object resides on the same computer or is located on a remote computer somewhere on the network. The client application only needs to know the object's name and understand how to use the object's interface. The ORB takes care of the details of locating the object, routing the request, and returning the result.

Figure 1.1    Client application acting on an object through an ORB.

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 ISB for C++?

ISB for C++ is an ORB that offers a complete implementation of the CORBA specification. ISB for C++ makes it easy for you to develop distributed, object-based client applications and servers. ISB for C++ offers these important features:

Developing Applications with ISB for C++

The first step to creating an application with ISB for C++ is to specify your objects' interfaces using CORBA's Interface Definition language (IDL). The IDL mappings for the C++ language are covered in IDL to C++ Language Mapping.

The interface specification you create is used by the ISB for C++ IDL compiler to generate 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.

The code for the client and object, once completed, is used as input to your C++ compiler and linker to produce the executable client application and object server. These steps are covered in detail in Getting Started.

ISB for C++ Features

In addition to providing the features defined in the CORBA specification, ISB for C++ offers enhancements that increase application performance and reliability.

Optimized Binding

When your application binds to an object, ISB for C++ 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. Naming and Binding to Objects describes optimized binding in detail.

Dynamic Invocation Interface

ISB for C++ maintains an interface repository that contains the IDL specifications for all of the objects 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 Dynamic Interfaces.

Support for Threads

On those platforms that support threads, ISB for C++ 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 Advanced Programming Topics.

Event Handling Facilities

ISB for C++ allows you to monitor the following events:

You can use these events to provide debugging, logging, accounting, performance monitoring, or security information for your applications. The Handling Events chapter describes event handling.

Event Loop Integration (For Single-Threaded Applications Only)

You may find that the objects you implement require interaction with an event-driven environment. Object implementations are also event driven because they must wait for client requests. ISB for C++ 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. Advanced Programming Topics explains the details of event loop integration.


[Contents] [Previous] [Next]

Last Updated: 02/03/98 15:28:34


Copyright © 1997 Netscape Communications Corporation

Any sample code included above is provided for your use on an "AS IS" basis, under the Netscape License Agreement - Terms of Use