13.07.2015 Views

An overview of the current status - Twente Student Conference on IT

An overview of the current status - Twente Student Conference on IT

An overview of the current status - Twente Student Conference on IT

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

will show <str<strong>on</strong>g>the</str<strong>on</strong>g> details <str<strong>on</strong>g>of</str<strong>on</strong>g> this particular resource, whilePUT http://hostname/users/1/in combinati<strong>on</strong> with <str<strong>on</strong>g>the</str<strong>on</strong>g> informati<strong>on</strong> that needs to be updated,will update <str<strong>on</strong>g>the</str<strong>on</strong>g> resource, whileDELETE http://hostname/users/1/will delete <str<strong>on</strong>g>the</str<strong>on</strong>g> resource.The request:POST http://hostname/users/in combinati<strong>on</strong> with <str<strong>on</strong>g>the</str<strong>on</strong>g> informati<strong>on</strong> that needs to be entered fora new resource, creates a new resource.One can see in <str<strong>on</strong>g>the</str<strong>on</strong>g> example above that <str<strong>on</strong>g>the</str<strong>on</strong>g> acti<strong>on</strong> that needs tobe performed is not located in <str<strong>on</strong>g>the</str<strong>on</strong>g> URI. Also, <strong>on</strong>e could forexample easily define rules in <str<strong>on</strong>g>the</str<strong>on</strong>g> firewall that would disallow<str<strong>on</strong>g>the</str<strong>on</strong>g> usage <str<strong>on</strong>g>of</str<strong>on</strong>g> PUT and DELETE <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> internet, but allow <str<strong>on</strong>g>the</str<strong>on</strong>g>semethods <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> intranet.A web service can ‘c<strong>on</strong>sume’ <str<strong>on</strong>g>the</str<strong>on</strong>g> resources above as if it is alocal resource. It can manipulate <str<strong>on</strong>g>the</str<strong>on</strong>g> resource by using differentAs we now know what REST’s characteristics are, we can lookinto more detail what <str<strong>on</strong>g>the</str<strong>on</strong>g> advantages and disadvantages <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g>secharacteristics are.2.2 The Advantages <str<strong>on</strong>g>An</str<strong>on</strong>g>d Disadvantages OfRESTThe additi<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> c<strong>on</strong>straints menti<strong>on</strong>ed in <str<strong>on</strong>g>the</str<strong>on</strong>g> previousparagraph to <str<strong>on</strong>g>the</str<strong>on</strong>g> web, has several advantages and disadvantages.Below for each previously menti<strong>on</strong>ed principle, <str<strong>on</strong>g>the</str<strong>on</strong>g> advantagesand disadvantages are explained.2.2.1 Uniform interface between comp<strong>on</strong>entsREST’s focus <strong>on</strong> a uniform interface between comp<strong>on</strong>ents is anadvantage as well as a disadvantage. The advantage is thatimplementati<strong>on</strong>s are no l<strong>on</strong>ger coupled to <str<strong>on</strong>g>the</str<strong>on</strong>g> services <str<strong>on</strong>g>the</str<strong>on</strong>g>yprovide. This means that if you write a RESTful webapplicati<strong>on</strong> that provides a certain service, o<str<strong>on</strong>g>the</str<strong>on</strong>g>r RESTful webapplicati<strong>on</strong>s are able to communicate with that web applicati<strong>on</strong>as if <str<strong>on</strong>g>the</str<strong>on</strong>g> service is a local resource. A uniform interface alsomeans that web applicati<strong>on</strong>s should very easily be able to‘c<strong>on</strong>sume’ web services without a specificati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> protocol<str<strong>on</strong>g>the</str<strong>on</strong>g> web services use. For example, if <strong>on</strong>e writes a webapplicati<strong>on</strong> that uses a certain web service, <str<strong>on</strong>g>the</str<strong>on</strong>g> way <str<strong>on</strong>g>of</str<strong>on</strong>g> gettingand manipulating <str<strong>on</strong>g>the</str<strong>on</strong>g> informati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> that web service is definedby <str<strong>on</strong>g>the</str<strong>on</strong>g> uniform interface. Of course <strong>on</strong>e still needs to know whatinformati<strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> web service provides and what <str<strong>on</strong>g>the</str<strong>on</strong>g>characteristics are <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> accessed informati<strong>on</strong>. Still, because<strong>on</strong>e knows how to get and manipulate <str<strong>on</strong>g>the</str<strong>on</strong>g> informati<strong>on</strong>,accessing this web service can save both time and m<strong>on</strong>ey.The usage <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> HTTP methods GET, POST, PUT andDELETE also has an advantage. Currently <str<strong>on</strong>g>of</str<strong>on</strong>g>ten <str<strong>on</strong>g>the</str<strong>on</strong>g> POSTmethod is used to update or delete informati<strong>on</strong>. While <str<strong>on</strong>g>the</str<strong>on</strong>g> POSTmethod is not idempotent, <str<strong>on</strong>g>the</str<strong>on</strong>g> PUT and DELETE method are.Idempotent means that multiple identical requests have <str<strong>on</strong>g>the</str<strong>on</strong>g> sameeffect as <strong>on</strong>e request. This means when a client uses PUT orDELETE, <str<strong>on</strong>g>the</str<strong>on</strong>g> client (and intermediaries) can make betterassumpti<strong>on</strong>s about <str<strong>on</strong>g>the</str<strong>on</strong>g> resource <str<strong>on</strong>g>the</str<strong>on</strong>g>y modified, than when <str<strong>on</strong>g>the</str<strong>on</strong>g>POST method was used.The uniform interface also has a disadvantage. A standardizedform <str<strong>on</strong>g>of</str<strong>on</strong>g> transferring informati<strong>on</strong> is less efficient thantransferring informati<strong>on</strong> in a format created specific for anapplicati<strong>on</strong>. REST is designed to be efficient for <str<strong>on</strong>g>the</str<strong>on</strong>g> mostcomm<strong>on</strong> cases <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> web, but it is not optimal for o<str<strong>on</strong>g>the</str<strong>on</strong>g>r forms<str<strong>on</strong>g>of</str<strong>on</strong>g> architectural interacti<strong>on</strong> [Fie00].REST’s uniform interface is <str<strong>on</strong>g>the</str<strong>on</strong>g> aspect that differs <str<strong>on</strong>g>the</str<strong>on</strong>g> mostfrom o<str<strong>on</strong>g>the</str<strong>on</strong>g>r architectural styles, and protocols such as SOAP. Inc<strong>on</strong>trast to REST, SOAP has a separate protocol layered overHTTP. This increases complexity compared to <str<strong>on</strong>g>the</str<strong>on</strong>g> directfetching <str<strong>on</strong>g>of</str<strong>on</strong>g> documents over HTTP that REST describes. Also asSOAP <strong>on</strong>ly uses GET and POST, firewalls are not able todistinguish <str<strong>on</strong>g>the</str<strong>on</strong>g> intent <str<strong>on</strong>g>of</str<strong>on</strong>g> a SOAP request [New05].2.2.2 Layered system styleThe use <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> layered system style has <str<strong>on</strong>g>the</str<strong>on</strong>g> advantage <str<strong>on</strong>g>of</str<strong>on</strong>g> anoverall reducti<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> system complexity. It also encouragessubstrate independence. Layers can be applied so <str<strong>on</strong>g>the</str<strong>on</strong>g> systemcan use legacy services and protect new services from legacyclients. It also increases <str<strong>on</strong>g>the</str<strong>on</strong>g> easiness <str<strong>on</strong>g>of</str<strong>on</strong>g> using intermediaries.The major disadvantage <str<strong>on</strong>g>of</str<strong>on</strong>g> layered systems is <str<strong>on</strong>g>the</str<strong>on</strong>g> additi<strong>on</strong>aloverhead and an increase in latency to data processing. Thesefactors lead to a reducti<strong>on</strong> in performance <str<strong>on</strong>g>the</str<strong>on</strong>g> user experiences[CT90]. Sharing caches at intermediaries may solve some <str<strong>on</strong>g>of</str<strong>on</strong>g><str<strong>on</strong>g>the</str<strong>on</strong>g>se performance issues [WVS+99].2.2.3 Code-<strong>on</strong>-demand styleThe code-<strong>on</strong>-demand style also has advantages anddisadvantages. The major advantage is <str<strong>on</strong>g>the</str<strong>on</strong>g> ability to addfeatures to deployed clients. This results in improvedextensibility and c<strong>on</strong>figurability. Also <str<strong>on</strong>g>the</str<strong>on</strong>g> performance andefficiency that <str<strong>on</strong>g>the</str<strong>on</strong>g> user experiences, is increased as a) <str<strong>on</strong>g>the</str<strong>on</strong>g> codecan be adapted to <str<strong>on</strong>g>the</str<strong>on</strong>g> client’s local envir<strong>on</strong>ment and b) <str<strong>on</strong>g>the</str<strong>on</strong>g> codecan interact with <str<strong>on</strong>g>the</str<strong>on</strong>g> client locally instead <str<strong>on</strong>g>of</str<strong>on</strong>g> remote. It alsoleads to an increased scalability <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> server as <str<strong>on</strong>g>the</str<strong>on</strong>g> clientexecutes <str<strong>on</strong>g>the</str<strong>on</strong>g> code.The major drawback <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> code-<strong>on</strong>-demand style is <str<strong>on</strong>g>the</str<strong>on</strong>g> lack <str<strong>on</strong>g>of</str<strong>on</strong>g>visibility, as <str<strong>on</strong>g>the</str<strong>on</strong>g> server sends code instead <str<strong>on</strong>g>of</str<strong>on</strong>g> data, and <str<strong>on</strong>g>the</str<strong>on</strong>g>reducti<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> simplicity, as <str<strong>on</strong>g>the</str<strong>on</strong>g> evaluati<strong>on</strong> envir<strong>on</strong>ment needs tobe managed.We now know what <str<strong>on</strong>g>the</str<strong>on</strong>g> characteristics and <str<strong>on</strong>g>the</str<strong>on</strong>g> advantages anddisadvantages <str<strong>on</strong>g>of</str<strong>on</strong>g> REST are.3. REST SUPPORT IN CURRENTAPPLICATIONSIf <strong>on</strong>e wants to choose some architectural style for <str<strong>on</strong>g>the</str<strong>on</strong>g>development <str<strong>on</strong>g>of</str<strong>on</strong>g> web applicati<strong>on</strong>s, it is important to know what<str<strong>on</strong>g>the</str<strong>on</strong>g> support that architectural style has in <str<strong>on</strong>g>current</str<strong>on</strong>g> availables<str<strong>on</strong>g>of</str<strong>on</strong>g>tware. Therefore below <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>current</str<strong>on</strong>g> web client s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware andweb server s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware is analyzed to see whe<str<strong>on</strong>g>the</str<strong>on</strong>g>r support forREST is present or not. If support is not present, we add if <str<strong>on</strong>g>the</str<strong>on</strong>g>authors <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware in questi<strong>on</strong> tend to support REST in <str<strong>on</strong>g>the</str<strong>on</strong>g>future.We will <strong>on</strong>ly analyze <str<strong>on</strong>g>the</str<strong>on</strong>g> s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> c<strong>on</strong>straints that RESTadds to <str<strong>on</strong>g>the</str<strong>on</strong>g> web c<strong>on</strong>cept, menti<strong>on</strong>ed in §2.1. We presume allweb client and web server s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware support <str<strong>on</strong>g>the</str<strong>on</strong>g> o<str<strong>on</strong>g>the</str<strong>on</strong>g>r threec<strong>on</strong>straints.Not all c<strong>on</strong>straints that REST adds to <str<strong>on</strong>g>the</str<strong>on</strong>g> web c<strong>on</strong>cept musthave support from ei<str<strong>on</strong>g>the</str<strong>on</strong>g>r web client or web server s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware. Forexample, <str<strong>on</strong>g>the</str<strong>on</strong>g> c<strong>on</strong>straint for <str<strong>on</strong>g>the</str<strong>on</strong>g> layered system style is largely aweb applicati<strong>on</strong> specific c<strong>on</strong>straint, which means <str<strong>on</strong>g>the</str<strong>on</strong>g> webdeveloper has to take this c<strong>on</strong>straint into account whendeveloping his web applicati<strong>on</strong>.During our analysis, we came to <str<strong>on</strong>g>the</str<strong>on</strong>g> c<strong>on</strong>clusi<strong>on</strong> that in generalmost web server s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware (e.g. Apache, IIS) has support forREST, but that most c<strong>on</strong>straints have little influence <strong>on</strong> webserver s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware itself. Instead <str<strong>on</strong>g>the</str<strong>on</strong>g> c<strong>on</strong>straints are more focused<strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> platforms that run <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> web servers, such as PHP, ASPand JSP. We <str<strong>on</strong>g>the</str<strong>on</strong>g>refore analyzed <str<strong>on</strong>g>the</str<strong>on</strong>g>se platforms in more detailin §3.1. In §3.2 we focused our analysis <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> most <str<strong>on</strong>g>of</str<strong>on</strong>g>ten-usedweb browsers.


