Objekt-interaksjon. INF 5040 høst 2006

Like dokumenter
Objekt-interaksjon. Plan. INF 5040 høst 2005

Objekt-interaksjon i objektbasert mellomvare:

CORBA Objektmodell (Java RMI)

Objekt-interaksjon i objektbasert mellomvare:

CORBA & Java RMI & J2EE & CORBA CCM OMG & CORBA

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

CORBA Component Model (CCM)

Java RMI (Remote Method Invocation) Gruppe 9: Ivar Steien Rasmussen Tom Anders Dalseng Andreas Petlund

Transport - laget (ende-til-ende protokoller) Glidende vindu protokoll. Flyt kontroll. dataoverføringsfasen. Sender. Mottaker

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Gruppe 11. Frank Petter Larsen Vegard Dehlen

DCOM. 21. oktober Mai et al. Hva er egentlig en komponent?

Objekt-tjenere og deres implementasjon

Objekt-tjenere og deres implementasjon

Time-Independent Invocation(TII) and Interoperable Routing

Introduksjon til Distribuerte System (DS)

Utfordringer til mellomvare: Multimedia

Modeller av prosessering Implementasjon av tjenere

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Implementering av caching ved hjelp av Spring. Christian Vestøl

Web Services. Olav Lysne

RM-ODP og Multimedia middleware (M3W):

Utfordringer til mellomvare: Multimedia

Jini. Overblikk. Gruppe 1: Odd-Wiking Rahlff, Arnor Solberg og Finn Haukebøe

Naming og trading INF5040. Foreleser: Olav Lysne. Ifi/UiO 1

KTN1 - Design av forbindelsesorientert protokoll

Innføring i SOAP. Agenda

Jini. Gruppe 1 Martin Skarsaune Bjørn Arne Dybvik Cuong Huu Truong. Definisjon

Oppsummering og pensumkommentarer. INF5040 høst forelesere: Frank Eliassen, Olav Lysne. Innhold og mål

Oppsummering og pensumkommentarer. INF5040 høst forelesere: Frank Eliassen, Olav Lysne. Innhold og mål

Hva består Internett av?

Foreleser: Kjell Åge Bringsrud

Hentet fra Suns Totorial:

Programvarekomponenter og distribuerte system. INF 5040 høst foreleser: Frank Eliassen

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4190 Distribuerte systemer Onsdag 4. august 2004,

Replikering. Olav Lysne

Fakultet for informasjonsteknologi, Løsning på eksamen i TDT4190 Distribuerte systemer Torsdag 9. juni 2005,

Network Services Location Manager. Veiledning for nettverksadministratorer

Komponentarkitekturer. En historie om mellomvare

Generiske mekanismer i statisk typede programmeringsspråk

6\VWHPPRGHOOHUIRU GLVWULEXHUWHV\VWHP

OOT Seminar H-97 CORBA. Praktisk del

Distributed object architecture

Introduksjon til Distribuerte System (DS)

Komponentarkitekturer

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

Løsningsforslag Gruppeoppgaver, 28. april 2. mai. 1. Metningskontroll ( Congestion control ) og ressursallokering.

Anatomien til en kompilator - I

Fakultet for informasjonsteknologi, Kontinuasjonsløsning på SIF8037 Distribuerte systemer og ytelsesvurdering (Distribuerte systemer kun)

Introduksjon til Distribuerte System (DS)

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn

Operativsystemer og grensesnitt

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

Basert på en artikkel fra Microsoft propaganda November 1996

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

Test 2 OOP. - Prøveeksamen

2. HVA ER EN KOMPONENT?

Fakultet for informasjonsteknologi, Løsning på kontinuasjonseksamen i TDT4190 / SIF8042 Distribuerte systemer August 2005,

HØGSKOLEN I SØR-TRØNDELAG

Anatomien til en kompilator - I

Feilsøking i BO. Olav Syse, konsulent. Jan Terje Hansen, service manager. Be business intelligent

Presentasjon av: Erling Ringen Elvsrud Nils Fredrik Gjerull Håkon Torjus Bommen

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2

COM. Hva er COM? The Component Object Model. Microsoft sitt rammeverk for å lage og bruke komponenter

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2

Tråder og concurrency i Linux

Fleksibel støtte for tjenestekvalitet i mellomvare

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

TTM4175 Hva er kommunikasjonsteknologi?

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

