Title: Common Object Request Broker Architecture
 1Common Object Request Broker Architecture 
- Ali Ghodsi 
- aligh_at_imit.kth.se
2Goal of lecture
- Go a bit more into depth on the core architecture 
 of CORBA
- Less breadth 
- Read van Steens book
3Reading 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/ 
4Outlook
- 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 
5General 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
6Real 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
7Outlook
- General Overview 
- Quick Architectural Overview 
- OOP with Distribution Transparency 
- CORBA overview 
- Interface Definition Language (IDL) 
- Types 
- Examples 
- Mappings 
- ORB 
- Conclusions
8CORBA builds on the DOM
- Provides a nice model 
- Encapsulation 
- Inheritance 
- Polymorphism 
9Exploiting 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) 
10Goal 1 Distribution Transparency
- Encapsulation black-box principle 
- Has an interface 
- Implementation details 
-  hidden
11Distribution Transparency
Client  MathBox obj  new MathBoxCL() Integer 
result  obj.add(10,20) 
Server Implementation int add(int x, int y)  
return xy 
MathBoxCL (SKELETON) int invoke(msg msg)  int 
x, y xmsg.Unmarshal(INT) ymsg.Unmarshal(INT)
 resserverImpl.add(x,y) Msg msgnew 
Msg() msg.marshal(res) SendRespMsg(HOST, IP, 
msg) 
MathBoxCL (PROXY) int add(int x, int y)  
Msg msgnew Msg() msg.Marshal(x) msg.Marshal(y
) SendReqMsg(HOST,IP,msg)  
 12Goal 2 Inter-operability
- Use a language with standardized syntax to define 
 the interface
- Generate the stub and the skeleton 
- Programming Language Independent
MathBoxCL (SKELETON) int invoke(Msg msg)  int 
x, y msgGetMsg() xmsg.Unmarshal(INT) ymsg
.Unmarshal(INT) resserverImpl.add(x,y) Msg 
msgnew Msg() msg.marshal(res) SendRespMsg(HOS
T, IP, msg) 
MathBoxCL (STUB) int add(int x, int y)  
Msg msgnew Msg() msg.Marshal(x) msg.Marshal(y
) SendReqMsg(HOST,IP,msg)  
 13Overview 
 14Outlook
- General Overview 
- Architecture Overview 
- Interface Definition Language (IDL) 
- Types 
- Example 
- Language Mappings 
- ORB 
- Conclusions 
15Interface 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
16IDLs 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
17Examples
- DSLABS.IDL 
- typedef string GroupMembers4 
- 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)
18IDL 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 
19Outlook
- General Overview 
- Architecture Overview 
- Interface Definition Language (IDL) 
- ORB 
- DII (and DSI) 
- ORB interface 
- Object References 
- POA 
- Persistent and Transient Objects 
- Conclusions 
20Compile 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 
21Dynamic 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 
22Dynamic 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)
23Complete picture 
 24Object 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. 
25Inter-operable Object References (IOR)
Reference to an object on a server 
 26ORB Interface
operation()
Client
Object Implementation
args  return value
ORB Interface 
 27ORB 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
28How 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 IORs in a naming service
29Portable Object Adapter (POA)
operation()
Client
Object Implementation
args  return value
Object Adapter
Network
ORB Core ORB Core 
 30Why Object Adapters?
Client 1 dsObject.calculate()
Server DsObjectcalculate()  ... 
Client 2 dsObject.calculate()
- Several clients call the same object, what to do? 
- Demultiplex requests 
31Why Object Adapters? (2)
Client 1 dsObject.calculate()
Server DsObjectcalculate()  ... 
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 
32Why Object Adapters? (2)
Client 1 dsObject.calculate()
Server DsObjectcalculate()  ... 
Client 2 dsObject.calculate()
- Security between the objects? 
- Sandboxing? 
- Share methods, separate data? 
33Why Object Adapters? (2)
Client 1 dsObject.calculate()
Server DsObjectcalculate()  ... 
Client 2 dsObject.calculate()
- Lifespan policy 
- Transient objects 
- Persistent Objects 
- Continues to exist even if activated/deactivated?
34Portable 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 gt Skeletons
35Portable Object Adapter 
OBJ 3
OBJ 1
OBJ 2
skel3
skel1
skel2
POA2(policy2) Invoke the right skeleton
POA1 (policy1) Invoke right skeleton
Active Object Map OBJ3 -gt skel3
Active Object Map OBJ2 -gt skel2 OBJ1 -gt skel1
Server Demultiplexer Dispatch requests to the 
right POA
POA1 POA2 
 36Transient Object Illustration
Client _dsd-gtstudent_operation() 
Object Implementation
Stub
Skeleton
Object Adapter
ORB Core
ORB Core 
 37Persistent 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
38Persistent 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
39How is this possible?
- Implementation repository (IMR) is used 
- Keeps information about 
- Object Adapter 
- Startup Command 
- Current Server 
40Persistent Objects Illustrated
Client _dsd-gtstudent_operation() 
Object Implementation
Implem. Repository
 IMR Table 
ORB Core 
 Stub
ORB Core 
Skeleton
ORB Core 
 41Failure and replication (IOR cont)
Multiple locations in one reference. If an 
invocation fails, go to next location
Protocol1 Hostname1  Port1
Remote Object Reference
Reference to an object on a server
Protocol2 Hostname2  Port2
GIOP, address, port ex IIOP v1.0,ripper.it.kt
h.se, 8765
Repository ID ex IDLKTH/imit/DSD1.0 HOST1/
PORT2/ADAPTER2/OBJECT2 ex ripper1/1234/oa1/obj1 
HOST2/PORT2/ADAPTER2/OBJECT2 ex 
ripper2/3233/oa3/obj6  
 42Summary-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
43Summary-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)
44What 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!
45The End