Tutorial T9F - From SOA to REST - Designing and Implementing RESTful Services

Cesare Pautasso, Faculty of Informatics, University of Lugano

Erik Wilde, School of Information, UC Berkeley


Recent technology trends in Web services indicate that a solution eliminating the perceived complexity of the WS-* standard technology stack may be in sight: advocates of Representational State Transfer (REST) have come to believe that their ideas explaining why the World Wide Web works are just as applicable to solve enterprise application integration problems and to radically simplify the plumbing required to implement a Service-Oriented Architecture (SOA). In this tutorial we give an introduction to the REST architectural style as the foundation for RESTful Web services. The tutorial starts from the basic design principles of REST and how they are applied to service oriented computing.

Serviceorientation concentrates on identifying self-contained units of functionality, which should then be exposed as easily reusable and repurposable services. This tutorial focuses not on the identification of those units, but on how to design the services representing them. We explain how decisions on the SOA level already shape the architectural style that will be used for the eventual IT architecture, and how the SOA process itself has to be controlled to yield services which can then be implemented RESTfully. We do not claim that REST is the only architectural style that can be used for SOA design, but we do argue that it does have distinct advantages for loosely coupled services and massive scale, and that any SOA approach already has to be specifically RESTful on the business level to yield meaningful input for IT architecture design. To do so, we include concrete examples, showing how to consume RESTful Web services and how to build them (both from a technology and methodology point of view). The tutorial also includes a detailed comparison to the traditional WS-* technology stack, which helps to quantify the *perceived* complexity differences between WS-* and REST. On the one hand, the goal is to help technical decision makers to assess the benefits and limitations of the two technology frameworks objectively and to select the one that best fits their needs. On the other hand, we also aim to highlight some open research problems related to this emerging technology area.


Cesare Pautasso is assistant professor in the new Faculty of Informatics at the University of Lugano, Switzerland. Previously he was a researcher at the IBM Zurich Research Lab and a senior researcher at ETH Zurich. His research focuses on building experimental systems to explore the intersection of model-driven software composition techniques, business process modeling languages. Recently he has developed an interest in Web 2.0 Mashups. He is the lead architect of JOpera, a powerful rapid service composition tool for Eclipse. His teaching and training activities both in academia and in industry cover advanced topics related to Web Development, Middleware, Service Oriented Architectures and emerging Web services technologies. For more information, visit http://www.pautasso.info

Erik Wilde is adjunct professor at UC Berkeley’s School of Information and is also serving as the Technical Director of the school’s Information and Services Design (ISD) program. His general area of interest are open information systems. His main expertise are Web technologies and, more specifically, XML-related technologies. In his role as organizer of the WWW2008 Location and the Web (LocWeb) workshop and the follow-up LocWeb 2009 workshop at CHI2009, another of his core interests is how to turn theWeb into a location-aware system. This goal has a lot of overlap with services in general, because the goal is to implement that transition in a way which allows Webscale location-aware applications. Erik has also worked on how to expose linked information in a lightweight way, and on the general question of how to better integrate the Web perspective into how Web-based applications are built. http://dret.net/netdret/