Diverse eksamensgaver

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Lagene spiller sammen

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering

TTM4175 Hva er kommunikasjonsteknologi?

Computer Networks A. Tanenbaum

SQL Server guide til e-lector

Kapittel 4: Transportlaget

Generelt om operativsystemer

INF Notater. Veronika Heimsbakk 10. juni 2012

Forelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy

6105 Windows Server og datanett

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon

Simple Object Access Protocol

UNIVERSITETET I OSLO

Gjennomgang av kap Kommunikasjonsformer Typer av nettverk Adressering og routing Ytelse Protokoller

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

SAS IN A SOA WORLD MARIUS SOMMERSETH TEAM LEAD TECHNICAL ARCHITECTURE

P L A N I A 8 S Y S T E M K R A V PLANIA 8 SYSTEM KRAV. Plania 8 Systemkrav.docx av 8

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Kapittel 7: Mer om arv

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

J2EE. CMP Entity Beans, Transaksjoner, JSP

Transkript:

Objekt-interaksjon Foreleser: Frank Eliassen Frank Eliassen, SRL & Ifi/UiO 1 Plan Prinsipper for realisering av fjernmetodekall (RMI) Objekt-tjenere CORBA RMI Java RMI Fler-trådede objekt-tjenere Frank Eliassen, SRL & Ifi/UiO 2 1

Lagdeling av mellomvare Applikasjoner, tjenester RMI og RPC Mellomvare forespørsel-svar protokoller marshalling og ekstern datarepresentasjon UDP og TCP Frank Eliassen, SRL & Ifi/UiO 3 Plan Prinsipper for realisering av fjernmetodekall (RMI) Objekt-tjenere CORBA RMI Java RMI Fler-trådede objekt-tjenere Frank Eliassen, SRL & Ifi/UiO 4 2

Lagdeling av mellomvare Applikasjoner, tjenester RMI og RPC Mellomvare forespørsel-svar protokoller marshalling og ekstern datarepresentasjon UDP og TCP Frank Eliassen, SRL & Ifi/UiO 5 Klient-tjener kommunikasjon Forespørsel-Svar (FS) protokoller Basert på UDP eller TCP Klient forespørselsmelding Tjener DoOperation.. vent.. (fortsett) Meldingsstruktur svarmelding meldingstype forespørselid ROR metode argumenter getrequest velg objekt utfør metode sendreply Frank Eliassen, SRL & Ifi/UiO 6 3

Feilhandtering for FS protokoller over UDP (I) Protokollen kan utsettes for omission failure process crash failure meldingsrekkefølge ikke garantert Feil oppdages som timeout i primitivet DoOperation: tiltak avhenger av leveringsgarantiene som tilbys Frank Eliassen, SRL & Ifi/UiO 7 Feilhandtering for FS protokoller over UDP (II) Timeout DoOperation Send forespørsel-meldingen gjentatte ganger inntil svar foreligger, eller antar tjeneren har feilet (maks. antall retrans.) Duplikat forespørsel-meldinger inntreffer når forespørsel-meldinger sendes mer enn en gang kan føre til at operasjoner utføres mer enn en gang for samme forespørsel => må kunne filtrere ut duplikat-forespørsler (jfr. forespørselid) Tapte svar-meldinger tjeneren har allerede sendt svar-meldingen når den mottar en duplikat forespørselsmelding => må kanskje utføre operasjonen på nytt for å få tak i svaret OK for operasjoner som er idempotent Frank Eliassen, SRL & Ifi/UiO 8 4

Feilhandtering for FS protokoller over UDP (III) Logger (historier): benyttes av tjenere med operasjoner som ikke er idempotent inneholder svarmeldinger som allerede er sendt Ulempe med logger: lagerbehov dersom en klient kun kan gjøre et anrop av gangen til samme tjener, kan loggen begrenses i størrelse ved mottak av neste anrop fra samme klient, kan tjeneren slette siste svarmelding til denne klienten fra loggen Frank Eliassen, SRL & Ifi/UiO 9 FS protokoller over TCP UDP har begrenset pakkestørrelse => behov for multi-pakke-protokoller FS protokoller over TCP unngår dette problemet TCP sørger for pålitelig levering av meldinger Problem: mye overhead dersom forbindelse må opprettes ved hver forespørsel => behov for optimalisering (la forbindelsen stå) begrensning på maks antall samtidige TCP-forbindelser kan skape problem Dersom begrenset meldingsstørrelse kan UDP med fordel brukes enklere protokoll Frank Eliassen, SRL & Ifi/UiO 10 5

