CORBA is a mechanism in software for normalizing the method-call semantics between application objects that reside either in the same address space (application) or remote address space (same host, or remote host on a networkThe CORBA specification dictates that there shall be an ORB through which the application interacts with other objects. In practice, the application simply initializes the ORB, and accesses an internal Object Adapter which maintains such issues as reference counting, object (and reference) instantiation policies, object lifetime policies, etc. The Object Adapter is used to register instances of the generated code classes. Generated code classes are the result of compiling the user IDL code, which translates the high-level interface definition into an OS- and language-specific class base for use by the user application. This step is necessary in order to enforce the CORBA semantics and provide a clean user process for interfacing with the CORBA infrastructure.
Illustration of
the autogeneration of the infrastructure code from an interface defined using
the CORBA IDLThis figure illustrates the high-level paradigm for remote
interprocess communications using CORBA. Issues not addressed here, but that
are accounted-for in the CORBA specification include: data typing, exceptions,
network protocol, communication timeouts, etc. For example: Normally the server
side has the Portable Object Adapter (POA) that
redirects calls either to the local servants
or (to balance the load) to the other servers. Also, both server and client
parts often have interceptors that are described below. Issues CORBA (and thus
this figure) does not address, but that all distributed systems must address:
object lifetimes, redundancy/fail-over, naming semantics (beyond a simple
name), memory management, dynamic load balancing, separation of model between
display/data/control semantics, etc.
CORBA defines an architecture for distributed
objects. The basic CORBA paradigm is that of a request for services of a
distributed object. Everything else defined by the OMG is in terms of this
basic paradigm. The services that an object provides are given by its interface.
Interfaces are defined in OMG's Interface Definition Language (IDL).
Distributed objects are identified by object references, which are typed by IDL
interfaces.
The ORB is the distributed
service that implements the request to the remote object. It locates the remote
object on the network, communicates the request to the object, waits for the
results and when available communicates those results back to the client.
The ORB implements location
transparency. Exactly the same request mechanism is used by the client and the
CORBA object regardless of where the object is located. It might be in the same
process with the client, down the hall or across the planet. The client cannot
tell the difference.
The ORB implements programming language independence
for the request. The client issuing the request can be written in a different
programming language from the implementation of the CORBA object. The ORB does
the necessary translation between programming languages. Language bindings are
defined for all popular programming languages.
CORBAservices
OMG is pleased to announce a new format for its formal CORBAservices
specifications. Previously, the CORBAservices were combined into one
"binder" and you had the option to view/print the complete set of
services or each service.The new format treats each CORBAservice as its own stand-alone document. You have the option to view/print each CORBAservice separately. There are several CORBA services. The popular ones are described in detail in another module of this course. Below is a brief description of each:
Service
|
Description
|
Object life cycle
|
Defines how CORBA objects are
created, removed, moved, and copied
|
Naming
|
Defines how CORBA objects can
have friendly symbolic names
|
Events
|
Decouples the communication
between distributed objects
|
Relationships
|
Provides arbitrary typed n-ary
relationships between CORBA objects
|
Externalization
|
Coordinates the transformation
of CORBA objects to and from external media
|
Transactions
|
Coordinates atomic access to
CORBA objects
|
Concurrency Control
|
Provides a locking service for
CORBA objects in order to ensure serializable access
|
Property
|
Supports the association of
name-value pairs with CORBA objects
|
Trader
|
Supports the finding of CORBA
objects based on properties describing the service offered by the object
|
Query
|
Supports queries on objects
|
No comments:
Post a Comment