Synopses & Reviews
Domain services are the foundation for service oriented architectures: the crucial building blocks upon which all enterprise services are built. Service Design Patterns is the complete practitioner’s catalog of proven patterns for implementing efficient, robust domain services. Using this book’s patterns, architects and other IT professionals can overcome the most common technical obstacles to success with SOA, and leverage all the value SOA is intended to provide.
Leading SOA architect Rob Daigneau begins by reviewing SOA concepts, illuminating the distinctions between enterprise and domain services, and identifying key relationships between domain services and other pattern groups. Next, using concrete Java and C# code examples, he introduces each essential pattern for creating and delivering domain services, offering a complete vocabulary of easy-to-adapt design solutions.
This book builds on the field’s best work in enterprise patterns. Daigneau expands upon Fowler’s valuable Service Layer concept (covered in Patterns of Enterprise Application Architecture) and shows how domain services can be used with Enterprise Integration Patterns (made famous by Hohpe and Woolf). Coverage includes
- Understanding the primary API styles used by web services, and selecting the right approaches for each requirement
- Mastering foundational patterns for all client/service interactions and data exchange conversations
- Identifying common Service Layer entities for efficiently managing web requests and responses and decoupling clients from underlying systems
- Efficiently implementing services, ranging from coordination with Object Relational Mappers (ORM) to direct legacy API calls
- Providing for generic, reusable SOA infrastructure tasks
- Implementing versioning to keep clients working properly as they evolve
- Augmenting services to serve new requirements while avoiding major new releases
- Accurately setting stakeholders’ expectations for major SOA initiatives
This book is an invaluable resource for all architects and developers working with web services or SOA. It is equally valuable to enterprise IT professionals, as well as those creating commercial, open source, or SaaS/cloud software for external use.
Synopsis
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.
About the Author
Robert Daigneau is Chief Architect for SynXis, the leader in distribution technology and services for the hotel industry. Prior to joining SynXis Rob served as Director of Application Architecture for Monster.com, one of the most visited web sites in the world. He has more than 18 years' experience designing and implementing enterprise-class applications for a broad array of industries. A frequent conference speaker, he hosts www.DesignPatternsFor.Net.
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
RPC API 18
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