Distribuerade affärssystem
Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska system och i distribuerade system Beskriva hur man utvecklar enkla system med inbyggd kommunikation på olika sätt Kunna skapa webbaserade lösningar Vara insatt i och beskriva säkerhetsaspekter kring distribuerade applikationer Kunna analysera, diskutera och jämföra olika distribuerade lösningar
Innehåll Distribuerade objekt (rmi, corba) Meddelandesystem (jms) Enterprise frameworks (j2ee,.net) Webbaserade system och programmering av tunna klienter Webservices Arkitektur och design av distribuerade system 3-lager arkitektur Transaktioner Samtidighet Säkerhet
Kurslitteratur Distributed Systems : Concepts and Design (4th Edition) by Jean Dollimore (Author), Tim Kindberg (Author), George Coulouris (Author) ISBN 0321263545
Kurs upplägg Teori moment 3 inlämninguppgifter, 1/vecka Muntlig tenta. 3 första veckorna. Lab moment 1 Java lab 1.NET lab Resten av kursen.
Teori momentet Varje avsnitt inleds med en föreläsning om innehållet i veckans kapitel Individiuellt läser ni avsnitten i boken och skriver en sammanfattning. I grupp ska ni diskutera fram en gemensam lösningar på gruppmomentet. Början på nästa vecka ska ni lämna och redovisa vad ni kommit fram till.
Muntlig tentamen Ca 50 frågor där vi ställer ca 3. En och en med Reine och Jonas
Laborations momentet Lab1 JSP och 3 skikt En webshop Lab2.NET C#
Laborations moment Föreläsningarna ger byggstenar Ni fogar samman och bygger system. Få fasta övnignar, men 'coaching' hela tiden. Fokus är på hur programmet är uppbyggt och hur ni gjort det INTE bara på att det fungerar.
Vad menas med distribuerad? Med distribuerad menar vi utspridd. Det är alltså system som kräver kommunikation av något slag.
Meddelande skickande Den allra enklaste formen Ett eget definierat protokoll skickas över sockets. Exempel Update person id=4711, name=nisse Remove person id=4711 Protokollen kan även göras adaptiva, d.v.s. Förändra sig efter behov
Fördelar Snabbt Medger kommunikation mot gammal/okänd motpart Nackdelar Komplext och krångligt Svårt med mer utväcklad och omfattande kommunikation
RPC Remote Procedure Call Anropande av funktion på mottagaren Ett lager ovanför socket med direkta anrop på en funktion. Exempel addperson(personid, name); removeperson(personid) Enklare meddelande sändning. Inte lika plattforms oberoende.
Distribuerade objekt Ett lager till ovan RPC blir distribuerade objekt. Precis som i ett ojektorienterat system är det här objekt som skickar meddelanden mellan varandra,men objekt på olika datorer. Skillnaden mot RPC är att man kommunicerar med ett objekt INTE metod/procedur.
Dist objekt RMI (Remote Method Invocation) är Javas variant. Integrerat i Java Lätt att använda, men endast Java CORBA Innehåller ALLT Krångligt, stabilt. För stora system.net eller DCOM Windows miljö, inte objektorienterat
Fördelar Naturligt in i objektorienterad utveckling Kommunikation med objekt (id) Komplexiteten abstraherad bort (???) Nackdelar Långsammare Design för kommunikation eller design för OO?
Meddelande/händelse orienterade system Fungerar ungefär som fönsterbaserade grafiska gränssnitt. En sändare skickar data till de som lyssnar på kanalen Börsdata strömmar ut data Streamad radio
En annan variant är ett mer köbaserat system där man allokerar på händelser som anländer till en viss kö. Finns inbyggd mekanism för detta i CORBA och i Java via Java Message API (JMS) Vanlig strategi för integrering och utbyte av information mellan stora system. Fördel är att sändare och mottagare
Arkitektur En normal distribuerad miljö har lite olika lager Applikation/service/tjänster Middleware OS Hårdvara Middleware A layer of software whose purpose is to mask heterogenity and to provide a convienent programming model to
Nästa steg är hur uppdelning sker mellan funktioner i systemet. D.v.s. hur man tillhandahåller sina funktioner och hur de olika delarna i systemet jobbar med varandra.
Client-server Den vanligaste strukturen. Klienten utför en förfrågan och får till svar ett resultat från en server. Servern kan i sin tur anropa en annan server där man i sin tur aggerar klient. En enkel struktur som inte kräver mycket av klienten.
Multipla servrar En variant till detta är att man har många servrar som gemensamt tillhandahåller funktioner. Servrarna ser utåt ut som en men kan sinsimellan dela upp det Antingen har en viss server vissa uppgifter Eller så har alla servrar en kopia av all data och tillhandahåller alla funktioner. Replikering ger naturligtvis större fel
Proxy server med cache Skillnaden här är att man har en server innan de 'verkliga servrarna' som innehåller de mest använda informationen. Cachar används i praktiken av de flesta system. Denna konstruktion kan användas i system där man vill ha ner belastningen på huvud servrar och flytta ut kommunikation med
Peer to peer Eller kommunikation helt utan server. De olika delarna kommunicerar alla med varandra. Alla är klienter och servrar eller samtidigt förfrågar och tillhandahar funktioner Servern är en svag punkt och detta eliminerar det. Dock väldigt svårt att göra denna typ av design.
Synkront vs asynkront En intressant aspekt i det hela är ifall kommunikationen är synkron eller assynkron. Metod anrop till objekt och likaså i distribuerade objekt system är synkrona. Kan dock fejkas som asynkrona. Meddelande system är asynkrona. Asynkront kan vara bra då stora beräkningar eller kostsamma resurser