You are on page 1of 45

Common Object Request

Broker Architecture
Ali Ghodsi
aligh@imit.kth.se

2004-02-02 A. Ghodsi aligh@imit.kth.se 1

1
Goal of lecture

Go a bit more into depth on the core


architecture of CORBA

Less breadth
Read van Steen’s book

2004-02-02 A. Ghodsi aligh@imit.kth.se 2

2
Reading suggestions
Tanenbaum & van Steen
CORBA
Section 2.3 page page 85-98
Section 3.2.2 page 152-158
Section 9.1

Read chapter 9 and compare other systems with CORBA


Compare RPC and DCE Remote Objects with CORBA

Links
Nice CORBA tutorial:
http://www.omg.org/gettingstarted/

2004-02-02 A. Ghodsi aligh@imit.kth.se 3

3
Outlook
General Overview
General Information
Applications
Quick Architectural Overview
OOP plus Distribution Transparency
CORBA main overview
Interface Definition Language (IDL)
Types
Examples
Mappings
ORB
DII (and DSI)
ORB interface
Object Reference
POA
Persistent and Transient Objects
Conclusions
2004-02-02 A. Ghodsi aligh@imit.kth.se 4

4
General CORBA Information
Distributed Object Model (more later)
It is a middleware
Difference between Network OS Middleware?

Only a standard (v 2.7, 3.0)


No reference implementation!
Many independent implementations

OMG - Non-profit organization


800 members!
Standardized UML and more…

2004-02-02 A. Ghodsi aligh@imit.kth.se 5

5
Real World Applications?
Support ”dinosaurs”
Companies have invested years of development in
projects done in ADA, C, Smalltalk…
CORBA enables interoperability with new languages

Languages with small user-base


Eg Erlang, again interoperability

Big ERM, ERP, IS


Many different architectures, languages, platforms…

2004-02-02 A. Ghodsi aligh@imit.kth.se 6

6
Outlook
General Overview
Quick Architectural Overview
OOP with Distribution Transparency
CORBA overview
Interface Definition Language (IDL)
Types
Examples
Mappings
ORB
Conclusions

2004-02-02 A. Ghodsi aligh@imit.kth.se 7

7
CORBA builds on the DOM
Provides a nice model

Encapsulation

Inheritance

Polymorphism

2004-02-02 A. Ghodsi aligh@imit.kth.se 8

8
Exploiting Encapsulation
Encapsulation enables:
Distribution Transparency
Have stubs and skeletons that together with ORBs
enable distribution*.

Inter-operability**
Define interfaces in a standardised way
Interface Definition Language (IDL)

2004-02-02 A. Ghodsi aligh@imit.kth.se 9

9
Goal 1: Distribution Transparency
Encapsulation: black-box principle
Has an interface
Implementation details
public interface MathBox {
hidden
int add(int x, int y);
} Transparently
distribute
public class MathBoxCL
… implements MathBox {
MathBox obj = new MathBoxCL(); MathBoxCL() {}
System.out.println(obj.add(10,20)); int add(int x, int y)
… { return x+y; }
}
2004-02-02 A. Ghodsi aligh@imit.kth.se 10

10
Distribution Transparency
Missing parts:
Client • Marshalling Server Implementation
… int add(int x, int y)
• Unmarshalling
MathBox obj = new MathBoxCL(); { return x+y; }
Integer result = obj.add(10,20);
• References