HTTP: en FS protokoll Brukes av web-browser klienter til å sende forespørsler til web-servere og motta svar Spesifiserer metodene, argumenter, og resultater samt regler for representasjon (marshalling) Ikke objekt-basert Fastsatt mengde med metoder (GET, PUT, POST, etc, etc) method URL or pathname HTTP version headers message body GET //www.dcs.qmw.ac.uk/index.html HTTP/ 1.1 HTTP version status code reason headers message body HTTP/1.1 200 OK resource data Frank Eliassen, SRL & Ifi/UiO 11 Lagdeling av mellomvare Applikasjoner, tjenester RMI og RPC Mellomvare forespørsel-svar protokoller marshalling og ekstern datarepresentasjon UDP og TCP Frank Eliassen, SRL & Ifi/UiO 12 6

Marshalling Ekstern datarepresentasjon marshalling avbilde datastrukturer til meldinger (sekvens av dataverdier) oversette sekvensen av dataverdier til en ekstern representasjon unmarshalling inverse av marshalling Ekstern datarepresentasjon en representasjon av dataene under oveføringen av meldingen Sun XDR (representasjon av mest brukte datatyper) ASN.1/BER (ISO standard, basert på type-tags, åpen) NDR (benyttes i DCE RPC) CDR (benyttes i CORBA RMI, binær layout for IDL typer) Java Object Serialization (JOS) XML (benyttes i SOAP) Frank Eliassen, SRL & Ifi/UiO 13 Marshalling Objekt-referanser Remote-object-reference (ROR) Identifikator for fjernt objekt som er gyldig i et distribuert system Må genereres på en måte som sikrer entydighet over tid og rom (en ROR kan ikke gjenbrukes) Eksempel: 32 bits 32 bits 32 bits 32 bits Internet address port number time object number interface of remote object Frank Eliassen, SRL & Ifi/UiO 14 7

Lagdeling av mellomvare Applikasjoner, tjenester RMI og RPC Mellomvare forespørsel-svar protokoller marshalling og ekstern datarepresentasjon UDP og TCP Frank Eliassen, SRL & Ifi/UiO 15 Klassifikasjon av FS protokoller Klassifikasjon etter (Spector, 1982): benyttes til å implementere ulike typer RMI (og RPC) Request (R) protokoll Kun Request-melding. Ingen svarmelding fra tjener. Ingen bekreftelse på at operasjonen er utført. Request-Reply (RR) protokoll Reply-meldingen bekrefter at Request-meldingen er utført Et nytt kall fra klienten bekrefter mottak av Reply-meldingen Request-Reply-Acknowledge (RRA) protokoll egen melding fra klient for å bekrefte mottak av Reply-melding tillater tap av Ack-melding Ack med gitt forespørselid bekrefter alle lavere forespørselid Frank Eliassen, SRL & Ifi/UiO 16 8

RMI forespørselsemantikk Påliteligheten til ulike RMI typer under partielle feilsituasjoner: Feilhandteringstiltak Retransmisjon av Request melding Dupliseringsfilter Utføre metoden på nytt eller sende Reply meldingen på nytt Nei (R) Kanskje RMI forespørselssemantikk Ja (RR) Nei Utfør metoden på nytt Ja (RR) Ja Send Reply meldingen på nytt Minst-en-gang Høyst-en-gang Frank Eliassen, SRL & Ifi/UiO 17 RMI forespørselsemantikk i CORBA og Java RMI i CORBA og Java har høyst en gang forespørselsemantikk/pålitelighet under partielle feilsituasjoner. kalles synkrone forespørsler (synchronous requests) Andre former for synkronisering gir annen feilsemantikk One-way operations: kanskje-semantikk Frank Eliassen, SRL & Ifi/UiO 18 9

