Service-oriented architectures (SOAs) have been around for a while now, but they have recently staged a comeback thanks to the surge in mobile application development. Why is this? In an SOA, the bulk of the business logic is conducted in the cloud; because of this, SOAs offer one of the most cost-effective solutions to the problem of diversity in mobile systems. Thin clients can be developed for multiple platforms to present what the service in the cloud offers.
Representational state transfer (REST) is a lightweight protocol based on the hypertext transfer protocol (HTTP) that provides loose coupling between the service and the client consuming the service. Consequently, REST has become the preferred choice for delivering the results of cloud-based services in SOAs.
This book, according to its back cover, “is the first comprehensive tutorial and reference for designing and building RESTful services as part of service-oriented solutions.” The introduction, however, states that it is “neither a REST tutorial, nor a comprehensive guide to learning SOA or service orientation.” In spite of this apparent contradiction, the book aspires to cover design aspects of service-oriented solutions and how such solutions are influenced by the REST paradigm. It uses two real-life case studies to illustrate design choices and solutions.
The 16 chapters are grouped into five parts, followed by seven appendices. The examples from the case studies are spread throughout the book to illustrate relevant concepts. The first chapter is an overview and the second chapter describes the background of the two case studies. The next three chapters, which form Part 1, define the terminology used in SOAs and briefly outline the constraints posed by the REST paradigm.
The second part of the book is an overview of how SOA works in conjunction with REST. In particular, it describes how service contracts are expressed in terms of REST.
The third part describes service-oriented analysis and design and workflow logic as used with REST. It details the best use of HTTP headers and response codes, as well as the uniform resource locators (URLs) within the design.
Part 4 covers the key aspects of service composition with REST. Chapters in this part discuss how statelessness affects service composition and how to take statelessness into account when designing REST-friendly transactions. The two case studies are used to exemplify the important points.
Part 5 presents supplemental material, including using REST-inspired and other design patterns for SOAs, designing solutions to provide compatibility between different versions of services and clients, and developing uniform contract profiles.
The remaining third of the book is taken up with the seven appendices, which include the constraints of REST, references and principles of service orientation and design patterns, and a discussion on the key concepts of state, and conclude with an annotated version of the SOA manifesto.
Overall, the book is well worth reading. The key positive aspect of the book is its methodological treatment of the analysis and design of RESTful service orientation. Unfortunately, it lacks any discussion of the performance and security of services and federated services.
The authors state that their intended audience includes “[information technology, IT] architects, developers, and any practitioner seeking to use SOA and REST together.” I would say that the book is suitable as an introductory text for software engineering in service-oriented architectures.
More reviews about this item: Amazon