MathBoxCL (SKELETON)
• Binding client to server
int invoke(msg msg)
MathBoxCL (PROXY) {{ int x, y;
x=msg.Unmarshall(INT);
x=msg.Unmarshal(INT);
int add(int x, int y)
y=msg.Unmarshall(INT);
y=msg.Unmarshal(INT);
{ Msg msg=new Msg();
res=serverImpl.add(x,y);
msg.Marshall(x);
msg.Marshal(x);
Msg msg=new Msg();
msg.Marshall(y);
msg.Marshal(y);
msg.marshall(res);
msg.marshal(res);
SendReqMsg(HOST,IP,msg);
SendReqMsg(HOST,IP,msg);
SendRespMsg(HOST,IP,msg);
SendRespMsg(HOST, IP, msg);
}
}

2004-02-02 A. Ghodsi aligh@imit.kth.se 11

11
Goal 2: Inter-operability
Use a language with standardized syntax to
define the interface
Generate the stub and the skeleton
Programming Language Independent

C++
JAVA
MathBoxCL (SKELETON)
int invoke(Msg msg)
{ int x, y;
MathBoxCL (STUB) msg=GetMsg();
int add(int x, int y)
{ Msg msg=new Msg(); x=msg.Unmarshal(INT);
msg.Marshal(x); y=msg.Unmarshal(INT);
msg.Marshal(y); res=serverImpl.add(x,y);
SendReqMsg(HOST,IP,msg); Msg msg=new Msg();
} msg.marshal(res);
SendRespMsg(HOST, IP, msg);
}

2004-02-02 A. Ghodsi aligh@imit.kth.se 12

12
Overview

operation()
Client args + return Object Implementation
value

Object
SKELETON
STUB Adapter

Network
ORB Core ORB Core
ORB-dependent implementation
Application specific Stub and Skeleton
Same inteface. ORB-independent

2004-02-02 A. Ghodsi aligh@imit.kth.se 13

13
Outlook
General Overview
Architecture Overview
Interface Definition Language (IDL)
Types
Example
Language Mappings
ORB
Conclusions

2004-02-02 A. Ghodsi aligh@imit.kth.se 14

14
Interface Definition Language
Builds on OOP principle of encapsulation
Clear boundary between implementation and interface

Independent
Programming Language (Only OO?)
OS
Platform
Network Connection
etc

Can be converted to a binary format and stored in a


database (i.e. well-defined schema, iterators)
Interface Repository (IR)
A Repository ID for each interface

2004-02-02 A. Ghodsi aligh@imit.kth.se 15

15
IDL’s Type System
Two levels:
Interfaces for CORBA objects!
One interface per CORBA object
Official types for variables
integers, floats
struct, enum
array
string
binary values
…and more!
Scoped types
modules
exceptions
Interfaces
structs

2004-02-02 A. Ghodsi aligh@imit.kth.se 16

16
Examples
DSLABS.IDL:
typedef string GroupMembers[4];

interface DS_project {
long register_project(in long groupId, in string status, inout string date);
long get_status(in long groupId, out string state, out string date, out
GroupMembers gm);
};

2004-02-02 A. Ghodsi aligh@imit.kth.se 17

17
IDL language mappings
OMG defines mappings to different languages
C, C++, Java, Smalltalk, COBOL, Ada, Lisp, PL/1,
Python, and IDLscript
Proprietary mappings exist for obscure languages,
though not standardized!

Every ORB has an IDL compiler


Creates
A STUB and
A SKELETON

2004-02-02 A. Ghodsi aligh@imit.kth.se 18

18
Outlook
General Overview
Architecture Overview
Interface Definition Language (IDL)
ORB
DII (and DSI)
ORB interface
Object References
POA
Persistent and Transient Objects
Conclusions

2004-02-02 A. Ghodsi aligh@imit.kth.se 19

19
Compile time vs Runtime?

What if interfaces change?


Recompile everything? Unfeasable
Dynamic interface definitions required:
IS (Information Systems)
ERM (Enterprise Resource Management systems)
Batch Service
etcetera

2004-02-02 A. Ghodsi aligh@imit.kth.se 20

20
Dynamic Invocation Interface (DII)
Generic run-time invocation

No compile-time knowledge of CORBA


object interfaces
No stub and skeleton needed a-priori
Instead, a generic interface is used
Of course defined in IDL

2004-02-02 A. Ghodsi aligh@imit.kth.se 21

21
Dynamic Invocation Interface (DII) cont.
In essence:
Search and fetch an IDL from an Interface
Repository. (remember binary presentation
of IDL)
Construct a request
Specify target object, operation, and
parameters
Invoke the request
C++ (not entirely true)
invoke(remoteObj, ”getStatus”, paramters)
Java uses reflection/introspection (transparent):
remoteObj.getStatus(paramters);
2004-02-02 A. Ghodsi aligh@imit.kth.se 22

22
Complete picture

operation()
Client args + return Object Implementation
value

Dynamic
Static Object
Dynamic Static Skeleton
Skeleton Adapter
Invocation Stub Interface

Network
ORB Core ORB Core
ORB-dependent implementation
Application specific Stub and Skeleton
Same inteface. ORB-independent

2004-02-02 A. Ghodsi aligh@imit.kth.se 23

23
Object References
Remote object references
Enable clients to invoke CORBA objects

Three incarnations
Language specific implementation
E.g. pointer to a stub in C++ implementing the
IDL
Not valid outside local computation space
Language independent ORB representation
IOR, Inter-operable Object Referenece
Supported by all ORBs
Textual representation
Send by e-mail, store in DB, textfiles and so on.

2004-02-02 A. Ghodsi aligh@imit.kth.se 24

24
Inter-operable Object References (IOR)

Type Name Protocol Object Key


Remote
”Reference
(Repository ID)to an object
Object
Hostname Port on a server
& Reference
(Adapter & Object Name)

*GIOP, address, port ex: ”IIOP v1.0”,”ripper.it.kth.se”, 8765

*Which object adapter, which object?

ex: ”OA5”, ”_DSD”

Repository ID ex: ”IDL:KTH/imit/DSD:1.0”


2004-02-02 A. Ghodsi aligh@imit.kth.se 25

25
ORB Interface

operation()
Client args + return Object Implementation
value

Dynamic
ORB Static Object
Dynamic Static Skeleton
Interface Skeleton Adapter
Invocation Stub Interface

Network
ORB Core ORB Core
ORB-dependent implementation
Application specific Stub and Skeleton
Same inteface. ORB-independent

2004-02-02 A. Ghodsi aligh@imit.kth.se 26

26
ORB Interface
Standard interface (defined in IDL)
All ORBs implement this interface

Important services provided:


Bootstrapping, getting initial references
Converting Object References to Strings and
vice versa
Object Reference Counting
Distributed garbage collection

2004-02-02 A. Ghodsi aligh@imit.kth.se 27

27
How do I get an IOR?
All ORBs implement:
string_to_object()
file, e-mail, phone :)

