C   O   R   B   A
  O R B  
 
Home
CORBA
ORBs
Project
The Hawaii Group
Services
Naming
Event
Vendors
Comparison
In Industry
Telecom
Resources
Text
Links
 
 
Common Object Request Broker Architecture
 
Analysis of Borland/Visigenic VisiBroker family 

by Maria Gina Sian


Introduction

Founded in 1983, Borland is one of the leading providers of software products for corporate application developers. It provides a family of rapid application development tools and scalable middleware technology. In the past, Borland has focused primarily on the goal of "making development easier". 

In 1997, Borland expanded this goal to include distributed object computing.  To help reach this goal, it acquired Visigenic in 1998, which is a leading supplier of object middleware based on the CORBA standard."The joint vision will target a solution that not only sets the standard for high-performance, but will also make it as easy to create distributed, multi-tier applications as it is to create two-tier client/server applications today" [Inprise Corporate White Paper].By supporting CORBA, the VisiBroker product family is one of the tools that support this vision.

Comparison Points

Product Family
The VisiBroker family of products consists of the following:
  • VisiBroker for Java ORB and VisiBroker for C++ ORB - CORBA ORB for both Java and C++ environments
  • VisiBroker Integrated Transaction Service (ITS) - Transaction solution for distributed object applications
  • VisiBroker SSL Pack and VisiBroker Gatekeeper - Provides authentication, encryption, and network security to distributed applications
  • VisiBroker Naming Service - Implementation of the CORBA Naming Service
  • VisiBroker Event Service - Implementation of the CORBA Event Service
  • VisiBroker Manager - Provides visual access to ORB information and configuration
