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.

Slides:



Advertisements
Lignende præsentationer
Programmeringsparadigmer.
Advertisements

07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
DS-kursusgang nr. 6: distribuerede objekter 1. Intro (oversigt over grundl₣ggende begreber og komponenter) 2. De basale designspørgsm ₢ l ved konstruktion.
Selve objektet versus referencen til objektet Nedarvning
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
DotNET Remoting Præsentation. Beskrivelse af arkitekturen i et dot NET program. Hvad er en Proxy. Klient, server og host begreberne. Marshaling. Eventuelt.
DS-kursusgang nr. 5: Sockets Intro Java-klasser til at arbejde med sockets. Forskellen på sockets i C og i Java. TCP/IP protokol familjen. Afslutning:
Grundlæggende programmering Efterår 2001
09 – Arv og polymorfi i java
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Eksekvering/Otto Knudsen 1 Udrulning Publicering af en web-applikation.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Introduktion til arkitektur design Arkitektur design handler om at få en forståelse for, hvordan et system skal organiseres og designe den overordnede.
Indhold 1.Hvad er MATRIX Mobil 2.Menu Valg 3.Installation 4.Adgang.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
Per P Madsen Afdeling for Proceskontrol Aalborg Universitet.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Objekter og klasser Rasmus D. Lehrmann DM
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
Procestræ under afvikling af cp init login shell cp cp src dest.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.
Fremstilling af Simple WEB steder [ITPL] Foråret 2004
Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation.
8.5 JDBC1 JDBC 8.5 Java Database Connectivity. 8.5 JDBC2 JDBC introduktion, 393 JDBC er ikke en forkortelse for –Java Database Connectivity Sun har defineret.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Per P Madsen AAU1 Del 4 : Sessions-, presentations- og applikationslaget - Applikationsprotokoller. - RPC og RMI. - Digital audio og Voice over IP. - RTP.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Web Services. OO (C++/ C#/Java) COM DCOM Web Services.
Web services SOA, SOAP og WSDL. Disposition Inledning / Definition SOAP Standard SOAP Beskeder WSDL.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
1. 2 Overblik HyCon arkitektur –Platform –Komponenter og services –XSLT servlet Chain –Sensorer Den praktiske tilgang HyCon frameworket –Step by Step.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Præsentationens transcript:

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

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

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()

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)

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

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

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

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

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 giver overblik Farley s uddyber.

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

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 linjer, der viser hvor (i hvilke klasser/metoder) dette gøres

SimpleClient.java skitse af løsning af 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(); {..} }

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"

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; }

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 ( ). Java Gently: Kap 14 ( (sockets) og (RMI)). Plan for resten af kurset

Farley s 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"

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

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

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

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.