D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99...

29
1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 © Wolfgang Emmerich, 1998/99 Lecture Overview Transparency OO MIddleware Resolving Language Heterogeneity Resolving Data Heterogeneity OMG/CORBA Genericity

Transcript of D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99...

Page 1: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

1© Wolf gang Emmerich, 1998/99

D50: Advances in Software EngineeringDistributed Objects

Wolfgang Emmerich

2© Wolf gang Emmerich, 1998/99

Lecture Overview

■ Transparency■ OO MIddleware■ Resolving Language Heterogeneity■ Resolving Data Heterogeneity■ OMG/CORBA■ Genericity

Page 2: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

3© Wolf gang Emmerich, 1998/99

Transparency

■ Users and application programmers perceivedistributed system as a whole rather than acollection of components

■ Transparency has multiple dimensions thatwere identified by ANSA [ANSA89] and in theISO ODP Standard [ISO92]

4© Wolf gang Emmerich, 1998/99

Access Transparency

LocationTransparency

ConcurrencyTransparency

Migration Transparency

Performance Transparency

Scalability Transparency

Replication Transparency

FailureTransparency

Transparency Dimensions

Page 3: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

5© Wolf gang Emmerich, 1998/99 Backup Slide

Access Transparency

■ Enables local and remote information objectsto be accessed using identical operations

■ Examples• File system operations in NFS• Navigation in the Web• SQL queries

6© Wolf gang Emmerich, 1998/99 Backup Slide

Location Transparency

■ Enables information objects to be accessedwithout knowledge of their location

■ Examples• Files in NFS• Pages in the Web• Tables in distributed databases

Page 4: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

7© Wolf gang Emmerich, 1998/99 Backup Slide

Concurrency Transparency

■ Enables several processes to operateconcurrently using shared informationobjects without interference between them

■ Examples• Automatic teller machine network• Database management system

8© Wolf gang Emmerich, 1998/99 Backup Slide

Replication Transparency

■ Facilitates use of multiple instances ofinformation objects to increase reliability andperformance without knowledge of thereplicas by users or application programs

■ Examples• Distributed DBMS• Mirroring Web pages.

Page 5: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

9© Wolf gang Emmerich, 1998/99 Backup Slide

Failure Transparency

■ Enables concealment of faults■ Allows users and applications to complete

tasks despite failure of other components.■ Example

• Database Management System

10© Wolf gang Emmerich, 1998/99 Backup Slide

Migration Transparency

■ Allows movement of information objectswithin system without affecting operations ofusers or application programs

■ Examples• NFS• Web Pages

Page 6: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

11© Wolf gang Emmerich, 1998/99 Backup Slide

Scaling Transparency

■ Allows the system and applications to expandin scale without changing system structure orapplication algorithms.

■ Examples• World-Wide-Web• Distributed Databases

12© Wolf gang Emmerich, 1998/99

Distribution Middleware Needed

Requirements for middleware:■ Component type definition

• Services offered by components• Component state• Relationships between components

■ Resolution of heterogeneity• Platforms• Programming languages• Networks

■ Support in achieving transparency

Page 7: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

13© Wolf gang Emmerich, 1998/99

What is Middleware?

■ Layered between Application and OS/Network■ Makes distribution transparent■ Resolves heterogeneity of

• Hardware• Operating Systems• Networks• Programming Languages

■ Provides development and run-timeenvironment for distributed systems.

14© Wolf gang Emmerich, 1998/99

Categories of Middleware

■ Message-Oriented Middleware• IBM MQSeries• DEC Message Queue• NCR TopEnd

■ Transaction-Processing Middleware• IBM CICS• BEA Tuxedo• Encina

■ Object-Oriented Middleware• OMG/CORBA• DCOM• Java/RMI

■ These are converging! We focus on OO.

Page 8: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

15© Wolf gang Emmerich, 1998/99

Physical

Application

Presentation

Session

Transport

Network

Data link

ISO/OSI Reference Model

16© Wolf gang Emmerich, 1998/99

Physical

Application

Presentation

Session

Transport

Network

Data link

Transport Layer

■ How are we going totransmit objectrequests betweenhosts?

