11_Corba - Andrew.cmu.edu

Download Report

Transcript 11_Corba - Andrew.cmu.edu

Organizational Communications and
Distributed Object Technologies
Lecture 13: CORBA
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
1
CORBA
Chapter 20 Coulouris text
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
2
Today’s Topics
• CORBA History and goals
• CORBA RMI
• CORBA services
• The Distributed Whiteboard
Revisited
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
3
CORBA History and Goals
• Object Management Group Formed in
1989
• Goals:
-- OOP on distributed systems
-- heterogeneous hardware
-- heterogeneous OS
-- different programming
languages
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
4
History and Goals
• OMG Introduced the Object
Request Broker (ORB)
• The role of the ORB is to help a
client find an object, activate the
object if necessary, and call a
method on the object.
• Common Object Request Broker
Architecture (CORBA) agreed to by
a group of companies in 1991
• CORBA 2.0 specification released
5
in 1996
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
History and Goals
• CORBA 2.0 specification defined
standards for different
implementations of CORBA to
communicate with one another
• These standards are called the
General Inter-ORB protocol (GIOP)
and may run over various
transports
• GIOP over TCP/IP is called the
6
Internet Inter-ORB Protocol
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
CORBA RMI
• Main components
-- An Interface Definition language (IDL) that promotes
the use of different programming languages, stubs
are generated in the client’s language and skeletons
are generated in the server’s language
-- An architecture
-- GIOP defines an external data representation (CDR)
as well as message formats and message types
-- Message types include request and reply as
well as location requests, errors, and request
cancellations
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
7
CORBA Services
• A set of generic services that can be used
for distributed application
-- Naming Service (location by name)
-- Trading Service (location by attribute directory service)
-- Event Service
-- Security Service (authentication, ACL’s, auditing, nonrepudiation)
-- Transaction Service (begin, commit, rollback a
series of RMI calls using the Two Phase Commit
Protocol)
-- Persistent Object Service (POS)
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
8
The Distributed Whiteboard
Example in CORBA
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
9
IDL Interfaces Shape and
ShapeList
struct Rectangle{ // no class in IDL
struct GraphicalObject
1
long width;
long height;
long x;
long y;
};
interface Shape {
long getVersion() ;
GraphicalObject getAllState() ;
};
{
2
string type;
Rectangle enclosing;
boolean isFilled;
};
3
// returns state of the GraphicalObject
typedef sequence <Shape, 100> All;
// All is a 100 element array
4
interface ShapeList {
5
exception FullException{ };
6
Shape newShape(in GraphicalObject g) raises (FullException);
7
All allShapes(); // returns sequence of remote object references
8
long getVersion() ;
// parameters are in, out, or both
};
// parameters may be primitive, struct or array and
// are passed by value
95-702 OCT
// parameters whose type is an IDL interface
10
Master of Information System
//
is
passed
by
remote
reference
Management
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
The “idltojava” tool
• Run idltojava on the above interface.
• The command idlj is found in
j2sdk1.4.2\bin.
• The Java 2 Platform, Standard Edition,
v1.4, provides an Object Request
Broker (ORB) runtime component.
• The JDK documentation states that its
Java ORB has not been tested with
ORB’s written in other languages.
• JDK 1.4 provides an Orb class with a
pluggable architecture.
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
11
From IDL to Your Language
of Choice
The OMG specifies a mapping from IDL to several different programming
languages, including Java, C, C++, Lisp, Python, Smalltalk, COBOL, and Ada.
When mapped, statements in the OMG IDL are translated to corresponding
statements in the programming language of choice. From JDK Documentation
The IDL and the IDL compiler give CORBA its interoperability.
IDL
IDL Compiler
Proxy
Quiz: How does this compare with Web Services?
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
12
Java Interface ShapeList Generated by
idltojava from CORBA Interface
ShapeList
public interface ShapeList extends org.omg.CORBA.Object {
Shape newShape(GraphicalObject g) throws ShapeListPackage.FullException;
Shape[] allShapes();
int getVersion();
}
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
13
ShapeListServant.java Written by a Java
Developer
import org.omg.CORBA.*;
class ShapeListServant extends _ShapeListImplBase {
ORB theOrb;
private Shape theList[];
private int version;
private static int n=0;
public ShapeListServant(ORB orb){
theOrb = orb;
// initialize the other instance variables
}
public Shape newShape(GraphicalObject g) throws ShapeListPackage.FullException {
1
version++;
Shape s = new ShapeServant( g, version);
if(n >=100) throw new ShapeListPackage.FullException();
theList[n++] = s;
2
theOrb.connect(s);
return s;
Note how it talks to the CORBA
}
public Shape[] allShapes(){ ... }
Object Request Broker.
public int getVersion() { ... }
}
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
14
ShapeListServer.java
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
Note the call
import org.omg.CORBA.*;
on rebind.
public class ShapeListServer {
public static void main(String args[]) {
try{
ORB orb = ORB.init(args, null);
1
ShapeListServant shapeRef = new ShapeListServant(orb);
2
orb.connect(shapeRef);
3
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
4
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc = new NameComponent("ShapeList", "");
5
NameComponent path[] = {nc};
6
ncRef.rebind(path, shapeRef);
7
java.lang.Object sync = new java.lang.Object();
synchronized (sync) { sync.wait();}
} catch (Exception e) { ... }
95-702 OCT
}
15
Master of Information System
}
Management
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
ShapeListClient.java
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
public class ShapeListClient{
public static void main(String args[]) {
try{
ORB orb = ORB.init(args, null);
1
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc = new NameComponent("ShapeList", "");
NameComponent path [] = { nc };
ShapeList shapeListRef =
ShapeListHelper.narrow(ncRef.resolve(path));
2
Shape[] sList = shapeListRef.allShapes();
3
GraphicalObject g = sList[0].getAllState();
4
} catch(org.omg.CORBA.SystemException e) {...}
}
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
Note the use of Java
interfaces and
classes that were
generated by idltojava.
These are not
dynamic calls. The
compiler sees the
interfaces and classes.
16
CORBA Architecture (1)
client
implementation
repository
Request
client proxy ORB
program for A core
Reply
or dynamic invocation
server
interface
repository
object skeleton
adapter
ORB
core
Servant
A
or dynamic skeleton
CORBA allows for static and dynamic invocation. Applications may invoke
operations on target objects with or without having compile-time knowledge of
the remote object interface. (The client is a lot easier to read when it makes
static calls.)
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
17
CORBA Architecture (2)
client
implementation
repository
Request
client proxy ORB
program for A core
Reply
or dynamic invocation
server
interface
repository
object skeleton
adapter
ORB
core
Servant
A
or dynamic skeleton
The Implementation Repository contains information that allows the ORB
to locate and activate implementations of objects. The implementation repository :
1. Maintain a registry of known servers.
2. Record which server is currently running, and which port and host it uses.
3. Starts servers on demand if they are registered with the Implementation
Repository. From [http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/
docs/implrepo/paper.html]
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
95-702 OCT
Master of Information System
Management
18
CORBA Architecture (3)
client
implementation
repository
Request
client proxy ORB
program for A core
Reply
or dynamic invocation
server
interface
repository
object skeleton
adapter
ORB
core
Servant
A
or dynamic skeleton
Dynamic CORBA applications require a means of obtaining type information
at run time. This is the function of the Interface Repository.
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
19
Naming Graph in CORBA
Naming Service
initial naming context
initial naming context
B
ShapeList
initial naming context
XX
P
V
C
D
E
R
Q
S
T
U
CORBA provides a registry service and a directory service.
Quiz: How does a registry differ from a directory?
Quiz: How is this different from the rmiregistry?
95-702 OCT
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Master of Information System
Management
20
My Summary
CORBA
Binary
fast
Java RMI Binary
fast
.NET
Binary
Remoting fast
Interoper Complex
able
OOP
Java only Complex
OOP
.Net
Languag
es
Web
Text
Interoper
Services w/binary able
encoded
95-702 OCT
slowSystem
Master of Information
Quic kTime™ and a
TIFF (Unc ompres sed) dec ompres sor
are needed to see this pic ture.
Management
Complex
OOP
Not OOP
Simple &
Simple
wins
21