SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
© Peter R. Egli 2015
1/27
Rev. 1.90
CORBA indigoo.com
Peter R. Egli
INDIGOO.COM
OVERVIEW OF CORBA, OMG'S OBJECT
TECHNOLOGY FOR DISTRIBUTED APPLICATIONS
CORBA
COMMON OBJECT
REQUEST BROKER ARCHITECTURE
© Peter R. Egli 2015
2/27
Rev. 1.90
CORBA indigoo.com
Contents
1. What is CORBA?
2. CORBA Elements
3. The CORBA IDL
4. Server Programming Models - How to Implement the Server
5. COS – CORBA Object Services
6. DII – Dynamic Invocation Interface
7. ORB - Object Request Broker
8. Pros and cons of CORBA
© Peter R. Egli 2015
3/27
Rev. 1.90
CORBA indigoo.com
1. What is CORBA?
CORBA: Common Object Request Broker Architecture.
CORBA is a distributed object technology.
 Objects call operations (methods) on other objects, either locally or on a remote objects.
 CORBA provides interoperability between vendors and languages (e.g. objects developed in
one programming language like C++ may call operations on objects developed in another
language like Java).
ORB 1
Client
Object
Stub
Server
Object
Skel.
ORB 2
Client
Object
Stub
Server
Object
Skel.
Inter-ORB communication uses the
GIOP (General Inter-ORB Protocol)
© Peter R. Egli 2015
4/27
Rev. 1.90
CORBA indigoo.com
2. CORBA Elements
ORB:
The Object Request Broker dispatches operation calls to the right server object.
Stub:
The stub is a component that connects the client object to the ORB.
Skeleton:
The skeleton is a server-side component that, like the client stub, connects the server object to
the ORB.
GIOP / IIOP:
GIOP: General Inter ORB Protocol.
IIOP: Internet Inter ORB Protocol.
Communication between ORBs uses a standard protocol. GIOP is a general interoperability
protocol while IIOP, a variant of GIOP, is used in TCP/IP based networks.
© Peter R. Egli 2015
5/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (1/11)
IDL (Interface Description Language) defines an object interface in an abstract and
implementation neutral way.
The IDL of an object represents an interface contract. This separates interface definition from
the interface implementation.
The IDL compiler generates stub / skeleton code for specific languages (=language mapping or
language binding).
Language mappings exist for a range of languages (Java, C++, Python, Ruby, COBOL etc.).
E.g. Java:
idlj.exe -fall -td ../HelloServer/src ../../Hello.idl
E.g. omniORB:
omniidl.exe -C. -bcxx ....Hello.idl
IDL compiler
(e.g. idlj.exe)
Hello.idl CodeCode
Stub /
Skeleton
Code
Language and
platform independent
interface description Target language / platform
© Peter R. Egli 2015
6/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (2/11)
The syntax of IDL inherited much from the C/C++ programming language.
Namespace:
Keyword module defines a namespace or scope (scoping for avoiding naming conflicts).
module can be omitted (the interface then is in the global IDL namespace).
Example:
//IDL
module HelloApp
{
interface Hello
{
string sayHello();
oneway void shutdown();
};
};
The fully qualified name of the interface is HelloApp::Hello (note the scoping operator ‚::‘).
Reopening modules:
Modules can appear multiple times in IDL-files.
//IDL
module HelloApp
{
interface Hello {...};
...
interface Hello {...};
};
© Peter R. Egli 2015
7/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (3/11)
Main elements of an interface:
Operations:
 Similar to operations (methods) in classes.
 Arguments have classifiers (in, inout, out) for specifying the direction of the
argument passing.
Attributes:
 Similar to attributes in classes.
 The IDL compiler generates setter and getter functions for each attribute except when
