Slide 1 Objektorienteret Netværkskommunikation CORBA Introduction.
Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.
-
Upload
lambert-hancock -
Category
Documents
-
view
213 -
download
1
Transcript of Slide 1 © Ingeniørhøjskolen i Århus Objektorienteret Middleware (OOMI) CORBA Introduction.
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
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)
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
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?
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)
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
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++
Slide 9 © Ingeniørhøjskolen i Århus
ApplicationObjects
CORBAFacilities
CORBA Services(mandatory)
DomainInterfaces
Object Management Architecture (OMA)
Object Request Broker
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!
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Slide 27 © Ingeniørhøjskolen i Århus
Legal Values in CORBA (Types)
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 …
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
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