Implementasjon av RMI Tre hovedoppgaver: Grensesnittprosessering Integrasjon av RMI mekanismen i et programmeringsspråk Grunnlaget for å realisere aksesstransparens Kommunikasjon meldingsutveksling (forespørsel/svar protokoll) Binding, lokalisering, og aktivisering Lokalisere en passe tjenerprosess som innkapsler fjernobjektet Aktivisering av objekt-implementasjon Grunnlaget for å realisere lokasjonstransparens Frank Eliassen, SRL & Ifi/UiO 19 RMI grensesnittprosessering Klient proxy Lokalt proxy objekt for hvert fjernobjekt en klient kan aksessere ( stand-in for fjernobjekt). Opprettes automatisk av mellomvaren. Klassen til proxy-objektet har samme grensesnitt som klassen til det fjerne objektet. Kan utføre typesjekking Utfører marshalling av forespørsel og unmarshalling av svar Sender forespørsel-melding til tjener Proxy-klassen genereres av stub-kompilator basert på IDL beskrivelser Frank Eliassen, SRL & Ifi/UiO 20 10

RMI grensesnittprosessering Tjener skeleton Et fjernobjekt som kan aksesseres via RMI, har et skeleton - objekt. Mottar forespørsler og omgjør de til lokale metodekall vha. en dispatcher som velger skeleton og metode basert på ROR informasjon og metodenavn Utfører unmarshalling av forespørsel og marshalling av svar Sender svarmeldinger tilbake til klient Skeleton-klassen genereres av stub-kompilator basert på IDL beskrivelser Frank Eliassen, SRL & Ifi/UiO 21 Proxy og skeleton i RMI objekt A klient proxy for B forespørsel svar tjener skeleton & dispatcher for B s klasse fjernobjekt B Klient ROR modul remote object table kommunikasjons Tjener ROR remote modul modul object table Frank Eliassen, SRL & Ifi/UiO 22 11

Generering av proxy og skeleton Design IDL definitions Precompile client code uses Stubs Skeletons Add server code Compile Compile client implementation server implementation Frank Eliassen, SRL & Ifi/UiO 23 RMI binding, lokalisering, og aktivisering Binding i RMI tilsvarer å avbilde et symbolsk objektnavn til ROR Utføres av en binder (navnetjeneste el.lign.) (tema for seinere forelesning: navngiving og trading) Lokalisering i RMI tilsvarer å avbilde en ROR til en kommunikasjonsidentifikator Aktivisering i RMI tilsvarer å opprette et aktivt objekt fra et tilsvarende passivt objekt (f.eks. på forespørsel). Utføres av en activator registrere passive objekt som er tilgjengelig for aktivisering aktivisere tjenerprosesser (og aktivisere fjernobjekt i dem) Frank Eliassen, SRL & Ifi/UiO 24 12

Metoder for lokalisering i RMI Lokalisering i RMI : tilsvarer å avbilde en ROR til en kommunikasjonsidentifikator. integrert i ROR Adressen kan ekstraheres direkte fra objekt-referansen lokaliseringstjeneste En navnetjeneste benyttes av klient proxy ved hvert anrop cache/broadcast Hver klient har cache av bindinger (ROR, komm.identifikator) Dersom ROR ikke finnes i cache, utføres broadcast med ROR Tjenere som har objektet svarer med komm.identifikator foroverpekere eller adressehint (til f.eks lokaliseringstjeneste) Benyttes ved objekt-migrering Kombinasjoner av de over Frank Eliassen, SRL & Ifi/UiO 25 Plan Prinsipper for realisering av fjernmetodekall (RMI) Objekt-tjenere CORBA RMI Java RMI Fler-trådede objekt-tjenere Frank Eliassen, SRL & Ifi/UiO 26 13

Objekt-tjenere: Tjenere som er skreddersydd til å understøtte distribuerte objekter Tjenester realiseres ved objekter som tjeneren innkapsler Tjenester legges til eller fjernes ved legge til eller fjerne objekter Objekt-tjenere opptrer som steder der objekter kan leve Flere måter å aktivisere et objekt på Frank Eliassen, SRL & Ifi/UiO 27 Objekt-tjenere må tilordne prosesseringsressurser til objekter når de aktiviseres Når et objekt aktiviseres, hvilke prosesseringsressurser skal implementasjonen av det tilordnes? Aktiviserings-policy En bestemt måte å aktivisere et objekt på Ulike dimensjoner Hvordan oversette mellom ROR og lokal implementasjon? Skal tjeneren være enkelt-trådet eller fler-trådet? Dersom fler-trådet, hvordan tilordne tråder til objekter og forespørsler? En pr objekt? En pr forespørsel? Transiente vs persistente objekter, etc Objekt-tjenere bør understøtte flere aktiviserings-policies Objektene kan grupperes etter hvilken aktiviserings-policy de er underlagt Frank Eliassen, SRL & Ifi/UiO 28 14

