CORBA (Powerpoint)
Download
Report
Transcript CORBA (Powerpoint)
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
CORBA’s 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
JDBC
JavaRMI
Native
Client
Client
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 class’s
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 don’t
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).