Product Cover Image

Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services

By Robert Daigneau

Published by Addison-Wesley Professional

Published Date: Oct 28, 2011

More Product Info


Web services have been used for many years. In this time, developers and architects have encountered a number of recurring design challenges related to their usage, and have learned that certain service design approaches work better than others to solve certain problems.


In Service Design Patterns, Rob Daigneau codifies proven design solutions for web services that follow the REST architectural style or leverage the SOAP/WSDL specifications. This catalogue identifies the fundamental topics in web service design and lists the common design patterns for each topic. All patterns identify the context in which they may be used, explain the constituent design elements, and explore the relative strengths and trade-offs. Code examples are provided to help you better understand how the patterns work but are kept general so that you can see how the solutions may be applied to disparate technologies that will inevitably change in the years to come.


This book will help readers answer the following questions:

  • How do you create a web service API, what are the common API styles, and when should a particular style be used?
  • How can clients and web services communicate, and what are the foundations for creating complex conversations in which multiple parties exchange data over extended periods of time?
  • What are the options for implementing web service logic, and when should a particular approach be used?
  • How can clients become less coupled to the underlying systems used by a service?
  • How can information about a web service be discovered?
  • How can generic functions like authentication, validation, caching, and logging be supported on the client or service?
  • What changes to a service cause clients to break?
  • What are the common ways to version a service? How can web services be designed to support the continuing evolution of business logic without forcing clients to constantly upgrade? 

This book is an invaluable resource for enterprise architects, solution architects, and developers who use web services to create enterprise IT applications, commercial or open source products, and Software as a Service (SaaS) products that leverage emerging Cloud platforms.

Table of Contents

Foreword by Martin Fowler xi

Foreword by Ian Robinson xiii

Preface xv

Acknowledgments xxiii

About the Author xxv


Chapter 1: From Objects to Web Services 1

What Are Web Services? 2

From Local Objects to Distributed Objects 3

Why Use Web Services? 6

Web Service Considerations and Alternatives 7

Services and the Promise of Loose Coupling 9

What about SOA? 10

Summary 11


Chapter 2: Web Service API Styles 13

Introduction 13

Design Considerations for Web Service APIs 14


Message API 27

Resource API 38


Chapter 3: Client-Service Interactions 51

Introduction 51

Request/Response 54

Request/Acknowledge 59

Media Type Negotiation 70

Linked Service 77


Chapter 4: Request and Response Management 83

Introduction 83

Service Controller 85

Data Transfer Object 94

Request Mapper 109

Response Mapper 122


Chapter 5: Web Service Implementation Styles 131

Introduction 131

Design Considerations for Web Service Implementation 132

Transaction Script 134

Datasource Adapter 137

Operation Script 144

Command Invoker 149

Workflow Connector 156


Chapter 6: Web Service Infrastructures 165

Introduction 165

Service Connector 168

Service Descriptor 175

Asynchronous Response Handler 184

Service Interceptor 195

Idempotent Retry 206

A Quick Review of SOA Infrastructure Patterns 220


Chapter 7: Web Service Evolution 227

Introduction 227

What Causes Breaking Changes? 228

Common Versioning Strategies 232

Single-Message Argument 234

Dataset Amendment 237

Tolerant Reader 243

Consumer-Driven Contracts 250

How the Patterns Promote or Hinder Service Evolution 264


Appendix: Reference to External Patterns 269


Glossary 277

Bibliography 297

Index 303