Organisering av objekt-tjener som støtter forskjellige aktiviserings-policies Objekt-adapter: programvare som implementerer en spesifikk aktiviserings-policy skeleton skeleton skeleton Object adapter A Object adapter B dispatcher OS Frank Eliassen, SRL & Ifi/UiO 29 Plan Prinsipper for realisering av fjernmetodekall (RMI) Objekt-tjenere CORBA RMI Java RMI Fler-trådede objekt-tjenere Frank Eliassen, SRL & Ifi/UiO 30 15

CORBA mellomvare Tilbyr mekanismer som gjør at objekter kan sende metodekall og motta svar på en transparent måte lokasjontransparens aksesstransparens kjernen i arkitekturen er en Object Request Broker (ORB) Spresifikasjon utviklet av medlemmene til Object Management Group (www.omg.org) Frank Eliassen, SRL & Ifi/UiO 31 CORBA RMI Klienter kan kalle metoder til fjerne objekter uten bekymring for: objekt-lokasjon, programmeringsspråk, operativsystem-plattform, kommunikasjonsprotokoller og maskinvare. X anrop Z s metode foo() Y Z foo() Ulike programmeringsspråk (og objektmodeller) IDL IDL IDL Felles objektmodell Object Request Broker (ORB) RMI over IIOP Frank Eliassen, SRL & Ifi/UiO 32 16

CORBA Tjenester Application objects Domain interfaces Business objects E-Commerce Financial Domain Healthcare Telecomm. CORBA facilities Compound doc Help Printing. Object Request Broker (ORB) Object services Naming Lifecycle Persistence Events Transactions Trading Time Concurrency Relationships Externalization Querying Licensing Security Properties Frank Eliassen, SRL & Ifi/UiO 33 CORBA IDL Språk for å definere CORBA objekt-typer Kan uttrykke alle begreper i CORBA objekt modell OMG/IDL er ikke avhengig av bestemt programmeringsspråk syntaktisk orientert mot C++ ikke beregningsmessig fullstendig Forskjellige bindinger til programmeringsspråk tilgjengelig Frank Eliassen, SRL & Ifi/UiO 34 17

CORBA objektmodell og IDL Object type parameter-retning returverdi Implisitt supertype Object interface Organisasjon { readonly attribute string navn; } supertype interface Klubb : Organisasjon { exception IkkeIKlubb{}; readonly attribute short antmedlem; readonly attribute Adresse adr; attribute sequence<trener> trenere; attribute sequence<lag> lag; void salg(in Spiller s) raises IkkeIKlubb; }; exception Frank Eliassen, SRL & Ifi/UiO 35 CORBA arkitektur Beskrivelse av registrerte typer: - metoder - parametre -... Interface repository Impl. repository Kjøretidskatalog: - klasser en tjener impl. - aktiviseringsinfo for tjenere og objektimpl. -... klient Klient program Dynamic proxy invocation for A interface ORB Core forespørsel svar IIOP POA: Forvalter og kontrollerer objektimpl: - registrerer objektimpl. - aktiviserer objektimpl. -... tjener ORB Core Object adaptor Servant B Impl. repository skeleton Frank Eliassen, SRL & Ifi/UiO 36 18

CORBAs ROR format (IOR) reflekterer organiseringen av objekt-tjenere skeleton skeleton skeleton Object adapter Object adapter dispatcher OS CORBA Interoperable Object Reference (IOR) Type name (repository id) Protocol and Address details Object Key (Adapter and Object name) Frank Eliassen, SRL & Ifi/UiO 37 CORBA RMI Lokalisering Lokalisering i RMI tilsvarer å avbilde objektreferansen (ROR) til servant servant: implementasjonen av et (eller flere) CORBA objekt ROR i CORBA kalles: Interoperable Object Reference (IOR) Lokaliseringssprosessen: er basert på informasjon kodet i objekt-referansen CORBA Interoperable Object Reference (IOR) Type name (repository id) Protocol and Address details Object Key (Adapter and Object name) IIOP: host name/port no Proprietært format (til ORBen som Frank Eliassen, SRL & Ifi/UiOopprettet IORen) 38 19

