Вы находитесь на странице: 1из 22

Common Object Request Broker

Architecture (CORBA)
CS-328

What is CORBA
Specification for a standard O-O
architecture for applications
1990 - Object Management Group
publishes Object Management
Architecture Guide
1991 - Common Object Request Broker
Architectural Specification

CORBAs Goal
Integrate existing mainframe applications with
desktop based tools
Access distributed information and resources from within desktop
tools
Make existing business data available as network resources
Augment desktop applications with custom functions and
capabilities for a particular business
Change and evolve network based systems to reflect new
topologies or resources

Distributed Computing
Two or more pieces of software sharing information
could be on same machine
could be on different machines on same network
could be on different machines on different networks

based on client/server concepts


Benefits:
sharing of scarce resources
load balancing
run applications on most appriate hardware

Existing Mechanisms - RMI, RPC, Corba, network APIs

Distributed Object Computing


Marriage of Distributed Computing with an Object
Model
Uses a broker to handle messages requests
between clients and servers
broker can choose server that best fits needs of client
allows separation of interface and implementation
allows building block approach to development and
evolution

Object Model
Provides:
Abstraction
group objects and focus on their similarities

Encapsulation
hide implementation details from the services provided

Inheritance
ability to pass along (object-to-object) capabilities and behaviors

Polymorphism
ability to substitute objects with matching interfaces at run time

Object Management Architecture


Application

Common

Objects

Facilities

Object Request
Broker

Object
Services

What does the ORB do?


The ORB provides a communications hub for
all objects
analogous to a hardware bus

Provides object services


creation, access control and object tracking

Common Facilities
db access, printing, synchronization, document
management

CORBA Object Communications


CORBA Objects communicate via their interfaces
Interfaces are defined using Interface Definition Language
Language independent
Designed to be language agnostic
Directly maps most common data types
There are some datatype mapping problems,
especially when using different languages for the
client and server.

CORBA Object Communications

IIOP
Object A

Interface

Object B

Interface

Conceptually ...
Client

Client

Client

Server

ORB

Server

Server

What happens...
Server objects register their methods with the
orb naming service
Client binds to the orb naming server for a
server object method
Naming service return location of server
object and disconnects
Client connects to server at returned location

Really though...
ORB
Client

Services

Registration
1
Server

2
Client

Server
3

Client

Server

3-Tier Client Server


Sockets
JavaIDL
Client

Client

Client

JDBC

JavaRMI

Native
Server

DB

3-Tier Advantages
Server can manage database connections
efficiently
Client can focus on presentation
Server can preformat data for client and focus
on business logic
Running server on high performance
hardware can improve perceived performance

Interface Definition Language


In Java we cannot separate a classs
definition from its implementations as we
can in C++
Header files
Implementation files

CORBA allows the separation of definition


and implementation

IDL (more)
CORBA uses IDL for defining interfaces
between clients and servers
ORB Vendors provide specific IDL
compilers for supported languages
create target language stubs and skeletonsfor
building CORBA clients and servers
C, C++, Smalltalk, Java, COBOL

IDL/Java type mapping


due to differences in heritage IDL and Java types dont
have a 1 to 1 mapping:
long

Java int

short

Java short

float

Java float

double

Java double

char

Java char

boolean

Java boolean

octet

java byte

string

java.lang.String

any

Special type consisting of any of the above

an IDL interface
ex.
interface Cooler {
int getHotWaterLevel();
int getWarnWaterLevel();
int getColdWaterLevel();
exception NoMoreWaterException { };
int getHotWater() throws NoMoreWaterException;
int getWarmWater() throws NoMoreWaterException;
int getColdWater() throws NoMoreWaterException;
}

Compiling the IDL


Compiling the IDL using the javatoidl compiler will
produce six classes:

CoolerRef
CoolerHolder
CoolerOperations
CoolerStub
CoolerServant
CoolerSkeleton

The ORB
What is it that the ORB does ?
Object location
Location transparency

Object communications
Marshalls and unmarshalls parameter and results data

Services

Object Life Cycle Management


Naming
Event decoupling
Relationship management
Externalization
Transaction management
Concurrency control
Property management
Trader locating objects based on properties
Object query

OEM Orb Info

The Borland VisiBroker Orb is built into Netscape Communicator 4.x


but can be purchased seperately
CORBA 3.0 Compliant
Language support C++, Java, .NET (C++ and C#)

Orbix & Orbacus (Progress Software (previously Iona Technologies)

CORBA 2.6 Compliant

Language support - C, C++, Java, COBOL, Smalltalk, Ada, PL/1, Lisp, Python and
IDLscript. In additionally mappings for Perl, Objective-C, Oberon, Eiffel,
Modula3, Scheme, and Tcl.

J2SE - org.omg.CORBA ( in the JDK) since JDK 1.3)


Provides the mapping of the OMG CORBA APIs to the JavaTM
programming language, including the class ORB
class ORB is implemented such that a programmer can use it as a fullyfunctional Object Request Broker (ORB).

Вам также может понравиться