resolve_initial_references()
Returns an IOR for naming service, interface
repository
Continue to search for IOR’s in a naming
service

2004-02-02 A. Ghodsi aligh@imit.kth.se 28

28
Portable Object Adapter (POA)

operation()
Client args + return Object Implementation
value

Dynamic
Dynamic
ORB Skeleton
Static Object
Static Skeleton
Interface Interface Adapter
Invocation Stub

Network
ORB Core ORB Core
ORB-dependent implementation
Application specific Stub and Skeleton
Same inteface. ORB-independent

2004-02-02 A. Ghodsi aligh@imit.kth.se 29

29
Why Object Adapters?
Client 1 Server
dsObject.calculate(); DsObject::calculate()
{
Client 2 ...
dsObject.calculate(); }

Several clients call the same object, what


to do?
Demultiplex requests

2004-02-02 A. Ghodsi aligh@imit.kth.se 30

30
Why Object Adapters? (2)
Client 1 Server
dsObject.calculate(); DsObject::calculate()
{
Client 2 ...
dsObject.calculate(); }

Queue requests or run in separate threads?


Serialize all requests
One thread per object
One thread per invocation
Pool of threads

2004-02-02 A. Ghodsi aligh@imit.kth.se 31

31
Why Object Adapters? (2)
Client 1 Server
dsObject.calculate(); DsObject::calculate()
{
Client 2 ...
dsObject.calculate(); }

Security between the objects?


Sandboxing?
Share methods, separate data?

2004-02-02 A. Ghodsi aligh@imit.kth.se 32

32
Why Object Adapters? (2)
Client 1 Server
dsObject.calculate(); DsObject::calculate()
{
Client 2 ...
dsObject.calculate(); }

Lifespan policy:
Transient objects
Persistent Objects
Continues to exist even if activated/deactivated?

2004-02-02 A. Ghodsi aligh@imit.kth.se 33

33
Portable Object Adapter – PL meets
ORB!
POA is generic and CORBA object independent
and implements different activation policies

POA keeps pointers to skeletons*

An Object Identifier is associated with object.

A table called Active Object Map maps between


Object Identifers => Skeletons

2004-02-02 A. Ghodsi aligh@imit.kth.se 34

34
Portable Object Adapter
OBJ 1 OBJ 2 OBJ 3

skel1 skel2 skel3

POA1 (policy1) POA2(policy2)


Active Object Map Active Object Map

Invoke right OBJ2 -> skel2 Invoke the right OBJ3 -> skel3

OBJ1 -> skel1

skeleton skeleton

Server Demultiplexer
Dispatch requests POA1

to the right POA POA2

2004-02-02 A. Ghodsi aligh@imit.kth.se 35

35
Transient Object Illustration
Client
_dsd->student_operation()
Object Implementation

