Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.

Lignende præsentationer


Præsentationer af emnet: "Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i."— Præsentationens transcript:

1 Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i et OO sprog vil tråde være i færd med at udføre metoder der hører til et objekt "Agenter" funktionel enhed, f.eks. klient, server, eller komponent heraf

2 Mulige grunde til at vælge distribueret applikation Performance opnå performance-forbedring ved at opdele problem i dele og løse på hver sin maskine Tage hensyn til tilgængelighed af data: afvikle program der hvor data er Robusthed "redundant" ekstra maskine klar til at overtage

3 Hvordan er en distribueret applikation forbundet ? Selve forbindelsen kan f.eks. være en TCP-baseret socketforbindelse Forskellige former for kommunikation: almindelig tekstbaseret: HTTP, SMTP etc. specialdesignede protokoller fjernprocedurekald, f.eks. til webserver: sum = total_ taletid() fjernprocedurekald til specifikke objekter: min_taletid = min_konto.taletid()

4 Distribuerede objekter obj obj.meth(..) result Distribuerede objekter er.. ikke blot at der skabes objekter i en proces (B) men at andre processer (f.eks. A) kan tilgå metoder i processens objekter Proces A (klient) Proces B (server)

5 Distribuerede objekter er også obj obj.meth(..) result Proces A Proces B Skab en instans af klasse xyz A sender klassedefinition af en bestemt klasse til B A giver besked til B om at skabe et objekt, der er en instans af en bestemt klasse Definition af klasse xyz

6 Java som sprog til distribuerede applikationer Netværkssupport ikke med fra fødslen men tidligt med da Sun så Internettet som Java's "killer application" kæmpe standard-bibliotek til netværks-/distribueret programmering Abstrakte interface-s klient behøver kun kende det interface, et objekt på serveren implementerer OO agenter kan implementeres som objekter Java Bytecode er platformsuafhængig muliggør overførsel af klasse-definitioner Fejlhåndtering er i praksis særlig vigtig ved distribuerede applikationer

7 ServerSocket / (alm.) Socket Server SYN klient Lytter til nye requests Kommunikation med klient

8 Sockets i C Klient: fd = socket(..) connect(fd,..) write(fd,..) read(fd,..) close(fd,..) Server: srv_fd = socket(..) bind(srv_fd,..) listen(srv_fd,..) clt_fd = accept(srv_fd,..) read(clt_fd,..) write(clt_fd,..) close(clt_fd,..) close(srv_fd,..) Kun på server Kun på klient

9 Sockets i Java Klient: serverConn = new Socket(..).. = serverConn.getOutputStream().. = serverConn.getInputStream().....write(..)...read() Server: clientConn = new Serversocket(..) clientReq = clientConn.accept().. = clientReq.getOutputStream().. = clientReq.getInputStream().....read()...write(..) Parametre? Java Gently s. 410-412 giver overblik Farley s. 24-27 uddyber.

10 Pseudo Web-server (hændelser) "Browser" "Web-server" GET goodies goodies Gotten GET kommando fortolkes POST goodies DONE POST kommando fortolkes DONE kommando fortolkes

11 SimpleClient.java: opgaver 1. Sende og modtage beskeder 2. Oprette socketforbindelse = skabe socket-objekt 3. Oprette objekt af egen type: SimpleClient Opgave: kog SimpleClient.java ned til 10-12 linjer, der viser hvor (i hvilke klasser/metoder) dette gøres

12 SimpleClient.java skitse af løsning af 1-2-3 public class SimpleClient { protected Socket serverConn; public SimpleClient(String host,int Port) { serverConn = new Socket(host,port); } public static void main(String[] argv) { host = argv[0]; port = Integer.parseInt(argv[1]); SimpleClient client = new SimpleClient(host,port); client.sendCommands(); } public void sendCommands(); {..} } 2. 3. 1.

13 SimpleServer Besked modtaget fra klient: "Get goodies" Parses vhja. instans af class SimpleCmdInputStream.. som genererer objekt, der er instans af class GetCmd SimpleCmd GetCmd Do() Arg"Goodies" cmd Do() returnerer Arg + " gotten"

14 package dcj.examples; import java.lang.*; public abstract class SimpleCmd { protected String arg; public SimpleCmd(String inArg) { arg = inArg; } public abstract String Do(); } public class GetCmd extends SimpleCmd { public GetCmd(String s) { super(s); } public String Do() { String result = super.arg + " gotten.\n"; return result; }

15 Uge 14 - distribuerede objekter og fjernprocedurekald. Uge 15 - tråde Tirsdag d. 4. april Introduktion til begreber Få lille Java Gently program til at køre (eks. 14.6) Litteratur: Farley kap 3 (45-47 + 71-75). Java Gently: Kap 14 (410-412 (sockets) og 425-427 (RMI)). Plan for resten af kurset

16 Farley s. 47 -51 obj obj.meth(..) reference til obj Proces A Proces B Skab en instans af klasse xyz Definition af klasse xyz Illustreres med pseudokode Pseudokode bruger Class.forName("xyz") som loader bytecode "xyz.class"

17 Class.forName(..) og Class.newInstance() Statisk (normal) loadning: MyClass obj = new MyClass(); Dynamisk loadning: Class cls = Class.forName("MyClass"); obj = cls.newInstance(); samme Forudsætter at MyClass.class er tilgængelig lokalt via CLASSPATH

18 RMI obj obj.meth(..) reference til obj Proces A Proces B Skab en instans af klasse xyz Definition af klasse xyz RMI

19 RMI involverer tre processer (jf. Java Gently) obj Proces A Proces B Den tredje proces (C): På serversiden er der også en naming service objektet obj er registreret under navnet "o" o Proces C Har du et objekt ved navn "o" ? Reference til obj

20 De vigtigste krav til et objekt, der skal tilgås fra "fjern" proces Objektet skal implementere et interface (f.eks. "interface Thing") der er tilgængelig på den fjerne proces Interfacet fastlægger hvilke metoder, der må kaldes fra den fjerne proces Feature: Selve implementationen af interfacet må gerne være skjult for den fjerne proces.


Download ppt "Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i."

Lignende præsentationer


Annoncer fra Google