■ Two facets in UNIXnetworks:• TCP and• UDP.

Page 9: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

17© Wolf gang Emmerich, 1998/99

ISO/OSI Session Layer

■ Which object runs onwhich machine?

■ Layering objectrequest on top oftransport

■ Activating objects■ Object Adapters and

RegistriesPhysical

Application

Presentation

Session

Transport

Network

Data link

18© Wolf gang Emmerich, 1998/99

Physical

Application

Presentation

Session

Transport

Network

Data link

ISO/OSI Presentation Layer

■ At application layer:complex data types &Object references

■ How to transmitcomplex values throughtransport layer?

■ Presentation layerissues:• Complex data structures

and• Heterogeneity.

Page 10: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

19© Wolf gang Emmerich, 1998/99

class Person {

private:

int dob;

char * name;

public:

char * marshal() {

char * msg;

msg=new char[strlen(name)+10];

sprintf(msg,”%d,%d,%s”, dob,

strlen(name),name);

return(msg);

};

};

Complex Data Structures

■ Marshalling:Disassemble datastructures intotransmittable form

■ Unmarshalling: Reassemble thecomplex data structure.

20© Wolf gang Emmerich, 1998/99

Type Safety

■ How can we make sure that• servers are able to perform operations requested

by clients?• actual parameters provided by clients match the

expected parameters of the server?• results provided by the server match the

expectations of client?■ Middleware acts as mediator between client

and server to ensure type safety.■ Achieved by interface definition in an agreed

language.

Page 11: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

21© Wolf gang Emmerich, 1998/99

InterfaceDefinition

Facilitating Type Safety

ServerClient

Request

Reply

22© Wolf gang Emmerich, 1998/99

Stubs

■ Creating code for marshalling andunmarshalling is tedious and error-prone.

■ Code can be generated fully automaticallyfrom interface definition.

■ Code is embedded in stubs for client andserver.

■ Client stub represents server for client,Server stub represents client for server.

■ Stubs achieve type safety.■ Stubs also perform synchronization.

Page 12: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

23© Wolf gang Emmerich, 1998/99

Local Call vs. Remote Request

Called

StubStub

Caller

Called

CallerCaller

Transport Layer (e.g. TCP or UDP)

24© Wolf gang Emmerich, 1998/99

Synchronization

■ Goal: achieve similar synchronization to localmethod invocation

■ Achieved by stubs:• Client stub sends request and waits until server

finishes• Server stub waits for requests and calls server

when request arrives

Page 13: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

25© Wolf gang Emmerich, 1998/99

Facilitating Access Transparency

■ Client stubs have the same operations asserver objects

■ Hence, clients can• make local call to client stub• or local call to server objectwithout changing the call.

■ Middleware can accelerate communication ifobjects are local by not using the stub.

26© Wolf gang Emmerich, 1998/99

Facilitating Location Transparency

■ Object identity■ Object references■ Client requests operation from server object

identified by object reference■ No information about physical location of

server necessary■ How to obtain object references?

Page 14: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

27© Wolf gang Emmerich, 1998/99

Motivation

■ Components of distributed systems arewritten in different programming languages

■ Programming languages may or may not havetheir own object model

■ Object models largely vary■ Differences need to be overcome in order to

facilitate integration

28© Wolf gang Emmerich, 1998/99

IDL

CommonObjectModel

Smalltalk

Cobol

Java

Ada-95C++

C

Resolving Language Heterogeneity

Page 15: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

29© Wolf gang Emmerich, 1998/99

Purpose of Common Object Model

■ Meta-model for middleware’s type system■ Defines meaning of e.g.

• object type• operation• attribute• request• exception• subtyping

■ Defined general enough for mappings to mostprogramming languages

30© Wolf gang Emmerich, 1998/99

Interface Definition Language

■ Language for expressing all concepts of themiddleware’s object model

■ Should be• programming-language independent• not computationally complete

■ Bindings to different programming languagesare needed

■ As an example: OMG object model andOMG/IDL

Page 16: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

31© Wolf gang Emmerich, 1998/99

Programming Language Bindings

