Common Object Request
      Broker Architecture
                                             Ali Ghodsi
                  ...
Goal of lecture

    Go a bit more into depth on the core
    architecture of CORBA

    Less breadth
         Read van St...
Reading suggestions
       Tanenbaum & van Steen
             CORBA
                Section 2.3 page page 85-98
          ...
Outlook
     General Overview
             General Information
             Applications
     Quick Architectural Overview...
General CORBA Information
        Distributed Object Model (more later)
        It is a middleware
             Difference...
Real World Applications?
    Support ”dinosaurs”
         Companies have invested years of development in
         project...
Outlook
    General Overview
    Quick Architectural Overview
         OOP with Distribution Transparency
         CORBA o...
CORBA builds on the DOM
    Provides a nice model

         Encapsulation

         Inheritance

         Polymorphism



...
Exploiting Encapsulation
    Encapsulation enables:
         Distribution Transparency
             Have stubs and skeleto...
Goal 1: Distribution Transparency
    Encapsulation: black-box principle
         Has an interface
         Implementation...
Distribution Transparency
                        Missing parts:
               Client   • Marshalling                    ...
Goal 2: Inter-operability
         Use a language with standardized syntax to
         define the interface
         Gener...
Overview

                                             operation()
               Client                         args + re...
Outlook
    General Overview
    Architecture Overview
    Interface Definition Language (IDL)
         Types
         Exa...
Interface Definition Language
        Builds on OOP principle of encapsulation
             Clear boundary between impleme...
IDL’s Type System
        Two levels:
             Interfaces for CORBA objects!
                One interface per CORBA o...
Examples
DSLABS.IDL:
typedef string GroupMembers[4];

interface DS_project {
     long register_project(in long groupId, i...
IDL language mappings
    OMG defines mappings to different languages
         C, C++, Java, Smalltalk, COBOL, Ada, Lisp, ...
Outlook
    General Overview
    Architecture Overview
    Interface Definition Language (IDL)
    ORB
         DII (and D...
Compile time vs Runtime?

    What if interfaces change?
         Recompile everything? Unfeasable
         Dynamic interf...
Dynamic Invocation Interface (DII)
        Generic run-time invocation

             No compile-time knowledge of CORBA
  ...
Dynamic Invocation Interface (DII) cont.
        In essence:
             Search and fetch an IDL from an Interface
      ...
Complete picture

                                                  operation()
                    Client                ...
Object References
        Remote object references
             Enable clients to invoke CORBA objects

        Three inca...
Inter-operable Object References (IOR)


              Type Name                Protocol
                 ”Reference toObj...
ORB Interface

                                                  operation()
             Client                          ...
ORB Interface
    Standard interface (defined in IDL)
         All ORBs implement this interface


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

         res...
Portable Object Adapter (POA)

                                                  operation()
             Client          ...
Why Object Adapters?
             Client 1                                 Server
dsObject.calculate();                   ...
Why Object Adapters? (2)
             Client 1                                   Server
dsObject.calculate();             ...
Why Object Adapters? (2)
             Client 1                                 Server
dsObject.calculate();               ...
Why Object Adapters? (2)
             Client 1                                       Server
dsObject.calculate();         ...
Portable Object Adapter – PL meets
ORB!
    POA is generic and CORBA object independent
    and implements different activ...
Portable Object Adapter
      OBJ 1       OBJ 2                                                 OBJ 3

      skel1       s...
Transient Object Illustration
                  Client
      _dsd->student_operation()
                                   ...
Persistent Objects
        A IOR to a Persistent Object always points
        to the same object
             Migration Tr...
Persistent Objects continued
    Its life cycle is independent of the objects
         I.e. its existence is independent o...
How is this possible?
    Implementation repository (IMR) is used
    Keeps information about
         Object Adapter
    ...
Persistent Objects Illustrated
           Client
                                          Implem. Repository             ...
Failure and replication (IOR cont)
   Multiple locations in one reference. If an invocation fails, go to next location

  ...
Summary-1
        CORBA is a standardization effort

        Based on the the Distributed Object Model

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

        Stubs/Skele...
What did I miss?
        A whole lot! ☺
          CORBA facilities/services
             Synchronization
             Cach...
The End



             THANK YOU VERY MUCH!




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




                 ...
Upcoming SlideShare
Loading in...5
×

CORBA

2,268

Published on

COMMON OBJECT REQUEST BROKER ARCHITECTURE

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,268
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
169
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

CORBA

  1. 1. Common Object Request Broker Architecture Ali Ghodsi aligh@imit.kth.se 2004-02-02 A. Ghodsi aligh@imit.kth.se 1 1
  2. 2. 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
  3. 3. 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
  4. 4. 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
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. CORBA builds on the DOM Provides a nice model Encapsulation Inheritance Polymorphism 2004-02-02 A. Ghodsi aligh@imit.kth.se 8 8
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. Inter-operable Object References (IOR) Type Name Protocol ”Reference toObject ReferenceObject Key Name) Remote an object on a server (Repository ID) Hostname & Port (Adapter & Object *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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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
  40. 40. 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”, 8765 ”IIOP v1.0”,”ripper”, 313 ”OA5”, ”_DSD” ORB Core 2004-02-02 A. Ghodsi aligh@imit.kth.se 40 40
  41. 41. 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 Object Port2 on a server to an object (Adapter2 ”Reference Hostname2 & Reference & 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
  42. 42. 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
  43. 43. 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
  44. 44. 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
  45. 45. The End THANK YOU VERY MUCH! 2004-02-02 A. Ghodsi aligh@imit.kth.se 45 45

×