Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

30
Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction

Transcript of Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Page 1: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 1 © Ingeniørhøjskolen i Århus

Objektorienteret Middleware (OOMI)

CORBA Introduction

Page 2: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 2 © Ingeniørhøjskolen i Århus

Outline

• CORBA (part one)• Introduction & Background

• Architecture

• Session & Presentation layer

• GIOP / IIOP / CDR• CORBA Interface Definition Language – IDL

• Language mappings

• CORBA development steps

Page 3: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 3 © Ingeniørhøjskolen i Århus

Who is the OMG?• OMG: Object Management Group

• http://www.omg.org • Non-profit organization in the US, representatives in United

Kingdom, Germany, Japan, India, and Australia• Founded April 1989• More than 800 members• Dedicated to creating and popularizing object-oriented industry

standards for application integration, e.g.• CORBA 1.0 (1995) –> CORBA 3.1• UML 1.1 (1997) -> 2.3 (2010)• DDS 1.0 (2003) -> DDS 1.3 (2010)• Many others (http://www.omg.org/technology/documents/spec_catalog.htm)

Page 4: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 4 © Ingeniørhøjskolen i Århus

Goal of CORBA• CORBA: Common Object Request Broker Architecture

• Support distributed and heterogeneous object request in a way transparent to users and application programmers

• “King” of OO-Middleware

• Facilitate the integration of new components with legacy components (COBOL, C, ADA, C++, C#, Delphi, Python)

• Open standard that can be used free of charge

• Based on wide industry consensus • But not much Microsoft support

Page 5: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 5 © Ingeniørhøjskolen i Århus

CORBA Problems

• Problem with CORBA• Considered too complex by many• Open standards -> cluttered solutions• No Microsoft Support • Is CORBA dead?

Page 6: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 6 © Ingeniørhøjskolen i Århus

The Specifications

• CORBA is a collection of specifications• http://www.omg.org/technology/documents/corba_spec_catalog.htm

• Common Object Request Broker Architecture (CORBA/IIOP) (3.1)• CORBA Component Model (4.0)• Light Weight CCM• CORBA/e (replaces Minimum CORBA)• Real-Time CORBA (Dynamic/Static Scheduling)• Families of specifications:

• CORBAservices Specifications • CORBAfacilities Specifications • OMG Domain Specifications • IDL / Language Mapping Specifications

• Many others• Realted to UML

• UML Profile for CORBA (1.0)

Page 7: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 7 © Ingeniørhøjskolen i Århus

CORBA History

• CORBA 1.0 (1991): IDL, C mapping• CORBA 1.1 (1992): BOA• CORBA 1.2 (1993): minor updates• CORBA 2.0 (1996): DSI, GIOP, IIOP, C++, SmallTalk mappings• CORBA 2.1 (1997) : Secure IIOP / SSL, COBOL, ADA mappings• CORBA 2.2 (1998): POA, Java mapping• CORBA 2.3 (1999): Objects by Value• CORBA 2.4 (2000) : INS & Interop services• CORBA 2.5 (2001) : Real-time CORBA• CORBA 2.6 (2001) : Common Security• CORBA 3.0 (2002): CCM, Minimum CORBA• CORBA 3.1 (2008): Several changes

Page 8: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 8 © Ingeniørhøjskolen i Århus

CORBA version Support

• Suns Java IDL: 2.3.1 (in part)• Java

• OmniORB: 2.6• C++, Python

• Progress ORBIX: 2.6 http://web.progress.com/orbix/supported_platforms.html

• Java, C++• Progress ORBACUS 2.6 http://web.progress.com/orbacus/supported_platforms.html

• Java, C++• Borland Visibroker

• Delphi, Java, .NET, C++

Page 9: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 9 © Ingeniørhøjskolen i Århus

ApplicationObjects

CORBAFacilities

CORBA Services(mandatory)

DomainInterfaces

Object Management Architecture (OMA)

Object Request Broker

Page 10: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 10 © Ingeniørhøjskolen i Århus

CORBA Architecture1• Many different vendors and ORB types• Many of which do not interoperate• Must check specification compliance• OrbBacus from IONA produces both C++ and Java• Sun J2SE SDK has only Java-based ORB• C++ ORB from IONA will work with SUN ORB as specified• Many others

• MicoORB, Middcor, TAO, openORB, VisiBroker• OmniORB• OrbExpress: FPGA hardware ORB!

Page 11: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 11 © Ingeniørhøjskolen i Århus

One standardised interface

One interface per object operation

ORB-dependent interfaceOne interface per object adapter

DynamicInvocation

ClientStubs

ORBInterface

Implementation Skeletons

Client Object Implementation

ORB Core

ObjectAdapter

CORBA Architecture 2

Page 12: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 12 © Ingeniørhøjskolen i Århus

CORBA 2.0

Applications

GIOP ESIOP

IIOP DOETalk ........ DCE-CIOP ........

Mandatory: provides "out of the box" interoperability

Interoperability Protocols

EnvironmentSpecific ..

IIOP: Internet Inter-ORB Protocol is the primary CORBA transport protocol

Page 13: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 13 © Ingeniørhøjskolen i Århus

General Inter-ORB Protocol (GIOP)

• Handles the session & presentation layer• Defines seven message primitives:

• Request, Reply, Locate Request, Locate Reply, Cancel request, Close Connection, Message Error

• More simple than JRMP for Java RMI

• Internet Inter-ORB Protocol (IIOP)

• Maps GIOP to TCP/IP• Provides operations to open and close TCP/IP connections• Is required from ORBs for CORBA compliance• But intra vendor ORB com is not restricted to this

More on the IIOP later in the course

Page 14: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 14 © Ingeniørhøjskolen i Århus

Common Data Representation (CDR)

• Defined as part of GIOP• Presentation layer implementation to support

heterogeneity• Mapping of IDL data types to transport byte stream• Encodings of

• primitive types

• constructed types

• interoperable object references

Page 15: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 15 © Ingeniørhøjskolen i Århus

Recap - motivation for an IDL

• IDL: Interface Definition Language • Components of distributed systems are written in

different programming languages• Programming languages may or may not have their

own object model• Object models largely vary• Differences need to be overcome in order to facilitate

integration

Page 16: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 16 © Ingeniørhøjskolen i Århus

Heterogeneous OO Network

CORBAC++

ClientApp.3

CORBAC#

ClientApp.2

CORBAJavaClientApp.1

TCP/IPNetwork

CORBACobol

DatabaseServer

DB

“Object Wrapping

of nonOO application”

Different ORB’s from different vendors, on different operating systems – and written in different languages = Heterogenity

Page 17: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 17 © Ingeniørhøjskolen i Århus

PL6

PL2

PL5

PL1

PL4

PL3 PL6

PL2

PL5

PL1

PL4

PL3IDL

CORBA IDL & Mappings

Avoid multiple mappings

Page 18: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 18 © Ingeniørhøjskolen i Århus

IDLCommon

ObjectModel

SmalltalkSmalltalk

CobolCobol

JavaJava

Ada-95Ada-95C++C++

CC

CORBA Programming Language Bindings

.NET.NETJaneva / Middcor (C#)Janeva / Middcor (C#)

Win32 DelphiWin32 Delphi

Page 19: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 19 © Ingeniørhøjskolen i Århus

Interface Definition Language (IDL)

• Language for expressing all concepts of the middleware’s object model

• Should be• programming-language independent

• not computationally complete

• Bindings to different programming languages are needed • language bindings are specified by CORBA

The IDL is very comprehensive – please read and experiment with it

Page 20: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 20 © Ingeniørhøjskolen i Århus

Example UML to IDL mapping

Player

-name:string-Number:int

+book()

Team

-name:string

+bookGoalies()

plays in

1 11..16

+transfer(p:Player)

Club

-noOfMembers:int-location:Address

has1

*

uses

Organization

#name:string

coaches 1..*

1..*

Trainer

-name:string1 1..*

+train()works for

Page 21: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 21 © Ingeniørhøjskolen i Århus

Constructed types

CORBA Object Model: Types

typedef struct Address {

string street;

string postcode;

string city;

};

typedef sequence<Address> AddressList;

interface Team { ... };

Atomic types

Object type

Page 22: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 22 © Ingeniørhøjskolen i Århus

CORBA Object Model: Modules

module Soccer { typedef struct Address { string street; string postcode; string city; };};module People { typedef struct Address { string flat_number; string street; string postcode; string city; string country; };};

Modules =namespaces

Soccer::Address

People::Address

Page 23: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 23 © Ingeniørhøjskolen i Århus

CORBA Object Model: Attributes

interface Player;

typedef sequence<Player> PlayerList;

interface Trainer;

typedef sequence<Trainer> TrainerList;

interface Team {

readonly attribute string name;

attribute TrainerList coached_by;

attribute Club belongs_to;

attribute PlayerList players;

...

};Attribute type Attribute name

changeable

Clients cannotchange value

Page 24: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 24 © Ingeniørhøjskolen i Århus

CORBA Object Model: Operations

interface Team {

...

void bookGoalies(in Date d);

string print();

};

Parameter list

Parameter kind

Parameter type

Parameter nameOperation nameused in requests

Return types

Page 25: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 25 © Ingeniørhøjskolen i Århus

CORBA Object Model: Exceptions• Generic Exceptions (e.g. network down, invalid object

reference, out of memory)• Type-specific Exceptions (e.g. PlayerBooked)

exception PlayerBooked{sequence<Date> free;}; interface Team { void bookGoalies(in Date d) raises(PlayerBooked); };

exception PlayerBooked{sequence<Date> free;}; interface Team { void bookGoalies(in Date d) raises(PlayerBooked); };

Exception data

Operations declareexceptions they raise

Exception name

Page 26: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 26 © Ingeniørhøjskolen i Århus

CORBA Object Model: Subtypes

interface Organization { readonly attribute string name; };interface Club : Organization { exception NotInClub{}; readonly attribute short noOfMembers; readonly attribute Address location; attribute TeamList teams; attribute TrainerList trainers; void transfer(in Player p) raises NotInClub; };

interface Organization { readonly attribute string name; };interface Club : Organization { exception NotInClub{}; readonly attribute short noOfMembers; readonly attribute Address location; attribute TeamList teams; attribute TrainerList trainers; void transfer(in Player p) raises NotInClub; };

Inherited by Club

Supertype

Implicit supertype: Object

This has only been a minimal presentation of the IDL

Page 27: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 27 © Ingeniørhøjskolen i Århus

Legal Values in CORBA (Types)

Page 28: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 28 © Ingeniørhøjskolen i Århus

InterfaceDefinition

Design

Server StubGeneration

Client StubGeneration

ServerCoding

ClientCoding

ServerRegistration

Development Steps – CORBA vs Java RMI & Web services

SOAP: WSDLSOAP: WSDLJava2WSDLJava2WSDL

WSDL2JAVAWSDL2JAVA

AXISSOAPAXISSOAP

RMI: rmicRMI: rmic

RMI: JAVARMI: JAVA

J2SE JDKJ2SE JDK

Start with Server Interface Coding: JAVA

Start with Server Interface Coding: JAVA

rmiregistryrmiregistry

CORBACORBA

CORBA: IDLCORBA: IDL

CORBA: IDLCORBA: IDL

ORBORB

RMI: JAVA interfaceRMI: JAVA interface

C++, Java …C++, Java …

C++, Java …C++, Java …

Page 29: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 29 © Ingeniørhøjskolen i Århus

C++ Compiler, Linker

Server

Client.ccClient.cc Server.ccServer.cc

C++ Compiler, LinkerC++ Compiler, Linker

Client

Team.idlTeam.idl

included ingeneratesreads

IDL-Compiler

Teamcl.hh

Teamcl.cc Teamsv.cc

Teamsv.hh

CORBA Client and Server Implementation

Next we will look into a simple CORBA programming example

Page 30: Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.

Slide 30 © Ingeniørhøjskolen i Århus

Læringsmål Alignment

Når kurset er færdigt forventes den studerende at kunne:• Definere, beskrive og sammenligne forskellige typer af

objektorienterede middleware frameworks til apparater og computere, med primær fokus på CORBA og sekundært ICE teknologierne, herunder fordele og ulemper forbundet med de forskellige teknologier

• Definere og beskrive principper omkring transparens og heterogenitet i relation til middlewareteknologier

• Definere og beskrive gængse teorier, metoder og retningslinier indenfor det objektorienterede middleware paradigme og anvende disse til at designe effektive distribuerede systemer

• Designe og konstruere et distribueret system der gør brug af CORBA og ICE teknologierne med tilhørende værktøjssupport

I kan nu definere og beskrive

Grundlæggende CORBAprincipper

I kan nu definere og beskrive

Grundlæggende CORBAprincipper

Stubbe, Proxy, IDL,Retningslinier, transp., hetero.

IDL Compiler, referencer

Stubbe, Proxy, IDL,Retningslinier, transp., hetero.

IDL Compiler, referencer

Grundlæggende forståelse For hvad der skal til af CORBA

Teknologier, og værktøjer

Grundlæggende forståelse For hvad der skal til af CORBA

Teknologier, og værktøjer