■ Atomic data types / type constructors■ Constants■ Interfaces and multiple inheritance■ Object references■ Attribute accesses■ Operation execution requests■ Exception declaration / handling■ Modules■ Middleware interface invocations

32© Wolf gang Emmerich, 1998/99

Standardisation of Bindings

■ Facilitate portability with respect to:• Object requests• Object implementations• ORB interface invocations

■ Decrease learning curve of developers

Page 17: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

33© Wolf gang Emmerich, 1998/99

Data Heterogeneity

■ Hosts of client and server might use differentdata representation formats. E.g.:• Mainframes are big-endian• Unix servers & NT workstations are little-endians

little-endians

big-endians

memorysign

n+3 n+2 n+1 n

memorysign

n n+1 n+2 n+3

34© Wolf gang Emmerich, 1998/99

Data Heterogeneity (cont’d)

■ Different programming languages usedifferent data representations, e.g. Characterstring “abc” in Pascal or C++:

Pascal

C++

3memory a b c

amemory b c \0

Page 18: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

35© Wolf gang Emmerich, 1998/99

Motivation

■ Data representations have to be convertedbetween client and server

■ Conversion should be transparent toapplication developer

■ Generally achieved by middleware withinpresentation layer implementation

36© Wolf gang Emmerich, 1998/99

Approaches

■ Mappings between native representations• Standardized data representation, e.g.

– Sun’s external data representation (XDR)– OMG’s common data representation (CDR)

No transmission of the type definition• Transmission of values and their types using an

abstract syntax notation e.g– ASN.1

Page 19: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

37© Wolf gang Emmerich, 1998/99

Application Objects

CORBAfacilities

CORBAservices

DomainInterfaces

Object Request Broker

Object Management Architecture

38© Wolf gang Emmerich, 1998/99

One standardised interfaceOne interface per object operation

ORB-dependent interfaceOne interface per object adapter

DynamicInvocation

ClientStubs

ORBInterface

Implementation Skeletons

Client Object Implementation

ORB Core

ObjectAdapter

Components involved at run-time

Page 20: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

39© Wolf gang Emmerich, 1998/99

C++ Compiler, Linker

Server

Client.cc Server.cc

C++ Compiler, Linker

Client

Team.idl

included ingeneratesreads

IDL-Compiler

Teamcl.hhTeamcl.cc Teamsv.cc

Teamsv.hh

Generation of Stubs/Skeletons

40© Wolf gang Emmerich, 1998/99

Portable Object Adapter (POA)

■ Facilitate object implementation portabilitybetween different ORBs

■ Support light-weight transient objects■ Support persistent object identities (e.g. in

ODBMSs)■ Allow servants to implement multiple objects■ Support transparent object activation■ Extensible mechanism for activation policies■ Multiple POAs in one server

Page 21: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

41© Wolf gang Emmerich, 1998/99

Abstract POA Model

Client

ORB?

POA

Server

42© Wolf gang Emmerich, 1998/99

Generic Applications

Example: Object BrowserGeneric applicationsuse componentswhose types are not(yet) known.

Person

Name:

Age:

Wolfgang Emmerich

31

Page 22: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

43© Wolf gang Emmerich, 1998/99

DynamicInvocation

ClientStubs

ORBInterface

Implementation Skeletons

Client Object Implementation

ORB Core

ObjectAdapter

Static vs. Dynamic Invocation

■ Example: OMG/CORBA

44© Wolf gang Emmerich, 1998/99

Static Invocation

■ Advantages:• Requests are simple to define.• Availability of operations checked by

programming language compiler.• Requests can be implemented fairly efficiently.

■ Disadvantages:• Generic applications cannot be build.• Recompilation required after operation interface

modification.

Page 23: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

45© Wolf gang Emmerich, 1998/99

Dynamic Invocation

■ Interface to create operation executionrequests dynamically.

■ Requests are objects.■ Attributes for operation name, parameters

and results.■ Operations to

• change operation parameters,• issue the request and• obtain the request results.

46© Wolf gang Emmerich, 1998/99

Creation of Requests

interface Object {

ORBstatus create_request (

in Context ctx, // operation context

in Identifier operation,// operation to exec

in NVList arg_list, // args of operation

inout NamedValue result,// operation result

out Request request // new request object

in Flags req_flags // request flags

);

...

};