it is declared readonly.
Example:
//IDL
module BankSimple {
typedef float CashAmount; //type definition
interface Account; //forward declaration
interface bank {...};
interface Account {
readonly attribute string name;
readonly attribute CashAmount balance;
void deposit (in CashAmount amount);
void withdraw (in CashAmount amount);
};
};
© Peter R. Egli 2015
8/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (4/11)
IDL exceptions:
There are 2 types of exceptions:
a. System exceptions defined by CORBA (may be thrown at any time).
b. User defined exceptions (operations may throw multiple exceptions).
Example:
//IDL
module BankSimple {
typedef float CashAmount; //type definition required so it can be used as operation argument
interface Account {
exception InsufficientFunds {
string reason;
};
exception AccountBlocked {
string reason;
};
void withdraw(in CashAmount amount)
raises(InsufficientFunds, AccountBlocked);
...
};
};
IDL includes:
The #include statement allows importing other IDL files:
// IDL
#include <BaseInterface.idl>
...
© Peter R. Egli 2015
9/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (5/11)
IDL operation invocation semantics:
IDL supports 2 operation invocation semantics:
A. Synchronous:
In synchronous operation calls, the caller is blocked until the operation terminates and has
returned.
Synchronous operations correspond to operation calls on objects.
B. Oneway:
In oneway operation invocations, the client is not blocked during the invocation but may
continue with other work (asynchronous operation).
E.g. oneway operations may be used to send logging information to a log server where it is not
necessary to wait for the operation to complete.
N.B.: In oneway operations, there is no feedback to the client if the operation succeeded or
failed.
//IDL
module BankSimple
{ ...
interface Account {
oneway void notice(in string text);
...
};
};
© Peter R. Egli 2015
10/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (6/11)
Passing context information in operations:
Contexts allow mapping a set of identifiers to a set of string values. In the code that the IDL
compiler generates, the context is passed like an ordinary argument.
//IDL
module BankSimple
{
...
interface Account {
void deposit(in CashAmount amount)
context (“sys_time”, “sys_location”);
...
};
};
Generated code:
public interface AccountOperations
{
void withdraw (float amount, org.omg.CORBA.Context $context);
}
© Peter R. Egli 2015
11/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (7/11)
IDL interface inheritance:
Interfaces may inherit all operations and attributes of super-interfaces.
Multiple inheritance is possible.
// IDL
module BankSimple {
interface Account {...};
interface CheckingAccount : Account {...};
interface SavingsAccount : Account {...};
interface PremiumAccount :
CheckingAccount, SavingsAccount {
...
};
};
IDL Object interface type:
Object is the „mother of all interfaces“ (user defined interfaces implicitly inherit from
Object).
Example interface Object operations:
Object::_create_request(...): Creation of requests using DII (Dynamic Invocation Interface).
Object::_duplicate(...): Duplicate object references.
Object::_narrow(...): Convert an object to a more specific type (kind of a dynamic typecast).
Object::_is_a(...): Check whether an object may be narrowed to the specified type.
© Peter R. Egli 2015
12/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (8/11)
IDL forward declarations:
Similar to C++, IDL allows forward declarations.
Forward declarations are required when interfaces reference each other.
// IDL
module BankSimple {
interface Account; // Forward declaration of Account
interface Bank {
Account create_account (in string name);
Account find_account (in string name);
};
// Full definition of Account.
interface Account {
...
};
Constants in IDL:
Like other languages, IDL allows defining constants.
module BankSimple {
interface Bank {
const long MaxAccounts = 10000;
const float Factor = (10.0 - 6.5) * 3.91;
...
};
};
© Peter R. Egli 2015
13/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (9/11)
Standard IDL data types (1/3):
A. Basic types:
IDL defines the following basic types.
short, unsigned short, long, float, double, char, boolean, octet, any (=arbitrary IDL type)
B. Complex types:
IDL complex types are enumerations and structure types.
enum Currency {pound, dollar, yen, franc};
struct CustomerDetails {
string name;
short age;
};
C. Union:
Unions allow defining the type of a type member based on an argument.
// IDL
struct DateStructure {
short Day;
short Month;
short Year;
};
union Date switch (short) {
case 1: string stringFormat;
case 2: long digitalFormat; //if argument short=1
default: DateStructure structFormat; //defines the default format
};
© Peter R. Egli 2015
14/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (10/11)
Standard IDL data types (2/3):
D. String:
IDL supports bounded and unbounded strings.
//IDL
interface Account {
// A bounded string with maximum length 10.
attribute string<10> sortCode;
// An unbounded string.
readonly attribute string name;
};
E. Sequence:
A sequence is similar to a one-dimensional array. Again there are bounded and unbounded
sequences. A sequence must be defined as a type before being used as an argument in an
operation or attribute.
// IDL
module BankSimple {
struct LimitedAccounts {
string bankSortCode<10>;
// Maximum length of sequence is 50.
sequence<Account, 50> accounts;
};
struct UnlimitedAccounts {
string bankSortCode<10>;
// No maximum length of sequence.
sequence<Account> accounts;
};
};
// IDL
module BankSimple {
typedef sequence<string> CustomerSeq;
interface Account {
void getCustomerList(out CustomerSeq names);
...
};
};
© Peter R. Egli 2015
15/27
Rev. 1.90
CORBA indigoo.com
3. The CORBA IDL (11/11)
Standard IDL data types (3/3):
F. Array:
Arrays are always fixed-size.
Arrays may be multi-dimensional.
Like sequences, arrays must be defined as typedef before being used as attributes or operation
arguments.
//IDL
struct CustomerAccountInfo {
string name;
Account accounts[3];
};
typedef Account AccountArray[100];
interface Bank {
readonly attribute AccountArray accounts;
};
G. Fixed:
Fixed point numbers are represented as a tuple {digit, scale}. Digit is the length of the number,
while scale defines the position of the decimal point.
module BankSimple {
typedef fixed<10,4> ExchangeRate; //range: (+/-)999999.9999
struct Rates {
ExchangeRate USRate;
ExchangeRate UKRate;
ExchangeRate IRRate;
};
};
© Peter R. Egli 2015
16/27
Rev. 1.90
CORBA indigoo.com
4. Server Programming Models - How to Implement the Server (1/5)
Over time, different ways of implementation emerged for the server side of the interface defined
in the IDL.
A. POA model versus ImplBase model (deprecated):
POA (Portable Object Adaptor) provides a standard interface for object implementations
(portability of servants across different vendors).
POA allows 1 servant instance to serve multiple object identities (POA dispatches request
to the right servant object).
ImplBase is less portable since it does not use a standard interface. The ImplBase model is
now deprecated in favor of POA.
Client ORB POA
Incoming request
Server application
Servants
Client ORB
Incoming request
Server application
Servants
© Peter R. Egli 2015
17/27
Rev. 1.90
CORBA indigoo.com
4. Server Programming Models - How to Implement the Server (2/5)
B. Inheritance versus delegation (tie):
In the inheritance model, a servant object implements either the ImplBase (deprecated) or POA
base class.
In the delegation model, the IDL interface is implemented with 2 classes:
a. IDL-generated tie-class that dispatches requests to a delegate
b. User-defined implementation class (delegate)
Combining POA/ImplBase with Inheritance/Delegation:
POA and ImplBase can be combined with inheritance and delegation.
Client ORB POA tie
Incoming request
Server application
Servants
Delegation
POA ImplBase
Inheritance POA-Inheritance Model ImplBase – Inheritance Model (deprecated)
Tie POA – Tie Model ImplBase – Tie Model (deprecated)
© Peter R. Egli 2015
18/27
Rev. 1.90
CORBA indigoo.com
4. Server Programming Models - How to Implement the Server (3/5)
ImplBase-Inheritance Model (deprecated):
The server (servant) class directly implements ImplBase class (_HelloImplBase in the example).
HelloOperations
Hello
_HelloImplBase
HelloImpl
(servant)
HelloServer
_HelloStub
(client stub)
HelloClient
Comm.
Servant = implementor of interface
© Peter R. Egli 2015
19/27
Rev. 1.90
CORBA indigoo.com
4. Server Programming Models - How to Implement the Server (4/5)
POA Inheritance Model:
The POA is the standard interface for connecting servants to the ORB.
HelloOperations
Hello
HelloPOA
(server skeleton)
HelloImpl
(servant)
HelloServer
_HelloStub
(client stub)
HelloClient
Comm.
Servant = implementor of interface
© Peter R. Egli 2015
20/27
Rev. 1.90
CORBA indigoo.com
4. Server Programming Models - How to Implement the Server (5/5)
POA/Tie Model:
The POA-Tie dispatches requests to servant delegates.
HelloOperations
Hello
HelloPOA
(server skeleton)
HelloImpl
(servant)
HelloServer
_HelloStub
(client stub)
HelloClient
Comm.
Servant = implementor of interface
HelloPOATie
(tie class)
© Peter R. Egli 2015
21/27
Rev. 1.90
CORBA indigoo.com
5. COS – CORBA Object Services
COS defines additional services that extend the CORBA 2.0 standard.
These service are, however, rarely used in practice.
Service Description
Life Cycle Service Support for the creation, copying, moving and deleting of objects.
Persistence Common interface for storing / retrieving objects from storage.
Naming Services Primary object location service, mapping of human readable names to object
references.
Event Service Event notification mechanism (event supplier and consumer objects).
Push (publish - subscribe) and pull (=polling) models.
Concurrency Control Resource locking, transaction locks.
Transaction Service Flat and nested transactions (sub-transactions).
Relationship Services Explicit definition of relationships of objects.
Query Service Mapping CORBA objects to relational DBs (a kind of ORM).
Licensing Service Controlled access to objects.
Property Service Association of properties to objects at runtime (properties are not part of IDL
interface).
Time Service Synchronization of clocks on different hosts.
Security Service Authentication and propagation of credentials, encryption.
© Peter R. Egli 2015
22/27
Rev. 1.90
CORBA indigoo.com
6. DII – Dynamic Invocation Interface
Static invocation:
In a static invocation, a call of an operation is performed through a client stub.
The client stub needs to be linked to the client (thus client stub must be available @ compile
time).
Dynamic invocation with DII:
The dynamic invocation does not need or use a client stub but dynamically (@ run-time)
constructs a client stub (=proxy object).
DII allows calling operations on objects that are not known @ client compile time.
From the server point of view, DII is identical to static invocation.
DII uses the IFR (InterFace Repository = central registry for interfaces) for locating the
right server object.
DSI – Dynamic Skeleton Interface:
DSI is the server-side equivalent of DII.
© Peter R. Egli 2015
23/27
Rev. 1.90
CORBA indigoo.com
7. ORB - Object Request Broker (1/4)
ORB functions:
A. Object location (providing client location transparency)
B. Data marshaling
C. Server side: Deliver requests to objects (=servants)
D. Client side: Return output values back to the client
ORB-Interoperability:
Interoperability between ORBs can be achieved with:
a. Employing ORBs that use the standard protocol GIOP (General Inter-ORB Protocol)
 IIOP (Internet Inter-ORB Protocol) is a variant of GIOP
 GIOP / IIOP uses interoperable object identifiers (IOR: Interoperable Object Reference)
b. Use of bridges between different ORB-protocols
 Bridges translate from one ORB-protocol to another
Client
Client machine
ORB
Server machine
ORB
Server
GIOP (IIOP)
Client
Client machine
ORB
Server machine
ORB
Server
GIOP (IIOP)
Inter-ORB bridge
Proprietary protocol
© Peter R. Egli 2015
24/27
Rev. 1.90
CORBA indigoo.com
7. ORB - Object Request Broker (2/4)
What is location transparency?
The location of remote objects (in which server they live) is hidden to the client application.
But: The location must be known to the client‘s ORB instance.
How to locate (find) remote objects:
1. Via direct ORB-connection:
ORB orb = ORB.init(„-ORBInitialPort 1234 -ORBInitialHost RemoteHost", null);
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc = new NameComponent("Hello", "");
NameComponent path[] = {nc};
Hello helloImpl = HelloHelper.narrow(ncRef.resolve(path));
 Argument in ORB.init() specifies remote host and port.
 Not true location transparency (remote host address must be passed into client application).
Client
Client machine
ORB
Server machine ORB
NameService
Servants
© Peter R. Egli 2015
25/27
Rev. 1.90
CORBA indigoo.com
7. ORB - Object Request Broker (3/4)
2. Use naming service:
ORB orb1 = ORB.init(„-ORBInitialPort 10001 -ORBInitialHost orbhost1.net", null);
// Initialize another ORB reference
ORB orb2 = ORB.init(„-ORBInitialPort 10002 -ORBInitialHost orbhost2.net", null);
// Get references to the Naming Services
org.omg.CORBA.Object nc1Ref = orb1.resolve_initial_references("NameService");
org.omg.CORBA.Object nc2Ref = orb2.resolve_initial_references("NameService");
// Narrow the Naming Service references to NamingContexts and use them
...
 The client still has to deal with multiple remote naming service objects (1 for each remote
ORB).
3. Use a central naming service as a bridge to other ORBs:
A central naming service allows looking up remote object
references.
Server machine ORB
NameService
Client
Client machine
ORB
Server machine ORB
NameService
Servants
Server machine ORB
NameService
Servants
© Peter R. Egli 2015
26/27
Rev. 1.90
CORBA indigoo.com
7. ORB - Object Request Broker (4/4)
4. Use IOR – Interoperable Object References:
IORs are stringified object references.
IORs contain information about the remote object in order to:
a. locate the remote object‘s home ORB (address, port)
b. construct a local stub from the string representation
The IOR can be obtained as follows:
ORB orb = ORB.init(args, null);
HelloImpl helloImpl = new HelloImpl();
helloImpl.setORB(orb);
orb.object_to_string(helloImpl)
An IOR looks like:
IOR:000000000000001749444c3a48656c6c6f4170702f48656c6c6f3a312e30000000000001000000000000006e000102000000000d3137322e32302
e39322e353100000ed000000019afabcb00000000024b3bc3e80000000800000000000000001400000000000002000000010000002000000000000100
0100000002050100010001002000010109000000010001010000000026000000020002
The IOR must be passed to client in some way (web page, web service etc.).
© Peter R. Egli 2015
27/27
Rev. 1.90
CORBA indigoo.com
8. Pros and cons of CORBA
Language independence (different mappings defined, e.g. C++, Java, Python, COBOL)
OS independence
Viable integration technology for heterogenous legacy systems
Strong data typing
Complex standard, difficult to implement for CORBA product vendors
Too complex to use compared to the features and services it provides
„Firewall-unfriendly“ because CORBA (IIOP) uses arbitrary TCP ports
Lack of security

Más contenido relacionado

La actualidad más candente

Client Centric Consistency Model
Client Centric Consistency ModelClient Centric Consistency Model
Client Centric Consistency ModelRajat Kumar
 
Attacking the spanning tree protocol
Attacking the spanning tree protocolAttacking the spanning tree protocol
Attacking the spanning tree protocolAsmadzakirah
 
Concurrency control
Concurrency controlConcurrency control
Concurrency controlvarsha singh
 
CORBA - Introduction and Details
CORBA - Introduction and DetailsCORBA - Introduction and Details
CORBA - Introduction and Detailsdgsdg2websd
 
PPP (Point to Point Protocol)
PPP (Point to Point Protocol)PPP (Point to Point Protocol)
PPP (Point to Point Protocol)Ali Jafar
 
Overview of SCTP (Stream Control Transmission Protocol)
Overview of SCTP (Stream Control Transmission Protocol)Overview of SCTP (Stream Control Transmission Protocol)
Overview of SCTP (Stream Control Transmission Protocol)Peter R. Egli
 
Design of a campus network
Design of a campus networkDesign of a campus network
Design of a campus networkAalap Tripathy
 
Web and http computer network
Web and http computer networkWeb and http computer network
Web and http computer networkAnil Pokhrel
 
Chapter 10 : Application layer
Chapter 10 : Application layerChapter 10 : Application layer
Chapter 10 : Application layerteknetir
 
SQL Complete Tutorial. All Topics Covered
SQL Complete Tutorial. All Topics CoveredSQL Complete Tutorial. All Topics Covered
SQL Complete Tutorial. All Topics CoveredDanish Mehraj
 
Distributed system architecture
Distributed system architectureDistributed system architecture
Distributed system architectureYisal Khan
 
TCP/IP Model
TCP/IP ModelTCP/IP Model
TCP/IP Modelfarhan516
 
Spanning tree protocol
Spanning tree protocolSpanning tree protocol
Spanning tree protocolMuuluu
 
Server system architecture
Server system architectureServer system architecture
Server system architectureFaiza Hafeez
 

La actualidad más candente (20)

Client Centric Consistency Model
Client Centric Consistency ModelClient Centric Consistency Model
Client Centric Consistency Model
 
Attacking the spanning tree protocol
Attacking the spanning tree protocolAttacking the spanning tree protocol
Attacking the spanning tree protocol
 
Concurrency control
Concurrency controlConcurrency control
Concurrency control
 
CORBA - Introduction and Details
CORBA - Introduction and DetailsCORBA - Introduction and Details
CORBA - Introduction and Details
 
PPP (Point to Point Protocol)
PPP (Point to Point Protocol)PPP (Point to Point Protocol)
PPP (Point to Point Protocol)
 
Overview of SCTP (Stream Control Transmission Protocol)
Overview of SCTP (Stream Control Transmission Protocol)Overview of SCTP (Stream Control Transmission Protocol)
Overview of SCTP (Stream Control Transmission Protocol)
 
Design of a campus network
Design of a campus networkDesign of a campus network
Design of a campus network
 
SQL
SQLSQL
SQL
 
Chapter 17 corba
Chapter 17 corbaChapter 17 corba
Chapter 17 corba
 
Web and http computer network
Web and http computer networkWeb and http computer network
Web and http computer network
 
Common Object Request Broker Architecture
Common Object Request Broker ArchitectureCommon Object Request Broker Architecture
Common Object Request Broker Architecture
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
Chapter 10 : Application layer
Chapter 10 : Application layerChapter 10 : Application layer
Chapter 10 : Application layer
 
Session Layer
Session LayerSession Layer
Session Layer
 
SQL Complete Tutorial. All Topics Covered
SQL Complete Tutorial. All Topics CoveredSQL Complete Tutorial. All Topics Covered
SQL Complete Tutorial. All Topics Covered
 
Distributed system architecture
Distributed system architectureDistributed system architecture
Distributed system architecture
 
TCP/IP Model
TCP/IP ModelTCP/IP Model
TCP/IP Model
 
Spanning tree protocol
Spanning tree protocolSpanning tree protocol
Spanning tree protocol
 
SQL Overview
SQL OverviewSQL Overview
SQL Overview
 
Server system architecture
Server system architectureServer system architecture
Server system architecture
 

Destacado (20)

Corba concepts & corba architecture
Corba concepts & corba architectureCorba concepts & corba architecture
Corba concepts & corba architecture
 
Corba
CorbaCorba
Corba
 
Distributed objects & components of corba
Distributed objects & components of corbaDistributed objects & components of corba
Distributed objects & components of corba
 
CORBA
CORBACORBA
CORBA
 
C O R B A Unit 4
C O R B A    Unit 4C O R B A    Unit 4
C O R B A Unit 4
 
Corba in power system
Corba in power systemCorba in power system
Corba in power system
 
Dcom vs. corba
Dcom vs. corbaDcom vs. corba
Dcom vs. corba
 
Component object model and
Component object model andComponent object model and
Component object model and
 
Client Server Architecture
Client Server ArchitectureClient Server Architecture
Client Server Architecture
 
19.cobra
19.cobra19.cobra
19.cobra
 
Diamonds
DiamondsDiamonds
Diamonds
 
An Overview of Distributed Debugging
An Overview of Distributed DebuggingAn Overview of Distributed Debugging
An Overview of Distributed Debugging
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented Architecture
 
Lecture4 corba
Lecture4   corbaLecture4   corba
Lecture4 corba
 
RMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable toolsRMI and CORBA Why both are valuable tools
RMI and CORBA Why both are valuable tools
 
Corba
CorbaCorba
Corba
 
Blood diamond
Blood diamondBlood diamond
Blood diamond
 
Ch12
Ch12Ch12
Ch12
 
CORBA Component Model
CORBA Component Model CORBA Component Model
CORBA Component Model
 
Corba model ppt
Corba model pptCorba model ppt
Corba model ppt
 

Similar a Overview of CORBA Architecture

CORBA Programming with TAOX11/C++11 tutorial
CORBA Programming with TAOX11/C++11 tutorialCORBA Programming with TAOX11/C++11 tutorial
CORBA Programming with TAOX11/C++11 tutorialRemedy IT
 
CORBA Programming with TAOX11/C++11 tutorial
CORBA Programming with TAOX11/C++11 tutorialCORBA Programming with TAOX11/C++11 tutorial
CORBA Programming with TAOX11/C++11 tutorialRemedy IT
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
 
Corba and-java
Corba and-javaCorba and-java
Corba and-javaafreen58
 
AMI4CCM_IDL2CPP
AMI4CCM_IDL2CPPAMI4CCM_IDL2CPP
AMI4CCM_IDL2CPPRemedy IT
 
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Maarten Balliauw
 
corbaintroductionandexample-140703005744-phpapp02.pdf
corbaintroductionandexample-140703005744-phpapp02.pdfcorbaintroductionandexample-140703005744-phpapp02.pdf
corbaintroductionandexample-140703005744-phpapp02.pdfBesAli1
 
CORBA Basic and Deployment of CORBA
CORBA Basic and Deployment of CORBACORBA Basic and Deployment of CORBA
CORBA Basic and Deployment of CORBAPriyanka Patil
 
Microsoft .NET Platform
Microsoft .NET PlatformMicrosoft .NET Platform
Microsoft .NET PlatformPeter R. Egli
 
MOOC_PRESENTATION_KOTLIN[1].pptx
MOOC_PRESENTATION_KOTLIN[1].pptxMOOC_PRESENTATION_KOTLIN[1].pptx
MOOC_PRESENTATION_KOTLIN[1].pptxkamalkantmaurya1
 
Modernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standardsModernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standardsRemedy IT
 
Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)Peter R. Egli
 

Similar a Overview of CORBA Architecture (20)

CORBA Programming with TAOX11/C++11 tutorial
CORBA Programming with TAOX11/C++11 tutorialCORBA Programming with TAOX11/C++11 tutorial
CORBA Programming with TAOX11/C++11 tutorial
 
CORBA Programming with TAOX11/C++11 tutorial
CORBA Programming with TAOX11/C++11 tutorialCORBA Programming with TAOX11/C++11 tutorial
CORBA Programming with TAOX11/C++11 tutorial
 
CORBA.ppt
CORBA.pptCORBA.ppt
CORBA.ppt
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
 
Corba and-java
Corba and-javaCorba and-java
Corba and-java
 
C Course Material0209
C Course Material0209C Course Material0209
C Course Material0209
 
AMI4CCM_IDL2CPP
AMI4CCM_IDL2CPPAMI4CCM_IDL2CPP
AMI4CCM_IDL2CPP
 
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
 
corbaintroductionandexample-140703005744-phpapp02.pdf
corbaintroductionandexample-140703005744-phpapp02.pdfcorbaintroductionandexample-140703005744-phpapp02.pdf
corbaintroductionandexample-140703005744-phpapp02.pdf
 
CORBA Basic and Deployment of CORBA
CORBA Basic and Deployment of CORBACORBA Basic and Deployment of CORBA
CORBA Basic and Deployment of CORBA
 
Microsoft .NET Platform
Microsoft .NET PlatformMicrosoft .NET Platform
Microsoft .NET Platform
 
CORBA IDL
CORBA IDLCORBA IDL
CORBA IDL
 
Chapter2
Chapter2Chapter2
Chapter2
 
COM
COMCOM
COM
 
Learning activity 3
Learning activity 3Learning activity 3
Learning activity 3
 
MOOC_PRESENTATION_KOTLIN[1].pptx
MOOC_PRESENTATION_KOTLIN[1].pptxMOOC_PRESENTATION_KOTLIN[1].pptx
MOOC_PRESENTATION_KOTLIN[1].pptx
 
moocs_ppt.pptx
moocs_ppt.pptxmoocs_ppt.pptx
moocs_ppt.pptx
 
Modernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standardsModernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standards
 
Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)Component Object Model (COM, DCOM, COM+)
Component Object Model (COM, DCOM, COM+)
 
1.Philosophy of .NET
1.Philosophy of .NET1.Philosophy of .NET
1.Philosophy of .NET
 

Más de Peter R. Egli

LPWAN Technologies for Internet of Things (IoT) and M2M Scenarios
LPWAN Technologies for Internet of Things (IoT) and M2M ScenariosLPWAN Technologies for Internet of Things (IoT) and M2M Scenarios
LPWAN Technologies for Internet of Things (IoT) and M2M ScenariosPeter R. Egli
 
Data Networking Concepts
Data Networking ConceptsData Networking Concepts
Data Networking ConceptsPeter R. Egli
 
Communication middleware
Communication middlewareCommunication middleware
Communication middlewarePeter R. Egli
 
Transaction Processing Monitors (TPM)
Transaction Processing Monitors (TPM)Transaction Processing Monitors (TPM)
Transaction Processing Monitors (TPM)Peter R. Egli
 
Business Process Model and Notation (BPMN)
Business Process Model and Notation (BPMN)Business Process Model and Notation (BPMN)
Business Process Model and Notation (BPMN)Peter R. Egli
 
Overview of Cloud Computing
Overview of Cloud ComputingOverview of Cloud Computing
Overview of Cloud ComputingPeter R. Egli
 
MQTT - MQ Telemetry Transport for Message Queueing
MQTT - MQ Telemetry Transport for Message QueueingMQTT - MQ Telemetry Transport for Message Queueing
MQTT - MQ Telemetry Transport for Message QueueingPeter R. Egli
 
Enterprise Application Integration Technologies
Enterprise Application Integration TechnologiesEnterprise Application Integration Technologies
Enterprise Application Integration TechnologiesPeter R. Egli
 
Overview of Microsoft .Net Remoting technology
Overview of Microsoft .Net Remoting technologyOverview of Microsoft .Net Remoting technology
Overview of Microsoft .Net Remoting technologyPeter R. Egli
 
Android Native Development Kit
Android Native Development KitAndroid Native Development Kit
Android Native Development KitPeter R. Egli
 
Overview of SCTP (Stream Control Transmission Protocol)
Overview of SCTP (Stream Control Transmission Protocol)Overview of SCTP (Stream Control Transmission Protocol)
Overview of SCTP (Stream Control Transmission Protocol)Peter R. Egli
 
Overview of Spanning Tree Protocol (STP & RSTP)
Overview of Spanning Tree Protocol (STP & RSTP)Overview of Spanning Tree Protocol (STP & RSTP)
Overview of Spanning Tree Protocol (STP & RSTP)Peter R. Egli
 
MSMQ - Microsoft Message Queueing
MSMQ - Microsoft Message QueueingMSMQ - Microsoft Message Queueing
MSMQ - Microsoft Message QueueingPeter R. Egli
 
JMS - Java Messaging Service
JMS - Java Messaging ServiceJMS - Java Messaging Service
JMS - Java Messaging ServicePeter R. Egli
 
MOM - Message Oriented Middleware
MOM - Message Oriented MiddlewareMOM - Message Oriented Middleware
MOM - Message Oriented MiddlewarePeter R. Egli
 
Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Peter R. Egli
 
Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Peter R. Egli
 
Remote Method Invocation (RMI)
Remote Method Invocation (RMI)Remote Method Invocation (RMI)
Remote Method Invocation (RMI)Peter R. Egli
 
JSON-RPC - JSON Remote Procedure Call
JSON-RPC - JSON Remote Procedure CallJSON-RPC - JSON Remote Procedure Call
JSON-RPC - JSON Remote Procedure CallPeter R. Egli
 

Más de Peter R. Egli (20)

LPWAN Technologies for Internet of Things (IoT) and M2M Scenarios
LPWAN Technologies for Internet of Things (IoT) and M2M ScenariosLPWAN Technologies for Internet of Things (IoT) and M2M Scenarios
LPWAN Technologies for Internet of Things (IoT) and M2M Scenarios
 
Data Networking Concepts
Data Networking ConceptsData Networking Concepts
Data Networking Concepts
 
Communication middleware
Communication middlewareCommunication middleware
Communication middleware
 
Transaction Processing Monitors (TPM)
Transaction Processing Monitors (TPM)Transaction Processing Monitors (TPM)
Transaction Processing Monitors (TPM)
 
Business Process Model and Notation (BPMN)
Business Process Model and Notation (BPMN)Business Process Model and Notation (BPMN)
Business Process Model and Notation (BPMN)
 
Overview of Cloud Computing
Overview of Cloud ComputingOverview of Cloud Computing
Overview of Cloud Computing
 
MQTT - MQ Telemetry Transport for Message Queueing
MQTT - MQ Telemetry Transport for Message QueueingMQTT - MQ Telemetry Transport for Message Queueing
MQTT - MQ Telemetry Transport for Message Queueing
 
Enterprise Application Integration Technologies
Enterprise Application Integration TechnologiesEnterprise Application Integration Technologies
Enterprise Application Integration Technologies
 
Overview of Microsoft .Net Remoting technology
Overview of Microsoft .Net Remoting technologyOverview of Microsoft .Net Remoting technology
Overview of Microsoft .Net Remoting technology
 
Android Native Development Kit
Android Native Development KitAndroid Native Development Kit
Android Native Development Kit
 
Overview of SCTP (Stream Control Transmission Protocol)
Overview of SCTP (Stream Control Transmission Protocol)Overview of SCTP (Stream Control Transmission Protocol)
Overview of SCTP (Stream Control Transmission Protocol)
 
Web services
Web servicesWeb services
Web services
 
Overview of Spanning Tree Protocol (STP & RSTP)
Overview of Spanning Tree Protocol (STP & RSTP)Overview of Spanning Tree Protocol (STP & RSTP)
Overview of Spanning Tree Protocol (STP & RSTP)
 
MSMQ - Microsoft Message Queueing
MSMQ - Microsoft Message QueueingMSMQ - Microsoft Message Queueing
MSMQ - Microsoft Message Queueing
 
JMS - Java Messaging Service
JMS - Java Messaging ServiceJMS - Java Messaging Service
JMS - Java Messaging Service
 
MOM - Message Oriented Middleware
MOM - Message Oriented MiddlewareMOM - Message Oriented Middleware
MOM - Message Oriented Middleware
 
Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)
Windows Communication Foundation (WCF)
 
Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)Java API for XML Web Services (JAX-WS)
Java API for XML Web Services (JAX-WS)
 