CORBA RMI lokalisering over IIOP Transient IOR Virker bare så lenge den tilsvarende tjener-prosessen er tilgjengelig Etter at tjener-prosessen er terminert, vil IORen aldri virke mer Tjenerprosessens lokasjon er kodet i objektets IOR Persistent IOR fortsetter å virke (betegner samme CORBA objekt) selv om tjenerprosessen terminerer og starter på nytt. En activator (implementation repository) kan automatisk starte en tjener-prosess når en klient benytter en persistent objekt referanse og terminere den igjen etter en viss ledig tid Lokasjonen til activator er kodet i objektets IOR. Tjener-prosessens faktiske lokasjon må oppklares via activator. En persistent POA (lager persistente IOR) med registreres hos activator. Frank Eliassen, SRL & Ifi/UiO 39 Plan Prinsipper for realisering av fjernmetodekall (RMI) Objekt-tjenere CORBA RMI Java RMI Fler-trådede objekt-tjenere Frank Eliassen, SRL & Ifi/UiO 40 20

Java Remote Method Invocation (RMI) Frank Eliassen, SRL & Ifi/UiO 41 Java RMI Remote Method Invocation (RMI) understøtter kommunikasjon mellom forskjellige Java Virtual Machines (VM), og eventuelt over et nettverk Gir tett integrasjon med Java Minimaliserer endringer i Java language/vm Virker i homogene omgivelser (Java) RMI-IIOP muliggjør kommunikasjon med CORBA objekter Automatisk oversetting Java Remote Interface til CORBA IDL Klient kan implementeres som applet eller application Frank Eliassen, SRL & Ifi/UiO 42 21

Java Objekt Modell Grensesnitt (interfaces) og fjerne objekt (Remote Objects) Klasser Attributter Operasjoner/metoder Exceptions Arv Frank Eliassen, SRL & Ifi/UiO 43 Java grensesnitt og fjerne objekt Basert på Javas vanlige grensesnitt-begrep RMI har ikke separat språk (IDL) for å definere grensesnitt Predefinert grensesnitt Remote All RMI kommunikasjon er basert på grensesnitt som utvider (extends) java.rmi.remote Fjerne klasser ( remote classes ) implementerer remote grensesnittet Fjerne objekter ( remote objects ) er instanser av fjerne klasser Frank Eliassen, SRL & Ifi/UiO 44 22

Java fjerngrensesnitt: Eksempel interface navn erklærer den som fjern interface Lag extends Remote { public: String navn()throws RemoteException; Trener[] trent_av() throws RemoteException; Klubb klubb() throws RemoteException; Spiller[] spiller() throws RemoteException; void velgkeeper(dato d) throws RemoteException; void print() throws RemoteException; }; remote operation Frank Eliassen, SRL & Ifi/UiO 45 RMI parameteroverføring Atomiske typer overføres by value Fjerne objekt overføres by reference Ikke-fjerne objekt overføres by value class Adresse { public: String gate; String Postnr; String Poststed; }; interface Klubb extends Organisasjon, Remote { public: Adresse adr() throws RemoteException;... }; Returnerer en kopi av Adresse-objektet Frank Eliassen, SRL & Ifi/UiO 46 23

Arkitektur til Java RMI Client Server Stub Registry Interfaces Generic Dispatcher Activation Interfaces RMI Runtime ( rmid,rmiregistry ) Ikke-persistent navne-tjener Frank Eliassen, SRL & Ifi/UiO 47 Plan Prinsipper for realisering av fjernmetodekall (RMI) Objekt-tjenere CORBA RMI Java RMI Fler-trådede objekt-tjenere Frank Eliassen, SRL & Ifi/UiO 48 24

Objekt-tjenere må tilordne prosesseringsressurser til objekter når de aktiviseres Når et objekt aktiviseres, hvilke prosesseringsressurser skal implementasjonen av det tilordnes? Skal en ny prosess eller tråd opprettes? Finnes det flere måter dette kan gjøres på? Finnes det én beste måte? Hvorfor bruke prosesser og tråder i distribuerte system? Bedre ytelse Bedre utnyttelse av ressurser Frank Eliassen, SRL & Ifi/UiO 49 Tråder er billigere å forvalte enn prosesser kjøretidsomgivelser (adresserom) er dyre å opprette tråder er mye billigere å opprette og terminere tråder kan dele kjøretidsomgivelser (f.eks. globale variable, åpne filer, timere, signal,. ) prosesser definerer beskyttelsesdomener en tråd i en prosess kan (normalt) ikke aksessere data og ressurser i en annen prosess Frank Eliassen, SRL & Ifi/UiO 50 25