Compliance to CORBA
The VisiBroker for Java ORB and for C++ ORB are fully compliant with CORBA ORB version 2.1 specification.  According to Visigenics, VisiBroker is the first CORBA 2.0 ORB completely written in Java.
Architecture
VisiBroker has a native implementation of OMG's Internet-Inter-ORB Protocol (IIOP).  This ensures the interoperability of VisiBroker objects with other ORB objects. 
VisiBroker supports single-threading and multi-threading.  It provides two thread models for multithreaded servers:  thread-per-session and thread pooling.  Under the thread-per-session architecture, each new client that connects results in a new worker thread being created to serve that client.  When the client disconnects, its designated worker thread is destroyed.  Under the thread pooling architecture, one worker thread is assigned to a client request but only for the duration of that request, and not for the lifetime of the client connection.  After the request is completed, the thread is placed in a pool of available of threads and is free to service other client requests.  This architecture reduces the overhead from creating and destroying threads since threads are constantly being reused.  [VisiBroker for C++ Programmer's Guide, Chapter 8 "Managing Threads and Connections"].
Targeted Programming Languages and Platforms
The VisiBroker ORB is available for the C++ and Java environments.  Through the IIOP implementation, objects in either ORB can communicate to each other, as well as to other ORB vendor objects.  VisiBroker is available in many platforms including Sun Solaris HP-UX, IBM AIX, SGI IRIX, Digital UNIX, and Windows 95/NT.
Development, Administration, and Deployment
The development process for a VisiBroker application is similar to most CORBA ORBs.  First, you write your specifications using IDL.  Then, you use the VisiBroker's IDL compiler to generate the client stub code and the server skeleteon code.  For the VisiBroker for C++ ORB, you use the idl2cpp command.  For the VisiBroker for Java ORB, you use the idl2java command.  After running the IDL compiler, you then write the client code, which includes initializing the ORB, binding to the appropriate objects, and invoking the necessary methods.  At the same time, you can also write the server code, which includes implemented the required methods and the server's main routine.  Once the client code has been completed, you then compile and link it with the client stub.  Similarly, you compile and link the server code with the server skeleton once the server code has been completed.  Before you can run the client and the server, you also need to start the Smart Agent.  Once that it started, you can start the server and run the client program. The VisiBroker ORB must be installed on every client and server machine. 
VisiBroker provides the following set of tools for administering the ORB during the development phase. 
  • VisiBroker Manager - provides a graphical tool for managing distributed objects [This is a separate product and is not included with the ORB.]
  • irep - manages the Interface Repository
  • oad - manages the Object Activation Daemon (OAD)
  • oadutil list - lists ORB object implementation registered with the OAD
  • oadutil reg - registers an ORB object implementation with the OAD
  • oadutil unreg - unregisters an ORB object implementation with the OAD
  • osagent - manages the Smart Agent
  • osfind - reports on objects running on a given network
  • idl2ir - allows you to populate an interface repository with interfaces defined in an IDL file
  • idl2cpp - generates C++ stubs and skeletons from an IDL file
  • idl2java - generates Java stubs and skeletons from an IDL file
For detailed information about these tools, see Chapter 6 "Using Administration tools" in VisiBroker for C++ Installation and Administration Guide and Chapter 3, "Programming tools" in the VisiBroker for C++ Reference.
Accessing CORBA Objects
In order for the client program to communicate with the server object, it needs to first obtain a reference to that object.  In VisiBroker, there are 3 ways to obtain an object reference.  One is by invoking the bind method.  This method is automatically included in your object by the IDL compiler. When the bind method is called, the ORB contacts the Smart Agent to locate an object implementation that offers the requested interface.  When an object implementation is found, the ORB connects the client program to the object implementation.  If the object implementation is on a separate process as the client program, the ORB creates a proxy object upon connection, which the client uses to invoke methods on.  "VisiBroker automatically determines the most efficient way to establish a connection between a client program and an object implementation" [VisiBroker for C++ Programmer's Guide, Chapter 5 "Accessing distributed objects with object references"].
Another way of obtaining an object reference is by stringification.  VisiBroker provides an object_to_string() method that converts an object reference to a string.  To convert the string to an actual object reference, the string_to_object() method can be used.
A third way of obtaining an object reference is through the VisiBroker Naming Service (see Implemented CORBA Services section below).
COM/CORBA Integration
"Visigenics supports software bridges to enable communications between DCOM and CORBA objects.  VisiBridge allows ActiveX controls implemented in Web pages, Visual Basic applications, or OLE-enabled applications to interoperate with CORBA objects.  Developers using ActiveX-enabled development environments can transparently access CORBA objects over the Internet or corporate intranet without having to know CORBA" [Inprise Corporate White Paper]
Implemented CORBA Services

VisiBroker provides implementation of the following services:

  • Naming Service.  This service allows you to associate one or more logical names with an object implementation and store those names in a namespace.  As mentioned above, the Naming Service is also one of the ways that a client program can obtain an object reference.  For the main differences between locating an object implementation using the Naming Service and using the Smart Agent, see the Naming and Event Services Programmer's Guide.
  • Event Service.  This service "provides a facility that de-couples the communication between objects.  It provides a supplier-consumer communications model that allows multiple supplier objects to send data asynchronously to multiple consumer objects through an event channel" [Installation and Administration Guide, Chapter 2 "VisiBroker Basics"].
  • Transaction. The VisiBroker Integrated Transaction Service "simplifies the complexity of transaction management by integrating an essential set of services into one product--including transactions, integration with databases and legacy systems, and administration tools for managing enterprise applications."  One of these services is the Transaction Service. This component is a compliant implementation of the CORBA Transaction Service, version 1.1, that manages the completion of the transaction. It works with objects at the ORB level to coordinate and manage a transaction's commit or rollback. It also interacts with an application when a transaction begins or coordinates the transaction's commit or abort across multiple objects" [ITS Administrator's Guide, Chapter 2 "VisiBroker ITS Basics"].
  • Security. "VisiBroker's optional SSL feature uses the industry-standard Secure Sockets Layer Version 3 (SSL) protocol, developed by Netscape Communications Corporation, to establish secure connections between clients and servers" [VisiBroker for C++ SSL Pack Programmer's Guide, Chaper 2 "Getting Started with SSL"].   It provides important security features such as authentication, privacy, and integrity.
  • Persistence. "VisiBroker allows you to implement objects that persist beyond the life of the implementation server by saving the objects to a text file, database, or object database. When an object implementation is activated, the object is initialized from the storage device and when the object is deactivated, its state is saved to the storage device" [VisiBroker for C++ Programmer's Guide, Chapter 18 "Enabling object persistence using the Object Database Activator"].
Partnerships and Awards
Inprise has partnerships with companies such as Netscape, Cisco, Oracle, and Novell.  Inprise claims that through such partnerships, "VisiBroker has become the de facto CORBA solution" [VisiBroker 3.2 for Java and C++ Solution Sheet].
VisiBroker won DBMS Magazine's 1997 Readers' Choice Award for Best Object Request Broker [Borland to Acquire Visigenic Press Release, 11/18/97].  A study by the Object Consulting Inc., which compared IONA's OTM and Inprise's ITS technology based on factors such as performance, scalability, and throughput, concluded that ITS outperforms the OTM in several factors [Object Consulting Inc. CORBA/OTS Performance].
Pricing
VisiBroker 3.0 for Java costs $1995 per developer on Windows and $2995 per developer on Unix.  This does not include the Naming and Event services.

Related References

ORB Comparison

Introduction

IONA Orbix family