Remote Method Invocation (RMI)
Remote Method Invocation (RMI)Remote Method Invocation (RMI)
Remote Method Invocation (RMI)
 
JSON-RPC - JSON Remote Procedure Call
JSON-RPC - JSON Remote Procedure CallJSON-RPC - JSON Remote Procedure Call
JSON-RPC - JSON Remote Procedure Call
 

Último

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Último (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Overview of CORBA Architecture

  • 1. © Peter R. Egli 2015 1/27 Rev. 1.90 CORBA indigoo.com Peter R. Egli INDIGOO.COM OVERVIEW OF CORBA, OMG'S OBJECT TECHNOLOGY FOR DISTRIBUTED APPLICATIONS CORBA COMMON OBJECT REQUEST BROKER ARCHITECTURE
  • 2. © Peter R. Egli 2015 2/27 Rev. 1.90 CORBA indigoo.com Contents 1. What is CORBA? 2. CORBA Elements 3. The CORBA IDL 4. Server Programming Models - How to Implement the Server 5. COS – CORBA Object Services 6. DII – Dynamic Invocation Interface 7. ORB - Object Request Broker 8. Pros and cons of CORBA
  • 3. © Peter R. Egli 2015 3/27 Rev. 1.90 CORBA indigoo.com 1. What is CORBA? CORBA: Common Object Request Broker Architecture. CORBA is a distributed object technology.  Objects call operations (methods) on other objects, either locally or on a remote objects.  CORBA provides interoperability between vendors and languages (e.g. objects developed in one programming language like C++ may call operations on objects developed in another language like Java). ORB 1 Client Object Stub Server Object Skel. ORB 2 Client Object Stub Server Object Skel. Inter-ORB communication uses the GIOP (General Inter-ORB Protocol)
  • 4. © Peter R. Egli 2015 4/27 Rev. 1.90 CORBA indigoo.com 2. CORBA Elements ORB: The Object Request Broker dispatches operation calls to the right server object. Stub: The stub is a component that connects the client object to the ORB. Skeleton: The skeleton is a server-side component that, like the client stub, connects the server object to the ORB. GIOP / IIOP: GIOP: General Inter ORB Protocol. IIOP: Internet Inter ORB Protocol. Communication between ORBs uses a standard protocol. GIOP is a general interoperability protocol while IIOP, a variant of GIOP, is used in TCP/IP based networks.
  • 5. © Peter R. Egli 2015 5/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (1/11) IDL (Interface Description Language) defines an object interface in an abstract and implementation neutral way. The IDL of an object represents an interface contract. This separates interface definition from the interface implementation. The IDL compiler generates stub / skeleton code for specific languages (=language mapping or language binding). Language mappings exist for a range of languages (Java, C++, Python, Ruby, COBOL etc.). E.g. Java: idlj.exe -fall -td ../HelloServer/src ../../Hello.idl E.g. omniORB: omniidl.exe -C. -bcxx ....Hello.idl IDL compiler (e.g. idlj.exe) Hello.idl CodeCode Stub / Skeleton Code Language and platform independent interface description Target language / platform
  • 6. © Peter R. Egli 2015 6/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (2/11) The syntax of IDL inherited much from the C/C++ programming language. Namespace: Keyword module defines a namespace or scope (scoping for avoiding naming conflicts). module can be omitted (the interface then is in the global IDL namespace). Example: //IDL module HelloApp { interface Hello { string sayHello(); oneway void shutdown(); }; }; The fully qualified name of the interface is HelloApp::Hello (note the scoping operator ‚::‘). Reopening modules: Modules can appear multiple times in IDL-files. //IDL module HelloApp { interface Hello {...}; ... interface Hello {...}; };
  • 7. © Peter R. Egli 2015 7/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (3/11) Main elements of an interface: Operations:  Similar to operations (methods) in classes.  Arguments have classifiers (in, inout, out) for specifying the direction of the argument passing. Attributes:  Similar to attributes in classes.  The IDL compiler generates setter and getter functions for each attribute except when it is declared readonly. Example: //IDL module BankSimple { typedef float CashAmount; //type definition interface Account; //forward declaration interface bank {...}; interface Account { readonly attribute string name; readonly attribute CashAmount balance; void deposit (in CashAmount amount); void withdraw (in CashAmount amount); }; };
  • 8. © Peter R. Egli 2015 8/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (4/11) IDL exceptions: There are 2 types of exceptions: a. System exceptions defined by CORBA (may be thrown at any time). b. User defined exceptions (operations may throw multiple exceptions). Example: //IDL module BankSimple { typedef float CashAmount; //type definition required so it can be used as operation argument interface Account { exception InsufficientFunds { string reason; }; exception AccountBlocked { string reason; }; void withdraw(in CashAmount amount) raises(InsufficientFunds, AccountBlocked); ... }; }; IDL includes: The #include statement allows importing other IDL files: // IDL #include <BaseInterface.idl> ...
  • 9. © Peter R. Egli 2015 9/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (5/11) IDL operation invocation semantics: IDL supports 2 operation invocation semantics: A. Synchronous: In synchronous operation calls, the caller is blocked until the operation terminates and has returned. Synchronous operations correspond to operation calls on objects. B. Oneway: In oneway operation invocations, the client is not blocked during the invocation but may continue with other work (asynchronous operation). E.g. oneway operations may be used to send logging information to a log server where it is not necessary to wait for the operation to complete. N.B.: In oneway operations, there is no feedback to the client if the operation succeeded or failed. //IDL module BankSimple { ... interface Account { oneway void notice(in string text); ... }; };
  • 10. © Peter R. Egli 2015 10/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (6/11) Passing context information in operations: Contexts allow mapping a set of identifiers to a set of string values. In the code that the IDL compiler generates, the context is passed like an ordinary argument. //IDL module BankSimple { ... interface Account { void deposit(in CashAmount amount) context (“sys_time”, “sys_location”); ... }; }; Generated code: public interface AccountOperations { void withdraw (float amount, org.omg.CORBA.Context $context); }
  • 11. © Peter R. Egli 2015 11/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (7/11) IDL interface inheritance: Interfaces may inherit all operations and attributes of super-interfaces. Multiple inheritance is possible. // IDL module BankSimple { interface Account {...}; interface CheckingAccount : Account {...}; interface SavingsAccount : Account {...}; interface PremiumAccount : CheckingAccount, SavingsAccount { ... }; }; IDL Object interface type: Object is the „mother of all interfaces“ (user defined interfaces implicitly inherit from Object). Example interface Object operations: Object::_create_request(...): Creation of requests using DII (Dynamic Invocation Interface). Object::_duplicate(...): Duplicate object references. Object::_narrow(...): Convert an object to a more specific type (kind of a dynamic typecast). Object::_is_a(...): Check whether an object may be narrowed to the specified type.
  • 12. © Peter R. Egli 2015 12/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (8/11) IDL forward declarations: Similar to C++, IDL allows forward declarations. Forward declarations are required when interfaces reference each other. // IDL module BankSimple { interface Account; // Forward declaration of Account interface Bank { Account create_account (in string name); Account find_account (in string name); }; // Full definition of Account. interface Account { ... }; Constants in IDL: Like other languages, IDL allows defining constants. module BankSimple { interface Bank { const long MaxAccounts = 10000; const float Factor = (10.0 - 6.5) * 3.91; ... }; };
  • 13. © Peter R. Egli 2015 13/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (9/11) Standard IDL data types (1/3): A. Basic types: IDL defines the following basic types. short, unsigned short, long, float, double, char, boolean, octet, any (=arbitrary IDL type) B. Complex types: IDL complex types are enumerations and structure types. enum Currency {pound, dollar, yen, franc}; struct CustomerDetails { string name; short age; }; C. Union: Unions allow defining the type of a type member based on an argument. // IDL struct DateStructure { short Day; short Month; short Year; }; union Date switch (short) { case 1: string stringFormat; case 2: long digitalFormat; //if argument short=1 default: DateStructure structFormat; //defines the default format };
  • 14. © Peter R. Egli 2015 14/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (10/11) Standard IDL data types (2/3): D. String: IDL supports bounded and unbounded strings. //IDL interface Account { // A bounded string with maximum length 10. attribute string<10> sortCode; // An unbounded string. readonly attribute string name; }; E. Sequence: A sequence is similar to a one-dimensional array. Again there are bounded and unbounded sequences. A sequence must be defined as a type before being used as an argument in an operation or attribute. // IDL module BankSimple { struct LimitedAccounts { string bankSortCode<10>; // Maximum length of sequence is 50. sequence<Account, 50> accounts; }; struct UnlimitedAccounts { string bankSortCode<10>; // No maximum length of sequence. sequence<Account> accounts; }; }; // IDL module BankSimple { typedef sequence<string> CustomerSeq; interface Account { void getCustomerList(out CustomerSeq names); ... }; };
  • 15. © Peter R. Egli 2015 15/27 Rev. 1.90 CORBA indigoo.com 3. The CORBA IDL (11/11) Standard IDL data types (3/3): F. Array: Arrays are always fixed-size. Arrays may be multi-dimensional. Like sequences, arrays must be defined as typedef before being used as attributes or operation arguments. //IDL struct CustomerAccountInfo { string name; Account accounts[3]; }; typedef Account AccountArray[100]; interface Bank { readonly attribute AccountArray accounts; }; G. Fixed: Fixed point numbers are represented as a tuple {digit, scale}. Digit is the length of the number, while scale defines the position of the decimal point. module BankSimple { typedef fixed<10,4> ExchangeRate; //range: (+/-)999999.9999 struct Rates { ExchangeRate USRate; ExchangeRate UKRate; ExchangeRate IRRate; }; };
  • 16. © Peter R. Egli 2015 16/27 Rev. 1.90 CORBA indigoo.com 4. Server Programming Models - How to Implement the Server (1/5) Over time, different ways of implementation emerged for the server side of the interface defined in the IDL. A. POA model versus ImplBase model (deprecated): POA (Portable Object Adaptor) provides a standard interface for object implementations (portability of servants across different vendors). POA allows 1 servant instance to serve multiple object identities (POA dispatches request to the right servant object). ImplBase is less portable since it does not use a standard interface. The ImplBase model is now deprecated in favor of POA. Client ORB POA Incoming request Server application Servants Client ORB Incoming request Server application Servants
  • 17. © Peter R. Egli 2015 17/27 Rev. 1.90 CORBA indigoo.com 4. Server Programming Models - How to Implement the Server (2/5) B. Inheritance versus delegation (tie): In the inheritance model, a servant object implements either the ImplBase (deprecated) or POA base class. In the delegation model, the IDL interface is implemented with 2 classes: a. IDL-generated tie-class that dispatches requests to a delegate b. User-defined implementation class (delegate) Combining POA/ImplBase with Inheritance/Delegation: POA and ImplBase can be combined with inheritance and delegation. Client ORB POA tie Incoming request Server application Servants Delegation POA ImplBase Inheritance POA-Inheritance Model ImplBase – Inheritance Model (deprecated) Tie POA – Tie Model ImplBase – Tie Model (deprecated)
  • 18. © Peter R. Egli 2015 18/27 Rev. 1.90 CORBA indigoo.com 4. Server Programming Models - How to Implement the Server (3/5) ImplBase-Inheritance Model (deprecated): The server (servant) class directly implements ImplBase class (_HelloImplBase in the example). HelloOperations Hello _HelloImplBase HelloImpl (servant) HelloServer _HelloStub (client stub) HelloClient Comm. Servant = implementor of interface
  • 19. © Peter R. Egli 2015 19/27 Rev. 1.90 CORBA indigoo.com 4. Server Programming Models - How to Implement the Server (4/5) POA Inheritance Model: The POA is the standard interface for connecting servants to the ORB. HelloOperations Hello HelloPOA (server skeleton) HelloImpl (servant) HelloServer _HelloStub (client stub) HelloClient Comm. Servant = implementor of interface
  • 20. © Peter R. Egli 2015 20/27 Rev. 1.90 CORBA indigoo.com 4. Server Programming Models - How to Implement the Server (5/5) POA/Tie Model: The POA-Tie dispatches requests to servant delegates. HelloOperations Hello HelloPOA (server skeleton) HelloImpl (servant) HelloServer _HelloStub (client stub) HelloClient Comm. Servant = implementor of interface HelloPOATie (tie class)
  • 21. © Peter R. Egli 2015 21/27 Rev. 1.90 CORBA indigoo.com 5. COS – CORBA Object Services COS defines additional services that extend the CORBA 2.0 standard. These service are, however, rarely used in practice. Service Description Life Cycle Service Support for the creation, copying, moving and deleting of objects. Persistence Common interface for storing / retrieving objects from storage. Naming Services Primary object location service, mapping of human readable names to object references. Event Service Event notification mechanism (event supplier and consumer objects). Push (publish - subscribe) and pull (=polling) models. Concurrency Control Resource locking, transaction locks. Transaction Service Flat and nested transactions (sub-transactions). Relationship Services Explicit definition of relationships of objects. Query Service Mapping CORBA objects to relational DBs (a kind of ORM). Licensing Service Controlled access to objects. Property Service Association of properties to objects at runtime (properties are not part of IDL interface). Time Service Synchronization of clocks on different hosts. Security Service Authentication and propagation of credentials, encryption.
  • 22. © Peter R. Egli 2015 22/27 Rev. 1.90 CORBA indigoo.com 6. DII – Dynamic Invocation Interface Static invocation: In a static invocation, a call of an operation is performed through a client stub. The client stub needs to be linked to the client (thus client stub must be available @ compile time). Dynamic invocation with DII: The dynamic invocation does not need or use a client stub but dynamically (@ run-time) constructs a client stub (=proxy object). DII allows calling operations on objects that are not known @ client compile time. From the server point of view, DII is identical to static invocation. DII uses the IFR (InterFace Repository = central registry for interfaces) for locating the right server object. DSI – Dynamic Skeleton Interface: DSI is the server-side equivalent of DII.
  • 23. © Peter R. Egli 2015 23/27 Rev. 1.90 CORBA indigoo.com 7. ORB - Object Request Broker (1/4) ORB functions: A. Object location (providing client location transparency) B. Data marshaling C. Server side: Deliver requests to objects (=servants) D. Client side: Return output values back to the client ORB-Interoperability: Interoperability between ORBs can be achieved with: a. Employing ORBs that use the standard protocol GIOP (General Inter-ORB Protocol)  IIOP (Internet Inter-ORB Protocol) is a variant of GIOP  GIOP / IIOP uses interoperable object identifiers (IOR: Interoperable Object Reference) b. Use of bridges between different ORB-protocols  Bridges translate from one ORB-protocol to another Client Client machine ORB Server machine ORB Server GIOP (IIOP) Client Client machine ORB Server machine ORB Server GIOP (IIOP) Inter-ORB bridge Proprietary protocol
  • 24. © Peter R. Egli 2015 24/27 Rev. 1.90 CORBA indigoo.com 7. ORB - Object Request Broker (2/4) What is location transparency? The location of remote objects (in which server they live) is hidden to the client application. But: The location must be known to the client‘s ORB instance. How to locate (find) remote objects: 1. Via direct ORB-connection: ORB orb = ORB.init(„-ORBInitialPort 1234 -ORBInitialHost RemoteHost", null); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); NameComponent nc = new NameComponent("Hello", ""); NameComponent path[] = {nc}; Hello helloImpl = HelloHelper.narrow(ncRef.resolve(path));  Argument in ORB.init() specifies remote host and port.  Not true location transparency (remote host address must be passed into client application). Client Client machine ORB Server machine ORB NameService Servants
  • 25. © Peter R. Egli 2015 25/27 Rev. 1.90 CORBA indigoo.com 7. ORB - Object Request Broker (3/4) 2. Use naming service: ORB orb1 = ORB.init(„-ORBInitialPort 10001 -ORBInitialHost orbhost1.net", null); // Initialize another ORB reference ORB orb2 = ORB.init(„-ORBInitialPort 10002 -ORBInitialHost orbhost2.net", null); // Get references to the Naming Services org.omg.CORBA.Object nc1Ref = orb1.resolve_initial_references("NameService"); org.omg.CORBA.Object nc2Ref = orb2.resolve_initial_references("NameService"); // Narrow the Naming Service references to NamingContexts and use them ...  The client still has to deal with multiple remote naming service objects (1 for each remote ORB). 3. Use a central naming service as a bridge to other ORBs: A central naming service allows looking up remote object references. Server machine ORB NameService Client Client machine ORB Server machine ORB NameService Servants Server machine ORB NameService Servants
  • 26. © Peter R. Egli 2015 26/27 Rev. 1.90 CORBA indigoo.com 7. ORB - Object Request Broker (4/4) 4. Use IOR – Interoperable Object References: IORs are stringified object references. IORs contain information about the remote object in order to: a. locate the remote object‘s home ORB (address, port) b. construct a local stub from the string representation The IOR can be obtained as follows: ORB orb = ORB.init(args, null); HelloImpl helloImpl = new HelloImpl(); helloImpl.setORB(orb); orb.object_to_string(helloImpl) An IOR looks like: IOR:000000000000001749444c3a48656c6c6f4170702f48656c6c6f3a312e30000000000001000000000000006e000102000000000d3137322e32302 e39322e353100000ed000000019afabcb00000000024b3bc3e80000000800000000000000001400000000000002000000010000002000000000000100 0100000002050100010001002000010109000000010001010000000026000000020002 The IOR must be passed to client in some way (web page, web service etc.).
  • 27. © Peter R. Egli 2015 27/27 Rev. 1.90 CORBA indigoo.com 8. Pros and cons of CORBA Language independence (different mappings defined, e.g. C++, Java, Python, COBOL) OS independence Viable integration technology for heterogenous legacy systems Strong data typing Complex standard, difficult to implement for CORBA product vendors Too complex to use compared to the features and services it provides „Firewall-unfriendly“ because CORBA (IIOP) uses arbitrary TCP ports Lack of security