Flertrådet tjener Forespørsel ingen disk caching ingen disk caching disk caching disk caching disk caching Inn-Ut 8 ms forsinkelse 2 ms m/cache i snitt 2 ms prosessering 2.5 ms m/cache # prosessorer # tråder Maks. anrop/sekund 1 1 100 1 2 125 1 2 400 2 2 444 2 3 500 Frank Eliassen, SRL & Ifi/UiO 51 Alternative tråd-policies for objekt-aktivisering workers per-connection threads per-object threads I/O remote objects remote objects I/O remote objects a. Thread-per-request b. Thread-per-connection c. Thread-per-object Frank Eliassen, SRL & Ifi/UiO 52 26

Oppsummering Implementasjon av RMI proxies, skeletons, dispatcher grensesnittprosessering, binding, lokalisering, aktivisering Kallsemantikk Kanskje, minst-en-gang, høyst-en-gang Pålitelighet til RMI er i beste fall høyst-en-gang Prinsipper for CORBA Klienter kaller metoder til fjerne objekter uten bekymring for objektlokasjon, programmeringsspråk, operativsystem-plattform, kommunikasjonsprotokoller og maskinvare. Prinsipper for Java RMI Tilsvarende som CORBA men avgrenset til Java-miljø Flere-trådede tjenere kan i noen tilfeller benyttes til å øke gjennomstrømningen (metodekall/tidsenhet) dersom f.eks. I/O er flaskehalsen Frank Eliassen, SRL & Ifi/UiO 53 Ekstra lysark Frank Eliassen, SRL & Ifi/UiO 54 27

CORBA Portable object adapter (POA) Muliggjør portabilitet av objektimplementasjoner mellom ulike ORBer Understøtter lettvekts transiente objekter og persistente objektidentifikatorer (f.eks. For objekter lagret i databaser) Tillater tjenere å implementere mange objekter Understøtter transparent objekt-aktivisering Utvidbar mekanisme for aktiviseringspolicies Flere POAer i en tjener CORBA klient CORBA tjener ORB? POA servants Frank Eliassen, SRL & Ifi/UiO 55 Lokalisering av transient IOR over IIOP Klient Objekt referanse (IOR) IDL:MittObj bobo:1805 OA9,obj_979 (1) op()[oa9,obj_979] (3) svar på op() tjener på bobo:1805 OA9 obj_971 obj_979 obj_983 (2) Frank Eliassen, SRL & Ifi/UiO 56 28

Lokalisering av persistent IOR over IIOP Benytter Implementation Repository (IR) som activator. IR: handterer prosess/tråd-oppretting og -terminering, m.v. er ikke portabel (spesifikk for en ORB implementasjon) ikke standardisert spesialsydd for spesifikke omgivelser ikke mulig å skrive spesifikasjoner som dekker alle omgivelser kommunikasjon mellom en ORB og dens IR er ikke synlig for klienten Objekt migrering, skalering, ytelse, og feil toleranse er avhengig av IR Implementerers vanligvis som en prosess på en fast adresse vertsmaskiner som er konfigurert under samme IR utgjør et location domain Frank Eliassen, SRL & Ifi/UiO 57 Lokalisering av persistent IOR over IIOP Klient Objekt referanse IDL:MittObj (1) op()[ole,obj_979] MittIR:1801 Ole,obj_979 (4) location_forward(bobo:1799) (5) op()[ole,obj_979] (7) svar på op() bobo:1799 Ole obj_971 obj_979 obj_983 (2) fork/exec(rsh bobo /usr/local/bin/ole -x ) (3) IR på MittIR:1801 My_adr(bobo:1799) Server table ObjAdapt Start_up command address Ole rsh bobo /usr/local/bin/ole -x bobo:1799 Frank /usr/local/bin/frank OA2 Frank Eliassen, SRL & Ifi/UiO 58 (6) 29

Java RMI utviklingsprosess Implement client.java javac.class Start client Client uses Define remote interface Implement the interface.java javac.class rmic Server class Client stub Start RMI Registry Start server objects Register remote objects Server Frank Eliassen, SRL & Ifi/UiO 59 30