Page 24: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

47© Wolf gang Emmerich, 1998/99

invoke()

Client Request Server

Op()

Synchronous Request

48© Wolf gang Emmerich, 1998/99

Dynamic Invocation

■ Advantages:• Components can be built without having the

interfaces they use,• Higher degree of concurrency through deferred

synchronous execution.• Components can react to changes of interfaces.

■ Disadvantages:• Less efficient,• More complicated to use and• Not type safe!

Page 25: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

49© Wolf gang Emmerich, 1998/99

Interface Repository

■ Makes type information of interfaces availableat run-time.

■ Enables development of generic applications.■ Achieves type-safe dynamic invocations.■ Supports construction of interface browser.■ Used by Middleware itself.

50© Wolf gang Emmerich, 1998/99

module BankMgmt {

};

ModuleDef

BankMgmt

InterfaceDef

Requester

interface Requester;

InterfaceDef

TellerCtrl

interface TellerCtrl {

};

TypedefDef

ATMList

typedef sequence<ATM> ATMList;

ExceptionDef

Invalid

exception Invalid {};

AttributeDef

ATMs

attribute ATMList ATMs;

OperationDef

accept void accept( in Requester req, in short amount);

Abstract Syntax Trees (ASTs)

■ Interface repository persistently stores ASTsof IDL modules, interfaces, types, operationsetc.

Page 26: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

51© Wolf gang Emmerich, 1998/99

AST Node Types

Contained

IRObject

Container

ModuleDefInterfaceDefOperationDef

ExceptionDef

TypedefDef AttributeDef

ConstantDef

52© Wolf gang Emmerich, 1998/99

Container (node with children)

interface Container : IRObject { Contained lookup(in ScopedName search_name); sequence<Contained> contents( in DefinitionKind limit_type, in boolean exclude_inherited);

sequence<Contained> lookup_name( in Identifier search_name, in long levels_to_search, in DefinitionKind limit_type, in boolean exclude_inherited); ...};

Page 27: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

53© Wolf gang Emmerich, 1998/99

Contained (child)

interface Contained : IRObject {

attribute Identifier name;

attribute RepositoryId id;

attribute VersionSpec version;

readonly attribute Container defined_in;

struct Description {

DefinitionKind kind;

any value;

};

Description describe();

...

};

54© Wolf gang Emmerich, 1998/99

Interface Definition

interface InterfaceDef : Container,Contained {

attribute sequence<InterfaceDef> base_interfaces;

boolean is_a(in RepositoryId interface_id);

struct FullInterfaceDescription {

Identifier name;

RepositoryId id;

RepositoryId defined_in;

RepositoryIdSequence base_interfaces;

sequence<OperationDescription> operations;

sequence<AttributeDescription> attributes;

...

};

FullInterfaceDescription describe_interface();

};

Page 28: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

55© Wolf gang Emmerich, 1998/99

Locating Interface Definitions

Alternatives:■ Any interface inherits the operation

InterfaceDef get_interface() from Object.■ Associative search using lookup_name.■ Navigation through the interface repository

using contents and defined_in attributes.

56© Wolf gang Emmerich, 1998/99

Person

Name:

Age:

Wolfgang Emmerich

31

Example: Object Browser

■ Use interface repository to find out aboutobject types at run-time

■ Use dynamic invocation interface to obtainattribute values

Page 29: D50: Advances in Software Engineering Distributed Objects17.pdf · 1 © Wolfgang Emmerich, 1998/99 D50: Advances in Software Engineering Distributed Objects Wolfgang Emmerich 2 ©

57© Wolf gang Emmerich, 1998/99

o:Objecti:Interface

Def

r1:Request

r2:Request

i=get_interface()

name()

r1=create_request()

describe_interface()

invoke()

r2=create_request()

invoke()

Sequence Diagram

58© Wolf gang Emmerich, 1998/99

Summary

■ Transparency■ OO MIddleware■ Resolving Language Heterogeneity■ Resolving Data Heterogeneity■ OMG/CORBA■ Genericity