CSA week 2 CSA, week 2 1 CORBA Object Management Group (OMG) standaard beschrijving objecten interface definition language (IDL) (CORBA 1.x: 1991; CORBA 2.x:1995) CSA, week 2 2 CORBA Object Management Architecture gedistribueerde componenten locatie onafhankelijk interactie tussen componenten door interfaces interface verbergt implementatie CSA, week 2 3 CORBA Object CLIENT SIDE SERVER SIDE CLIENT APPLICATIE REQUEST OBJECT IMPLEMENTATIE RESULT RESULT REQUEST OBJECT REQUEST BROKER CSA, week 2 4 CORBA gedistribueerd object platform Client applicatie: Naam object Interface object Object request broker Lokaliseren object (location transparancy) Doorgeven request Teruggeven resultaat Onafhankelijk van platform en taal CSA, week 2 5 INTERFACE DEFINITION LANGUAGE (1) C++ JAVA ADA C++ JAVA ADA IDL IDL IDL IDL IDL CLIENT IDL SERVER OBJECT REQUEST BROKER CSA, week 2 6 INTERFACE DEFINITION LANGUAGE (2) Declaratief; geen implementatie details Language binding: IDL2JAVA CSA, week 2 7 OMG Architectuur APPLICATIE OBJECTEN CORBA FACILITIES BUSINESS OBJECTEN OBJECT REQUEST BROKER EVENT NAMING SECURITY CORBA SERVICES CSA, week 2 QUERY 8 CORBA begrippen Applicatie object: Willekeurig object in een applicatie dat d.m.v. CORBA beschikbaar is Service: Bevat objecten met een specifieke systeemfunctie; voor programmeurs (naamgeving, eventhandling, e.d.) Business object Objecten dat voor eindgebruikers betekenis heeft (klant, order, betaling, e.d.) CSA, week 2 9 Statische Invocatie CLIENT APPLICATIE OBJECT IMPLEMENTATIE (SERVANT) STUBS SKELETONS OBJECT REQUEST BROKER CSA, week 2 10 Stub Functie Stub (=letterlijk “stompje”): - biedt juiste interface voor gebruik CORBA-object (statische invocatie) - marshalling/demarshalling van parameters CSA, week 2 11 Object Request Broker Functie object request broker (= ORB) - stuurt methoden (inclusief parameters), die via stub worden geinvoceerd, door naar het echte CORBA-object Communicatie tussen ORB’s - Internet Inter ORB Protocol (= IIOP; maakt gebruik van TCP/IP) CSA, week 2 12 Het lokaliseren van een CORBA object Object Referentie - Elk CORBA object krijgt een uniek adres: Interoperable Object Reference (= IOR) Dit is enigszins vergelijkbaar met IP-adres - Het object kan gevonden worden op basis van dit adres CSA, week 2 13 Skeleton Functie Skeleton: - juiste methode aanroepen van (JAVA)implementatie van CORBA-object (Servant) - marshalling/demarshalling van parameters CSA, week 2 14 IDL DEFINITIE USER PRECOMPILE STUBS USES IMPLEMENT CLIENT COMPILE CLIENT CLASS SKELETONS EXTENDS IMPLEMENT SERVANTS COMPILE SERVANT CLASSES Stub en Skeleton Stub en Skeleton - worden tijdens (pre-)compile time gegenereerd vanuit IDL voor specifieke language mapping (JAVA) - Stub is een object, met zelfde interface als het CORBA-object - Skeleton is een klasse, servant is hiervan afgeleid CSA, week 2 16 CORBA implementaties CORBA is alleen standaard, geen code Implementaties (o.a.): Visibroker van Borland/Inprise JDK1.2 (Java2) CORBA kan worden toegepast met (o.a.) Java C++ Pascal CSA, week 2 17 Inleiding opdracht 2 Splitsing programma opdracht 1 in client en server “balletje in rechthoek”-server Request bevat gegevens balletje op de rand (coördinaten, richting, e.d.) met de opdracht om deze verder te bewegen Reply bevat gegevens balletje op de andere rand CSA, week 2 18 IDL script; practicum module client_server { struct CORBA_Ball { long x; long y; long dx; long dy; long color; long radius; boolean visible; }; interface CORBA_ballMover { CORBA_Ball roll(in CORBA_Ball ball); }; }; CSA, week 2 19 IDL script; voorbeeld module mod { interface Test { long check (in boolean b); }; }; CSA, week 2 20 Gegenereerde files met IDL2java CSA, week 2 21 Test.idl Geschreven door programmeur IDL script met interface Test IDL2JAVA _TestImplBase.java Test.java TestHelper.java Skeleton klasse: hier worden de skeleton methodes voor intern gebruik gedefinieerd Hierin staat de interface zoals die in het IDL script gedefinieerd is In deze abstracte klasse staan een aantal static help-functies, waaronder narrow extends Gegenereerd door IDL2JAVA implements TestServant.java In deze klasse worden de methode check uit interface Test gedefinieerd Het CORBA object is een instantie van deze klasse Geschreven door programmeur Klasse ORB ORB = Object Request Broker Client en server bevatten ieder een ORB object ORB objecten zorgen voor sturen requests en ontvangen replies m.b.v. IIOP protocol ORB object aanmaken en initialiseren met ORB.init(...); CSA, week 2 23 CORBA model functie-waarde en result parameters methode-aanroep met parameters CORBA-methodes, gedefinieerd door de programmeur Client Server skeleton methodes, gegenereerd vanuit IDLscript String_to_object CORBAobject new stub connect REQUEST met methodenaam, in-parameters init ORB ORB REPLY met functiewaarde, out-parameters CSA, week 2 24 init Server opdracht 2 (1) Skeleton klasse afkomstig van Idl2java Klasse voor servant wordt afgeleid van de skeleton klasse Server creëert een servant met new (eventueel met een naam; geen CORBA standaard) CSA, week 2 25 Server opdracht 2 (2) Meldt servant bij ORB aan met connect Met servant corresponderende CORBAobject krijgt een uniek adres: IOR CORBA object en daarmee de servant, is nu vanaf een client met deze IOR bereikbaar Server is in deze opdracht gegeven CSA, week 2 26 Smart Agent Smart Agent kan namen van objecten bevatten (primitieve nameserver) Tenminste 1 Smart Agent op elk lokaal netwerk Fault tolerant: Smart Agents kunnen elkaars taak overnemen Smart Agent kan na crash van een object overschakelen op ander object CSA, week 2 27 Client opdracht 2 (1) Moet stub verkrijgen voor het CORBAobject Drie mogelijkheden: IOR van server naar client doorgeven d.m.v. een file CORBA object een naam geven en object lokaliseren d.m.v. die naam Naming Server (week 3) CSA, week 2 28 Client opdracht 2 (2) Stub wordt in twee stappen gecreëerd: referentie verkrijgen op basis van IOR of naam (referentie is van klasse org.omg.CORBA.Object) referentie omzetten naar stub met methode narrow uit klasse XXXHelper CSA, week 2 29