You are on page 1of 29

Common Object Request

Broker Architecture
(CORBA)

By:
Sunil Gopinath
David Watkins
Introduction

• What is the purpose / goals of CORBA?


• How to meet goals?
• Example
• Conclusion
What is the purpose / goals of CORBA?

• Enable the building of plug and play


component software environment
• Enable the development of portable, object
oriented, interoperable code that is
hardware, operating system, network, and
programming language independent
How to meet goals?

• Interface Definition Language (IDL)


• Object Request Broker (ORB)
Interface Definition Language (IDL)

• Language Independence
• Defines Object Interfaces
• Hides underlying object implementation
• Language mappings exist for C, C++, Java,
Cobol, Smalltalk, and Ada
Interface Definition Language (IDL)
module <identifier> Defines a container
{ (namespace)
interface <identifier> [:inheritance]
{
<type declarations>; Defines a
<constant declarations>; CORBA object
<exception declarations>;
<attribute declarations>;

[<op_type>] <identifier>(<parameters>)
[raises exception][context];
} Defines a
} method
IDL Compiler

IDL
Definitions 1. Define objects using
IDL
2. Run IDL file through
IDL compiler
3. Compiler uses language
IDL mappings to generate
Compiler programming language
specific stubs and
skeletons

Stubs Skeletons
Object Request Broker (ORB)

• What is it?
• Architecture
• Request Handling
• Scenario
• CORBA Services
• CORBA Facilities
What is it?

• Implementation of CORBA specification


• Middleware product
• Conceptual Software Bus
• Hides location and Application
implementation details
Middleware
about objects
OS Drivers

Hardware
Client / Object Interaction

Client Obj Impl Client Obj Impl


IDL IDL IDL IDL

ORB ORB
TCP/IP

TCP/IP
ATM

ATM
IPX

IPX
OSI

Network OSI
ORB Architecture
Interface IDL Implementation
Repository Compiler Repository

Client OBJ Object (servant)


Ref

IDL
DSI
IDL ORB Skeleton
DII
Stub Interface
Object Adapter

GIOP/IOOP ORB Core


Interface Repository
Interface
Repository

• Database of object definitions


• Contains metadata about each object
• Allows for introspection
• Allows clients to discover interfaces at run-time
• Used in support of dynamic invocations
Object Adapter
IDL Compiler
IDL
Compiler

• Compiles IDL definition into stubs and


skeletons
• Uses OMG specified language mappings
to translate IDL into a language specific
implementation

Object Adapter
Implementation Repository
Implementation
Repository

• Contains information that allows the ORB


to locate and activate object
implementations
• Provides information about the classes a
server supports, the objects that are
instantiated, and their IDs
Object Adapter
ORB Core

• Provides mechanism for transparently


communicating client requests to target
object implementations
• Makes client requests appear to be local
procedure calls
• GIOP – General Inter-ORB Protocol
• IIOP – Internet Inter-ORB Protocol

Object Adapter

GIOP/IOOP ORB Core


ORB Interface

Client Object (servant)

• Provides helper functions


ORB • Converting object
Interface references to strings
Object Adapter
• Creating argument
lists for requests made
through DII
IDL Stub

• Static invocation
interface (SII)
Client • Marshals application
data into a common
packet-level
representation
– Network byte order
(little-endian or big-
IDL endian)
Stub – Size of data types
IDL Skeleton

• Demarshals the
packet-level
representation back Object (servant)
into typed data that is
meaningful to an
application IDL
– Network byte order Skeleton
(little-endian or big-
endian)
– Size of data types
Dynamic Invocation Interface
• Dynamically issue requests to objects
without requiring IDL stubs to be
linked in
Client • Clients discover interfaces at run-
time and learn how to call them

Steps:
1. Obtain interface name
2. Obtain method description (from
DII interface repository)
3. Create argumentObject
list Adapter
4. Create request
5. Invoke request
Dynamic Skeleton Interface

• Server side analogue to DII


• Allows an ORB to deliver Object (servant)
requests to an object
implementation that does
not have compile-time
knowledge of the type of DSI
object it is implementing
Object Adapter
Object Adapter
• Accept requests for service on behalf
of the server’s objects
• Demultiplexes requests to the correct
servant Object (servant)
• Dispatches the appropriate operation
upcall on the servant
• Registers classes it supports and their
run-time instances with the IDL
implementation repository DSI
Skeleton
• Portable Object Adapter (POA)
• policies control object behavior Object Adapter
(ie. LifespanPolicy)
• Instance of the adapter design pattern
Object Reference

Client OBJ Object (servant)


Ref

• Interoperable Object Reference (IOR)


• Uniquely identifies each object
• Contents
• Type Name (repository ID)
Object Adapter
• Protocol and Address Details
• Object Key (object adaptor name, object name)
Request Handling

Server Application
POA

Incoming
Request ORB POA Servants

POA
Scenario
Interface IDL Implementation
Repository Compiler Repository

Client OBJ Object (servant)


Ref

IDL
DSI
IDL ORB Skeleton
DII
Stub Interface
Object Adapter

GIOP/IOOP ORB Core


CORBA Services
• Provide basic infrastructure functionality
• Currently there are 15 defined services
– Naming - maps human names to object references
(White Pages)
– Event - provides both a push and pull event model
– Object Trader - discover objects based on the services
they provide (Yellow Pages)
– Transactions – allows distributed objects to participate
in atomic transactions
CORBA Facilities
• Provide higher-level functionality at the application
level
• Provide standard components that can be used “off-the-
shelf”
• Two Categories
– Horizontal – user interface, information management,
systems management, and task management
– Vertical – domain based, telecommunications, financial
services
Example
Conclusion

• Distributed object, component architecture


• Real world examples of design patterns
– TAO – freeware ORB
• Adapter, Factory, Reactor, Strategy
• Plugable Transports
• CORBA Beans
References
• www.omg.org
• www.cs.wustl.edu/~schmidt/corba.html
• http://www.infosys.tuwien.ac.at/Research/Corba/
OMG/arch2.htm
• Communications of the ACM, October 1998
• Jeri Edwards, Dan Harkey, and Robert Orfali.
Instant CORBA. New York: Wiley Computer
Publishing, 1997.