3.1 REST support in server platformsThese platforms should support REST in two ways: server sidesupport and client side support. Server side support is supportfor incoming c<strong>on</strong>necti<strong>on</strong>s from o<str<strong>on</strong>g>the</str<strong>on</strong>g>r clients. Client side supportis support for outgoing c<strong>on</strong>necti<strong>on</strong>s to o<str<strong>on</strong>g>the</str<strong>on</strong>g>r web servers (<str<strong>on</strong>g>the</str<strong>on</strong>g>same c<strong>on</strong>necti<strong>on</strong>s that web browsers make).We analyzed <str<strong>on</strong>g>the</str<strong>on</strong>g> following platforms that have both client sideand server side support:• ASP.NET [Cas07]• Java (JSP)• Perl• PHP• Pyth<strong>on</strong>• RubyAs support for outgoing c<strong>on</strong>necti<strong>on</strong>s is not <str<strong>on</strong>g>the</str<strong>on</strong>g> same as supportfor incoming c<strong>on</strong>necti<strong>on</strong>s, we treated <str<strong>on</strong>g>the</str<strong>on</strong>g>m differently andanalyzed <str<strong>on</strong>g>the</str<strong>on</strong>g>m both.All former menti<strong>on</strong>ed platforms have both client side and serverside support for REST. This means <strong>on</strong>e can create a RESTfulweb applicati<strong>on</strong> <strong>on</strong> all before menti<strong>on</strong>ed platforms. Also <str<strong>on</strong>g>the</str<strong>on</strong>g>platforms are capable <str<strong>on</strong>g>of</str<strong>on</strong>g> starting c<strong>on</strong>necti<strong>on</strong>s to RESTfulservers.So in general <strong>on</strong>e can c<strong>on</strong>clude that <str<strong>on</strong>g>the</str<strong>on</strong>g> platforms can supportRESTful applicati<strong>on</strong>s. Still, it is more interesting to see if <str<strong>on</strong>g>the</str<strong>on</strong>g>seplatforms encourage REST, for example through some kind <str<strong>on</strong>g>of</str<strong>on</strong>g>framework or library. Therefore we also tried to find, for eachbefore menti<strong>on</strong>ed platform, if <str<strong>on</strong>g>the</str<strong>on</strong>g>re is a framework or libraryavailable that encourages <str<strong>on</strong>g>the</str<strong>on</strong>g> use <str<strong>on</strong>g>of</str<strong>on</strong>g> REST. In <str<strong>on</strong>g>the</str<strong>on</strong>g> table below,<str<strong>on</strong>g>the</str<strong>on</strong>g> results are displayed.Table 1: Frameworks that encourage <str<strong>on</strong>g>the</str<strong>on</strong>g> use <str<strong>on</strong>g>of</str<strong>on</strong>g> RESTPlatformASP.NETJava (JSP)Perl -PHPPyth<strong>on</strong>RubyFramework / LibraryASP.NET MVC [Gut07][Haa07]JAX-RS [JCP07]K<strong>on</strong>struct, T<strong>on</strong>ic, dbscript [Sem07],PHP REST SQL [Jam04]pyrest [Goo07a], Django [Goo07b]Ruby <strong>on</strong> Rails [RoR07]Micros<str<strong>on</strong>g>of</str<strong>on</strong>g>t is working <strong>on</strong> a model-view-c<strong>on</strong>troller framework,called ASP.NET MVC, although <str<strong>on</strong>g>the</str<strong>on</strong>g>re is not even a beta versi<strong>on</strong>out right now [Gut07]. For Pyth<strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g>re is <str<strong>on</strong>g>current</str<strong>on</strong>g>ly a GoogleCode project for writing a library that should support REST, butnothing has been published <strong>on</strong> that page yet [Goo07a]. Besidesthat <str<strong>on</strong>g>the</str<strong>on</strong>g>re is a REST interface for Django [Goo07b]. The JavaCommunity Process Program is working <strong>on</strong> a library (JAX-RS)that should create a Java API for RESTful web services. Theplanned date for <str<strong>on</strong>g>the</str<strong>on</strong>g> final specificati<strong>on</strong> and referenceimplementati<strong>on</strong> is March 2008 [JCP07]. Probably <str<strong>on</strong>g>the</str<strong>on</strong>g> mostfamous example <str<strong>on</strong>g>of</str<strong>on</strong>g> a framework that encourages REST is Ruby<strong>on</strong> Rails for <str<strong>on</strong>g>the</str<strong>on</strong>g> Ruby platform [Ror07]. For Perl <str<strong>on</strong>g>the</str<strong>on</strong>g>re is nolibrary or framework <strong>on</strong>e could use to write RESTfulapplicati<strong>on</strong>s, although <str<strong>on</strong>g>the</str<strong>on</strong>g>re are some examples <str<strong>on</strong>g>of</str<strong>on</strong>g> web servicesthat provide RESTful access in Perl. For PHP severalframeworks are available that encourages REST. We named afew in <str<strong>on</strong>g>the</str<strong>on</strong>g> table above, but <str<strong>on</strong>g>the</str<strong>on</strong>g>re are more [Sem07][Jam04].So although <str<strong>on</strong>g>the</str<strong>on</strong>g>re are some frameworks available, for mostplatforms frameworks or libraries are still in development.3.2 Web browsersWe use <str<strong>on</strong>g>the</str<strong>on</strong>g> latest stable versi<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>current</str<strong>on</strong>g>ly most <str<strong>on</strong>g>of</str<strong>on</strong>g>ten usedweb browsers. The most used web browsers are: InternetExplorer, Firefox, Opera and Safari [W3S07]. The latest stableversi<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g>se web browsers are Internet Explorer 7 [Mic07],Firefox 2.0.0.11 [Moz07], Opera 9.24 [Ope07] and Safari 3.04[Wik07].We analyzed <str<strong>on</strong>g>the</str<strong>on</strong>g>se browsers for <str<strong>on</strong>g>the</str<strong>on</strong>g>ir support for <str<strong>on</strong>g>the</str<strong>on</strong>g> RESTc<strong>on</strong>straints. The browsers have <str<strong>on</strong>g>the</str<strong>on</strong>g> ability to c<strong>on</strong>firm to most <str<strong>on</strong>g>of</str<strong>on</strong>g><str<strong>on</strong>g>the</str<strong>on</strong>g>se c<strong>on</strong>straints, but not all.The code-<strong>on</strong>-demand style is <str<strong>on</strong>g>of</str<strong>on</strong>g>ten <strong>on</strong>ly supported by <str<strong>on</strong>g>the</str<strong>on</strong>g> use <str<strong>on</strong>g>of</str<strong>on</strong>g>plug-ins, for example Java applets and Flash applets. Supportfor <str<strong>on</strong>g>the</str<strong>on</strong>g> layered system style is present, but this is ra<str<strong>on</strong>g>the</str<strong>on</strong>g>r evident,as it is more a c<strong>on</strong>straint that should be followed by <str<strong>on</strong>g>the</str<strong>on</strong>g> server.The self-descriptive messages are not fully supported by <str<strong>on</strong>g>the</str<strong>on</strong>g>previously menti<strong>on</strong>ed web browsers. All previously menti<strong>on</strong>edweb browsers do not support <str<strong>on</strong>g>the</str<strong>on</strong>g> DELETE and PUT HTTPmethods. This is somewhat remarkable as <str<strong>on</strong>g>the</str<strong>on</strong>g> HTTP 1.0standard described <str<strong>on</strong>g>the</str<strong>on</strong>g>se four methods already in 1996[BFI+96]. However, <str<strong>on</strong>g>the</str<strong>on</strong>g> original HTML specificati<strong>on</strong> andfollowing versi<strong>on</strong>s disallow <str<strong>on</strong>g>the</str<strong>on</strong>g> use <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> PUT and DELETEmethod [Har06]. Whe<str<strong>on</strong>g>the</str<strong>on</strong>g>r future versi<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> HTMLspecificati<strong>on</strong> allow <str<strong>on</strong>g>the</str<strong>on</strong>g> use <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> DELETE and PUT method isunknown. Still, <str<strong>on</strong>g>the</str<strong>on</strong>g> Web Forms 2.0 draft, supported by Firefox,Opera and Safari does include support for <str<strong>on</strong>g>the</str<strong>on</strong>g>se HTTP methods[Hic06], so we will probably see support in later versi<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g><str<strong>on</strong>g>the</str<strong>on</strong>g>se web browsers.We also analyzed <str<strong>on</strong>g>the</str<strong>on</strong>g> XMLHttpRequest method in Javascript(used in AJAX calls), which is supported by <str<strong>on</strong>g>the</str<strong>on</strong>g>se browsers.This method does support <str<strong>on</strong>g>the</str<strong>on</strong>g> PUT and DELETE method[ATOM07]. With XMLHttpRequest, Javascript has fullysupport for REST, although creating RESTful web applicati<strong>on</strong>sthrough <str<strong>on</strong>g>the</str<strong>on</strong>g> use <str<strong>on</strong>g>of</str<strong>on</strong>g> Javascript is a workaround that mayintroduce o<str<strong>on</strong>g>the</str<strong>on</strong>g>r problems.4. CONCLUSIONSWhat is REST?In §2.1 we explained that REST is an architectural style for <str<strong>on</strong>g>the</str<strong>on</strong>g>development <str<strong>on</strong>g>of</str<strong>on</strong>g> web applicati<strong>on</strong>s. It is based <strong>on</strong> c<strong>on</strong>straints thatare <str<strong>on</strong>g>current</str<strong>on</strong>g>ly applied to <str<strong>on</strong>g>the</str<strong>on</strong>g> web plus c<strong>on</strong>straints based <strong>on</strong> threeprinciples: a uniform interface between comp<strong>on</strong>ents, <str<strong>on</strong>g>the</str<strong>on</strong>g> layeredsystem style and <str<strong>on</strong>g>the</str<strong>on</strong>g> code-<strong>on</strong>-demand style. We also gave anexample <str<strong>on</strong>g>of</str<strong>on</strong>g> what a RESTful applicati<strong>on</strong> could look like.What are <str<strong>on</strong>g>the</str<strong>on</strong>g> advantages and disadvantages <str<strong>on</strong>g>of</str<strong>on</strong>g> using REST asan architectural style for <str<strong>on</strong>g>the</str<strong>on</strong>g> development <str<strong>on</strong>g>of</str<strong>on</strong>g> web applicati<strong>on</strong>s?In §2.2 we described <str<strong>on</strong>g>the</str<strong>on</strong>g> advantages and disadvantages <str<strong>on</strong>g>of</str<strong>on</strong>g>REST. The main advantage <str<strong>on</strong>g>of</str<strong>on</strong>g> REST is that implementati<strong>on</strong>sare no l<strong>on</strong>ger coupled to <str<strong>on</strong>g>the</str<strong>on</strong>g> service <str<strong>on</strong>g>the</str<strong>on</strong>g>y provide. Also <str<strong>on</strong>g>the</str<strong>on</strong>g> use<str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> idempotent PUT and DELETE HTTP methods are anadvantage. The layered system style reduces <str<strong>on</strong>g>the</str<strong>on</strong>g> overall systemcomplexity and <str<strong>on</strong>g>the</str<strong>on</strong>g> advantage <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> code-<strong>on</strong>-demand style is<str<strong>on</strong>g>the</str<strong>on</strong>g> ability to add features to deployed clients.The main disadvantage <str<strong>on</strong>g>of</str<strong>on</strong>g> REST is efficiency and <str<strong>on</strong>g>the</str<strong>on</strong>g> perceiveduser experience. A standardized form <str<strong>on</strong>g>of</str<strong>on</strong>g> transferringinformati<strong>on</strong> is less efficient than transferring informati<strong>on</strong> in aformat created specific for an applicati<strong>on</strong>. The use <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g>layered system style leads to increased overhead, and <str<strong>on</strong>g>the</str<strong>on</strong>g> use <str<strong>on</strong>g>of</str<strong>on</strong>g><str<strong>on</strong>g>the</str<strong>on</strong>g> code-<strong>on</strong>-demand style leads to a decrease in visibility.What web server s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware and web client s<str<strong>on</strong>g>of</str<strong>on</strong>g>twareimplementati<strong>on</strong>s support REST?In §3 we analyzed whe<str<strong>on</strong>g>the</str<strong>on</strong>g>r <str<strong>on</strong>g>current</str<strong>on</strong>g> s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware has support forREST. The platforms we tested that support client sidec<strong>on</strong>necti<strong>on</strong>s all support <str<strong>on</strong>g>the</str<strong>on</strong>g> c<strong>on</strong>straints that REST apply. The


