[54] OBJECTS BY VALUE (OBV) UPDATED!
(Part of the CORBA FAQ, Copyright © 1996-99)


[54.1] WHAT ARE OBJECTS BY VALUE? NEW!

[Recently created (10/1999). Click here to go to the next FAQ in the “chain” of recent changes]

The Objects By Value (OBV) defintion includes semantics of pass-by-value similar to that of standard programming languages. The current CORBA specification only defines object reference semantics. The Objects By Value specification defines extensions to CORBA (and IDL) that allows designers the flexibility to allow the receiving side of a parameter to receive a new instance of the object.

TopBottomPrevious sectionNext section ]


[54.2] HOW CAN I USE OBV? NEW!

[Recently created (10/1999). Click here to go to the next FAQ in the “chain” of recent changes]

The valuetype definition supports both data members and operations, similar to C++ and Java class definitions. The receiving side creates its own copy of the object and all operations invoked on valuetypes are always local to the receiving process.

So, how can you use OBV? In our opinion, very carefully :-). This extension offers some flexibilities and a lot of rope to hang oneself. In particular, there are several very complex edge effects of the OBV specification, such as when interface references and valuetypes are intermixed. By focusing on a few, simple valuetypes that provide operations that are basic functionality (such as edit rules, data validations, conversions and queries (e.g., what day is 1/1/2000), and other utility operations), the use of valuetypes will be clearer to those that use them.

TopBottomPrevious sectionNext section ]


[54.3] WHAT DOES OBV REALLY PROVIDE? NEW!

[Recently created (10/1999). Click here to go to the next FAQ in the “chain” of recent changes]

From the OBV specification:

Valuetypes provide semantics that bridge between CORBA structs and CORBA interfaces:

TopBottomPrevious sectionNext section ]


[54.4] WHAT IS A VALUE TYPE? NEW!

[Recently created (10/1999). Click here to go to the next FAQ in the “chain” of recent changes]

A Value Type is an object whose semantics lie between a CORBA interface and a structure. There are two types a Value Types that can be declare:

Concrete Value Types define state (properties) and the implementation is always local. Abstract Value Types do not define properties. Both Concrete and Abstract Value Types can define operations (interface) and inherit from other Value Types and interfaces.

TopBottomPrevious sectionNext section ]


[54.5] IN WHAT CASES DO I NEED A VALUE TYPE? NEW!

[Recently created (10/1999). Click here to go to the next FAQ in the “chain” of recent changes]

In some cases it is desirable to have a receiving party instantiate a copy of an object. This implies that the receiver knows how to implement the object (instantiate it, initialize it, provide implementations of the operations). More importantly, this also implies the receiver knows something about the semantics of the object and can utilize those semantics locally. The new instance created by the receiving side has a separate identity from the original object, and once the parameter passing operation is complete, there is no relationship between the two instances.

TopBottomPrevious sectionNext section ]


[54.6] HOW DOES A VALUE TYPE DIFFER FROM AN INTERFACE TYPE? NEW!

[Recently created (10/1999). Click here to go to the next FAQ in the “chain” of recent changes]

An Value Type differs from an interface in that it potentially carries additional properties that define state and that the operation implementation are executed locally. If you recall, when we pass or receive an interface type ( an object reference ) and execute operations on it, these operations end up as remote invocations to the “real” implementation object. Again, Value Types are not meant to replace interface types, and should be used in very specific instances in which the receiving side can benefit from not making remote invocations.

TopBottomPrevious sectionNext section ]


[54.7] WHAT IS AN ABSTRACT VALUE TYPE? NEW!

[Recently created (10/1999). Click here to go to the next FAQ in the “chain” of recent changes]

An Abstract Value Type is a Value Type that may not be instantiated. Only Concrete Types can be instantiated and implemented. Also, no state information may be specified in an Abstract Type.

TopBottomPrevious sectionNext section ]


E-Mail E-mail us
CORBA FAQTable of ContentsExhaustiveAlphabeticalSubject indexAbout the authors©TMDownload your own copy ]
Revised Oct 27, 1999