The objective of TORBA is to provide a simple and strongly typed trading facility for CORBA applications. In that, TORBA is based upon the ODP/OMG CosTrading service, taking full advantage of its functionalities like available implementations, complex lookup algorithms, offer persistence, large-scaled trader federations.
Then, the conceptual benefit of TORBA is to define the concept of trading contracts. Such a contract is defined at application design time like OMG IDL interface contracts are defined [9]. These contracts take into account offer provider needs as well as client application ones: This results in the definition of trading offer types. First, offer types clearly identify and group together properties (i.e. name and type of the values) characterizing exported CORBA objects conform to a given OMG IDL interface. Second, offer types also contain a list of query operations commonly used in client applications. Such operation is characterized through a synopsis (name and parameters), as well as a boolean constraint to be applied on both parameters and the properties of the associated type. Offer types may be classified using multiple inheritance. Such a classification permits designers to define abstract types, like a device, that could be specialized to concrete types, like a scanner and a printer. Moreover, concrete types can also be inherited to define new query operations exactly meeting requirements of client applications. Using multiple inheritance improves the reuseness of properties and query operations.
The technical benefit of TORBA is to provide a complete generation and execution environment to use trading contracts. Offer types are defined using the TORBA Definition Language (TDL). Such definitions are then compiled to generate trading proxies offering to applications easy-to-use OMG IDL interfaces. The use of these specialized interfaces is thus checked at application compilation time. Moreover, proxy implementations fully hide the ODP/OMG CosTrading technicity. Such implementation is generated for several programming languages: OMG IDLscript, Java, and C++ later on. In the meantime, trading contracts could also be used dynamically through a generic graphical console. Trading contracts are stored into a repository and browsed by the console which can also invoke query operations defined for the given type.