same is valid for <str<strong>on</strong>g>the</str<strong>on</strong>g> platforms we tested that support server sidec<strong>on</strong>necti<strong>on</strong>s. This means <str<strong>on</strong>g>the</str<strong>on</strong>g> s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware that runs <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> server ingeneral has support for REST. In c<strong>on</strong>trast to <str<strong>on</strong>g>the</str<strong>on</strong>g> s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware thatruns <strong>on</strong> servers, all major web browsers do not support <str<strong>on</strong>g>the</str<strong>on</strong>g> selfdescriptivemessages c<strong>on</strong>straint <str<strong>on</strong>g>of</str<strong>on</strong>g> REST.If a web server supports RESTful web applicati<strong>on</strong>s, it does notmean <str<strong>on</strong>g>the</str<strong>on</strong>g> web applicati<strong>on</strong>s are always RESTful. For someplatforms <str<strong>on</strong>g>the</str<strong>on</strong>g>re are frameworks available that encourage <str<strong>on</strong>g>the</str<strong>on</strong>g> use<str<strong>on</strong>g>of</str<strong>on</strong>g> REST. For o<str<strong>on</strong>g>the</str<strong>on</strong>g>r platforms, <str<strong>on</strong>g>the</str<strong>on</strong>g>re are frameworks or librariesin development.What is <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>current</str<strong>on</strong>g> <str<strong>on</strong>g>status</str<strong>on</strong>g> <str<strong>on</strong>g>of</str<strong>on</strong>g> REST?The layered system style and <str<strong>on</strong>g>the</str<strong>on</strong>g> code-<strong>on</strong>-demand style thatREST uses are already present and <str<strong>on</strong>g>of</str<strong>on</strong>g>ten used in <str<strong>on</strong>g>the</str<strong>on</strong>g> modernweb. REST’s main feature, <str<strong>on</strong>g>the</str<strong>on</strong>g> uniform interface betweencomp<strong>on</strong>ents, is however not <str<strong>on</strong>g>of</str<strong>on</strong>g>ten used. Especially <str<strong>on</strong>g>the</str<strong>on</strong>g>c<strong>on</strong>straint focused <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> identificati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> resources and <str<strong>on</strong>g>the</str<strong>on</strong>g>self-descriptive messages c<strong>on</strong>straint are in <str<strong>on</strong>g>current</str<strong>on</strong>g> webapplicati<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g>ten not taken into account. Web browsers notsupporting all HTTP methods can explain <str<strong>on</strong>g>the</str<strong>on</strong>g> lack <str<strong>on</strong>g>of</str<strong>on</strong>g> using selfdescriptivemessages. Why <str<strong>on</strong>g>the</str<strong>on</strong>g> identificati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> resourcesc<strong>on</strong>straint is not applied in web applicati<strong>on</strong>s could be <str<strong>on</strong>g>the</str<strong>on</strong>g> focus<str<strong>on</strong>g>of</str<strong>on</strong>g> fur<str<strong>on</strong>g>the</str<strong>on</strong>g>r research. Fur<str<strong>on</strong>g>the</str<strong>on</strong>g>r research could also focus <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g>easiness <str<strong>on</strong>g>of</str<strong>on</strong>g> writing RESTful applicati<strong>on</strong>s in <str<strong>on</strong>g>the</str<strong>on</strong>g> beforementi<strong>on</strong>ed platforms in §3.ACKNOWLEDGMENTSFirst <str<strong>on</strong>g>of</str<strong>on</strong>g> all we would like to thank dr. ir. A. Pras for hisguidance and feedback during this research. Sec<strong>on</strong>dly, manythanks to my colleagues for <str<strong>on</strong>g>the</str<strong>on</strong>g>ir invested time and c<strong>on</strong>structivefeedback during our sessi<strong>on</strong>s toge<str<strong>on</strong>g>the</str<strong>on</strong>g>r.REFERENCES[ATOM07] ATOM Wiki, PUT and DELETE support,http://www.intertwingly.net/wiki/pie/PutDeleteSupport, last visit: November 26 th , 2007.[BHM+04] Booth, D., Haas, H., McCabe, F. et al. Web ServicesArchitecture, W3C Working Group Note, February11 th , 2004, http://www.w3.org/TR/2004/NOTE-wsarch-20040211/,last visit: September 23 rd , 2007.[Cas07][CT90][Ere04][Fie00][FPV98][Fra00]P. Castro, Overview: Micros<str<strong>on</strong>g>of</str<strong>on</strong>g>t Codename“Astoria”, Micros<str<strong>on</strong>g>of</str<strong>on</strong>g>t Corporati<strong>on</strong>, April 2007.Clark, D.D., Tennenhouse, D.L. ArchitecturalC<strong>on</strong>siderati<strong>on</strong>s for a New Generati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> Protocols,in: Proceedings <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> ACM symposium <strong>on</strong>Communicati<strong>on</strong>s architectures & protocols,Philadelphia, Pennsylvania, 1990, p. 200-208.Erenkrantz, J.R. Web Services: SOAP, UDDI, andSemantic Web, Institute for S<str<strong>on</strong>g>of</str<strong>on</strong>g>tware Research,May, 2004.Fielding, R.T. Architectural Styles and <str<strong>on</strong>g>the</str<strong>on</strong>g> Design<str<strong>on</strong>g>of</str<strong>on</strong>g> Network-based S<str<strong>on</strong>g>of</str<strong>on</strong>g>tware Architectures,University <str<strong>on</strong>g>of</str<strong>on</strong>g> California, Irvine, 2000.Fuggetta, A., Picco, G.P., Vigna, G. Understandingcode mobility, in: IEEE Transacti<strong>on</strong>s <strong>on</strong> S<str<strong>on</strong>g>of</str<strong>on</strong>g>twareEngineering, 24:5, May 1998, p. 342-361.Fraternali, P. Tools and Approaches for DevelopingData-Intensive Web Applicati<strong>on</strong>s: A Survey, in:ACM Computing Surveys (CSUR), 31:3, September,1999, p. 227-263.[Goo07a] Google Code, Pyth<strong>on</strong> REST library,http://code.google.com/p/pyrest/, last visit:December 17 th , 2007.[Goo07b] Google Code, Django REST interface,http://code.google.com/p/django-rest-interface/, lastvisit: December 17 th , 2007.[Gut07][Haa07]Guthrie, S. ASP.NET MVC Framework, October,14 th , 2007,http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx, last visit: December17 th , 2007.Haack, P. The REST-Like aspect <str<strong>on</strong>g>of</str<strong>on</strong>g> ASP.NET MVC,November 10 th , 2007,http://haacked.com/archive/2007/11/10/<str<strong>on</strong>g>the</str<strong>on</strong>g>-restlike-aspect-<str<strong>on</strong>g>of</str<strong>on</strong>g>-asp.net-mvc.aspx,last visit:December 17 th , 2007.[Har06] Harold, E. Why REST Failed, October 26 th , 2006,http://cafe.elharo.com/web/why-rest-failed/, lastvisit: October 22 nd , 2007.[Hic06] Hicks<strong>on</strong>, I. Web Forms 2.0, October 12 th , 2006,http://www.whatwg.org/specs/web-forms/<str<strong>on</strong>g>current</str<strong>on</strong>g>work/,last visit: October 22 nd , 2007.[Jam04] James, P. PHP REST SQL, 2004,http://phprestsql.sourceforge.net/, last visit:December 17 th , 2007.[JCP07][Mic07]Java Community Process, Java Specificati<strong>on</strong>Request 311: JAX-RS: The Java API for RESTfulWeb Services, April 5 th , 2007,http://jcp.org/en/jsr/detail?id=311, last visit:December 17 th , 2007.Micros<str<strong>on</strong>g>of</str<strong>on</strong>g>t, Internet Explorer,http://www.micros<str<strong>on</strong>g>of</str<strong>on</strong>g>t.com/windows/products/winfamily/ie/default.mspx, last visit: December 4 th , 2007.[MNS04] zur Muehlen, M., Nickers<strong>on</strong>, J.V., Swens<strong>on</strong>, K.D.Developing web services choreography standards -<str<strong>on</strong>g>the</str<strong>on</strong>g> case <str<strong>on</strong>g>of</str<strong>on</strong>g> REST vs. SOAP, Elsevier, 2004.[Moz07][New05][Ope07][Orc06][Prz06][RoR07][Sem07][Sze06]Mozilla, Mozilla Firefox 2.0.0.11 Release Notes,November 30 th , 2007, http://www.mozilla.com/en-US/firefox/2.0.0.11/releasenotes/, last visit:December 4 th , 2007.Newmarch, J. A. RESTful Approach: Clean UPnPwithout SOAP, in: C<strong>on</strong>sumer Communicati<strong>on</strong>s andNetworking <str<strong>on</strong>g>C<strong>on</strong>ference</str<strong>on</strong>g> (CCNC), 2005. IEEE,January, 2005, p. 134-138.Opera, Opera Browser,http://www.opera.com/products/desktop/, last visit:December 4 th , 2007.Orchard, D., Hypermedia as <str<strong>on</strong>g>the</str<strong>on</strong>g> engine <str<strong>on</strong>g>of</str<strong>on</strong>g> statetransfer, March 31 st , 2006,http://www.pacificspirit.com/2006/03/31/hypermedia_as_<str<strong>on</strong>g>the</str<strong>on</strong>g>_engine_<str<strong>on</strong>g>of</str<strong>on</strong>g>_state_transfer, last visit:December 4 th , 2007.Przybilski, M. REST – REpresentati<strong>on</strong>al StateTransfer, University <str<strong>on</strong>g>of</str<strong>on</strong>g> Helsinki, 2006.Ruby <strong>on</strong> Rails, Ruby <strong>on</strong> Rails,http://www.ruby<strong>on</strong>rails.org/, last visit: December17 th , 2007.SemWebDev Weblog, PHP RESTful Frameworks,July 2 nd , 2007,http://semwebdev.keithalexander.co.uk/blog/posts/rest-frameworks-php, last visit: December 17 th , 2007.Szepielak, D. REST-Based Service OrientedArchitecture for Dynamically Integrated