STUB: Object Reference Reply message


IDL:Institution/IT/DSD:1.0 ”IIOP v1.0”,”ripper”, 8765 ”OA5”, ”_DSD” Unique ID : ”13FABCDA”

return variables, out parameters

Active Object Maps


Stub OA4:
_InfoSec Object
Request message Skeleton
OA5: Adapter
Unique ID : ”13FABCDA” ”OA5”, ”_DSD”
_DSC
student_operation() + *par _DSD

ORB Core ORB Core

2004-02-02 A. Ghodsi aligh@imit.kth.se 36

36
Persistent Objects
A IOR to a Persistent Object always points
to the same object
Migration Transparency
Location Transparency

Ceases to exist only if the CORBA object is


logically destroyed
Might move
Might change IP, Port, Machine
Might change POA
etc

2004-02-02 A. Ghodsi aligh@imit.kth.se 37

37
Persistent Objects continued
Its life cycle is independent of the objects
I.e. its existence is independent of whether the
object is in the local address-space.
ORBs can automatically startup objects
implementing persistent CORBA objects

2004-02-02 A. Ghodsi aligh@imit.kth.se 38

38
How is this possible?
Implementation repository (IMR) is used
Keeps information about
Object Adapter
Startup Command
Current Server

2004-02-02 A. Ghodsi aligh@imit.kth.se 39

39
Persistent Objects Illustrated
Client
Implem. Repository Object Implementation
_dsd->student_operation()
IMR Table
Adapter Startup Address

ORB Core xOA_1 rsh x ”/bin/st” bored:131


yOA_2 /startup ir:1444
Reply message
OA5 rsh ripper /run ripper:313
Location Forward Unique ID : ”13FABCDA”

return variables, out parameters

ORB Core
Active Object Maps
Stub OA4:
_InfoSec
Request message
OA5:
Unique ID : ”13FABCDA” ”OA5”, ”_DSD”
_DSC Skeleton
student_operation() + par _DSD

STUB: Object Reference


IDL:KTH/imit/DSD:1.0 ”IIOP v1.0”,”IMR”,
”IIOP v1.0”,”ripper”,8765
313 ”OA5”, ”_DSD”
ORB Core
2004-02-02 A. Ghodsi aligh@imit.kth.se 40

40
Failure and replication (IOR cont)
Multiple locations in one reference. If an invocation fails, go to next location

Type Name Protocol1 Object1 Key


(Repository ID) Hostname1 & Port1 (Adapter1 & Object1 Name)

Protocol2 Object2 Key


Remote
”Reference toObject
an object
Hostname2 Port2 on
& Referencea server
(Adapter2 & Object2 Name)

*GIOP, address, port ex: ”IIOP v1.0”,”ripper.it.kth.se”, 8765

Repository ID ex: ”IDL:KTH/imit/DSD:1.0”

HOST1/PORT2/ADAPTER2/OBJECT2 ex: ripper1/1234/oa1/obj1


HOST2/PORT2/ADAPTER2/OBJECT2 ex: ripper2/3233/oa3/obj6

2004-02-02 A. Ghodsi aligh@imit.kth.se 41

41
Summary-1
CORBA is a standardization effort

Based on the the Distributed Object Model

Provides inter-operability

Uses proprietary interface language: IDL


All CORBA objects have an interface in IDL
Most of the services offered by CORBA have an
interface in IDL

2004-02-02 A. Ghodsi aligh@imit.kth.se 42

42
Summary-2
Provides both Dynamic and Static invocations
DII/DSI and STUBS/SKELETONS

Stubs/Skeletons talk to an ORB

The ORB uses a standardized protocol to exchange


Messages(Req/Resp), IORs (persistent/transient)

ORB uses a POA to implement different activation policies


Threading policy
Lifespan policy (Persistent vs. Transient Objects)
Security (sandboxing of object implementations)

2004-02-02 A. Ghodsi aligh@imit.kth.se 43

43
What did I miss?
A whole lot! ☺
CORBA facilities/services
Synchronization
Caching
Replication
Fault-tolerance
Security
Comparison of CORBA against
.NET
DCOM
Java RMI
etcetera
Please read chapter 9!
2004-02-02 A. Ghodsi aligh@imit.kth.se 44

44
The End

THANK YOU VERY MUCH!

2004-02-02 A. Ghodsi aligh@imit.kth.se 45

45

You might also like