Search:
DU Wiki > Ă„mnen - Subjects > Informatik > IK2001 Design av mobila system > Mobil system arkitektur - REST

Mobil system arkitektur - REST

    Av: Jonas Fredriksson, h10jfred@du.se

     

    Mobila systemarkitekturen REST

    Sedan första iPhone kom ut 2007 så har mobilanvändning ändrats och ökat rejält.

    Den användningen fortsätter växa och detta har satt stora krav på mobilsystemarkitekturen.

    Det finns olika lösningar på mobilsystemarkitekturer och en av dom är systemarkitekturen REST.

    Systemarkitekturen REST är en klient server kommunikation och arbetar över HTTP protokollet .

    Fördelarna med REST är att den tar mindre bandbredd än exempel vis SOAP arkitekturen som också är

    en klient server kommunikation men som är låst till XML-data och kräver icke funktionsmässig data på varje meddelande.

    En till fördel med REST är att flera plattformar kan använda samma server med samma anrop bara platformarna stödjer HTTP-requests.

     

    För att kunna presentera och få tillgång till dynamisk data på en klient så behövs en applikation och kommunikation mot en server som tillhandahåller dynamisk data.

    Det finns olika typer av arkitekturer gällande kommunikationen mellan en klient och en server där olika protokoll används.

    Några typer av arkitekturer:

    SOAP (Simple Object Access Protocol)

    RPC (Remote Procedure Call)

    REST (Representational State Transfer)

     

    Genom att servern bara levererar och tillhandahåller rådata med tillhörande anropningsmetoder så har skalbarheten ökat samt möjligheten till att kunna använda flera olika plattformar. (Fielding, 2000, kapitel 5.1.2) 

    Man kan alltså genom samma protokoll få tillgång till samma data med samma metodanrop fast från t.ex. olika smartphone operativsystem.

     

    REST

    REST (Representational state transfer) är en så kallad ”stateless client server architecture” dvs. en system arkitektur som använder sig utav

    HTTP(HyperText Transfer protocol) för att tillhandahålla kommunikation samt hantera CRUD(create, read, update, delete) operationer mellan en klient och en server.

    (Webber, Parastatidis, Robinson, 2010, s.55)

     

    Klienten använder HTTP protokollet för att skicka metodanrop genom POST och GET samt tar emot XML-eller JSON(JavaScript Object Notation)

    data från servern som måste konverteras för att bli läsbara objekt.(Mahmud, 2012, s.49)

    Eftersom HTTP protokollet är accepterat av de flesta brandväggarna så minimeras risken för nätverksavbrott mellan klienten och servern.(Mahmud, 2012, s.31-32)

     

    För att få en högre säkerhet på datat mellan klienten och servern så går det även att kommunicera genom HTTPS(HyperText Transfer Protocol Secure)(Fielding, 2010, s.295).

    Kommunikationen mellan klienten och servern enligt REST bygger på att klienten har funktionalitet som kan bygga upp en URL med olika

    metodnamn och anropa servern eller genom HTML metoden POST skicka ett POST-anrop till angiven URL med olika parametrar.

    Detta bygger på att klienten och servern har ett kontrakt i form av metodanrop och struktur på genererat svarsanrop.( Mahmud, 2012, s.48)

     

    Man kan använda både XML och JSON i svarsanropen från servern till klienten. Den effektivaste och mest bandbredd vänliga datautbytesspråket är JSON,

    det för att den inte behöver namespace och därmed reduceras datamängden och kompileringstiden. En till fördel är att den tillåter att skicka all sorts

    information eftersom den har ett inbyggt stöd för unicode . (Mahmud, 2012, s.31-32)

     

    Jämfört med SOAP så är REST mycket snabbare kommunikationssätt för att datamängden mellan klienten och servern är mindre samt att

    SOAP behöver använda icke funktionsnödvändig information i paketen mellan klienten och servern och där med ökar datamängden och kompilationstiden(Mahmud, 2012, s.27).

     

    CRUD

    Arkitekturen REST ursprungliga syfte är att använda CRUD modellen där create, read, update och delete kopplas mot HTML metoderna post, get, put och delete.

    Create    -> Post
    Read      -> Get
    Update   -> Put
    Delete    -> Delete

    Eftersom PUT och DELETE inte längre stöds av HTML5 så finns det ingen anledning av att använda PUT och DELETE i systemet(w3).

    Däremot räcker det med att använda sig utav GET och POST för att hämta och skicka data mellan klienten och HTTP-servern (Mahmud, 2012, s.48).

     

    Exempel på hur man i praktiken kan använda sig utav REST metoden.

    I de här exemplen så används JSON som data transportör från servern till klienten.

    För att göra en förfrågan om data så räcker det med att applikationen gör en förändring i URI´n för att hämta det datat man förfrågar.

    GET

    Förfrågan:

    [http / https]://server.com/sjukgymnastik.php?/getUserAllData/870611-1111

     

    Applikationen får ett svar i från server I form av JSON-data och här måste applikationen konvertera JSON-datat för att kunna utläsa Java-objekt(Mahmud, 2012, s.49-50).

    Därefter kan applikationen t.ex. placera datat i en lokal databas för framtida användning.

    Svar:

    [{"uid":3,"name":"Jonas", "period":
    
      [{"fas":1,"start":"2012-10-11", "stop":"2012-11-11", "exercise":
    
          [{"fas":1, "name":"Hoppa högt","desc":"Hoppa 3 ggr"},
    
           {"fas":1, "name":"Spring","desc":"Spring med hög fart"},
    
           {"fas":1, "name":"","desc":"Gå lugnt"},
    
           {"fas":1, "name":"Kryp","desc":"Kryp 5 ggr"}
    
          ]},
    
        {"fas":2,"start":"2012-10-11", "stop":"", "exercise":
    
          [{"fas":2, "name":"Marklyft","desc":"6 reps"},
    
           {"fas":2, "name":"Benpress","desc":"8 reps"},
    
           {"fas":2, "name":"Knäböj","desc":"2 reps"}
    
          ]}]
    
    }]

     

    POST

    POST-funktionen används när man t.ex. vill exekvera login metoder eller när man vill skicka data till databasen.

    Precis som i html där en form med olika fält finns så kan man placera olika värden i kolumnerna beroende på vad som ska skickas till servern.

    I det här fallet nedan så finns en kolumn som heter ”method” och där placerar vi namnet på metoden som vi vill exekvera, där utefter placerar vi parametrarna.

    Förfrågan:

    [http / https]://server.com/sjukgymnastik.php

     

    POST till PHP exempel

    1.       { method: setThighDimension, pnr: 870611-1111, låromfång: 56.3}
    
    2.       { method: deleteUser, pnr: 870611-1111}
    
    3.       { method: setUserExerciseData, pnr: 870611-1111, exercise: 14, smärta: 6, belastning: 30}
    
    4.       { method: getLogin, pnr: 870611-1111, passwd: fellösenord}

     

     

    Servern svarar med ett JSON-objekt som innehåller ett svar om metoden blev korrekt utförd.

    Genom att vi får svar i form av 1 eller 0 så vet applikationen om det skickade metodanropet kom fram till servern samt om metoden utfördes med lyckat resultat.

    Svar till exempel 1:

    {"succeed":1}

     

    Svar till exempel 2:

    {"succeed":1}

     

    Svar till exempel 3:

    {"succeed":1}

     

    Svar till exempel 4:

    {"succeed":0}

     

     

    Denna metod kan användas till sjukgymnastik applikationen för att:

    • Den är bandbreddsvänlig.
    • Möjlighet till att bygga ut systemet för iPhone samt för jQuery Mobile webbapplikation.
    • Icke beroende av kontinuerlig uppkoppling.
    • HTTP, öppna brandväggar.

     

    Referenser

    Böcker

    Webber J, Parastatidis S, Robinson I (2010) REST in Practice: Hypermedia and Systems Architecture,ISBN-10:0596805829ISBN-13: 978-0596805821, 1:a uppl.

     

    Uppsatser

    Atik Mahmud (2012) A REFERENCE FRAMEWORK ON NATIVE APPLICATION FOR MOBILE MASHUP. Examensarbete. Master of science thesis, KTH, Stockholm.

    Fielding, Roy Thomas (2000) Architectural Styles and the Design of Network-based Software Architectures. Examensarbete. Doctor of philosophy in Information and Computer Science, University of California, Irvine.

     

    Elektroniska källor

    W3, [Bug 10671] New: consider removing support for PUT and DELETE as form methods.Hämtad från <http://lists.w3.org/Archives/Public/public-html-wg-issue-tracking/2010Sep/0039.html>. Hämtad den 14 september 2012.

    Files (0)

     

    Comments (5)

    Viewing 5 of 5 comments: view all
    Bra och relevant artikel! REST verkar vara en mycket skalbar och bra lösning för att skicka data, tex XML och JSON-data till tex en mobilklient. En stor fördel är ju att REST använder sig av HTTP(HyperText Transfer protocol)som är ett smidigt protokoll att använda vid kommunikation via Internet.
    Posted 13:33, 21 Oct 2012
    Intressant artikel! Har kommit väl till användning under arbetet med projektet. Trevligt sätt att jobba.
    Posted 14:35, 22 Oct 2012
    Gillar denna artikel skarpt! Väldigt dålig koll på hur REST fungerade innan, och den är högst relevant då vi använde oss utav denna metod i projektet!
    Posted 18:27, 23 Oct 2012
    Bra exempel pĂĄ koppling url och det json data som kommer tillbaka
    Posted 08:06, 24 Oct 2012
    Bra artikel. Den har vi faktiskt använt i projektet. Både JSON men även REST modellen.
    Posted 11:01, 24 Oct 2012
    Viewing 5 of 5 comments: view all
    You must login to post a comment.