[Tat06]Informati<strong>on</strong> Systems, PhD Symposium at ICSOC,2006.Tate, B. Crossing borders: REST <strong>on</strong> Rails, August1 st , 2006,http://www.ibm.com/developerworks/java/library/jcb08016/,last visit: September 30 th , 2007.[W3S07] W3Schools, Browser Statistics, October 2007,http://www.w3schools.com/browsers/browsers_stats.asp, last visit: December 4 th , 2007.[Wik07]Wikipedia, Safari (web browser),http://en.wikipedia.org/wiki/Safari_(web_browser),last visit: December 4 th , 2007.[Wil07]P. Williams, Hypermedia as <str<strong>on</strong>g>the</str<strong>on</strong>g> engine <str<strong>on</strong>g>of</str<strong>on</strong>g>applicati<strong>on</strong> state, May 23 rd , 2007,http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-<str<strong>on</strong>g>the</str<strong>on</strong>g>-engine-<str<strong>on</strong>g>of</str<strong>on</strong>g>-applicati<strong>on</strong>-state/, last visit:December 4 th , 2007.[WVS+99] Wolman, A., Voelker, G., Sharman, N. et al.Organizati<strong>on</strong>al-Based <str<strong>on</strong>g>An</str<strong>on</strong>g>alysis <str<strong>on</strong>g>of</str<strong>on</strong>g> Web-ObjectSharing and Caching, in: Proceedings <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> 2 ndc<strong>on</strong>ference <strong>on</strong> USENIX Symposium <strong>on</strong> InternetTechnologies and Systems, Boulder, Colorado,October, 1999.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!