Preface
Chapter 1: Introduction
1.1 About this Book
Who this Book is For
What this Book Does Not Cover
1.2 Recommended Reading
1.3 How this Book is Organized
Part I: Fundamentals
Part II: RESTful Service-Orientation
Part III: Service-Oriented Analysis and Design with REST
Part IV: Service Composition with REST
Part V: Supplemental
Part VI: Appendices
1.4 Conventions
Use of the Color Red
Design Constraints, Principles, and Patterns: Page References and Capitalization
Design Goals: Capitalization
Symbol Legend
1.5 Additional Information
Updates, Errata, and Resources (www.servicetechbooks.com)
Master Glossary (www.soaglossary.com)
Service-Orientation (www.serviceorientation.com)
What Is REST? (www.whatisrest.com)
Referenced Specifications (www.servicetechspecs.com)
The Service Technology Magazine (www.servicetechmag.com)
SOASchool.com® SOA Certified Professional (SOACP)
CloudSchool.comâ„¢ Cloud Certified Professional (CCP)
Notification Service
Chapter 2: Case Study Background
2.1 How Case Studies Are Used
2.2 Case Study Background #1: Midwest University Association (MUA)
History
IT Environment
Business Goals and Obstacles
1. Build Reusable Business Services
2. Consolidate Systems and Information
3. Improve Channel Experience
4. Build Services Infrastructure
2.3 Case Study Background #2: KioskEtc Co
History
IT Environment
Business Goals and Obstacles
Part I. Fundamentals
Chapter 3: Introduction to Services
3.1 Service Terminology
Service
Service Contract
Service Capability
Service Consumer
Service Agent
Service Composition
3.2 Service Terminology Context
Services and REST
Services and SOA
REST Services and SOA
Chapter 4: SOA Terminology and Concepts
4.1 Basic Terminology and Concepts
Service-Oriented Computing
Service-Orientation
Service-Oriented Architecture (SOA)
SOA Manifesto
Services
Cloud Computing
IT Resources
Service Models
Agnostic Logic and Non-Agnostic Logic
Service Inventory
Service Portfolio
Service Candidate
Service Contract
Service-Related Granularity
Service Profiles
SOA Design Patterns
4.2 Further Reading
4.3 Case Study Example
Chapter 5: REST Constraints and Goals
5.1 REST Constraints
Client-Server
Stateless
Cache
Interface/Uniform Contract
Layered System
Code-On-Demand
5.2 Goals of the REST Architectural Style
Performance
Scalability
Simplicity
Modifiability
Visibility
Portability
Reliability
Case Study Example
Part II. RESTFUL SERVICE-ORIENTATION
Chapter 6: Service Contracts with REST
6.1 Uniform Contract Elements
Resource Identifier Syntax (and Resources)
URIs (and URLs and URNs)
Resource Identifiers and REST Services
Methods
Media Types
6.2 REST Service Capabilities and REST Service Contracts
6.3 REST Service Contracts vs. Non-REST Service Contracts
Non-REST Service with Custom Service Contract
REST Service with Uniform Contract
HTTP Messaging vs. SOAP Messaging
REST Service Contracts with WSDL?
6.4 The Role of Hypermedia
URI Templates and Resource Queries
6.5 REST Service Contracts and Late Binding
Case Study Example
Chapter 7: Service-Orientation with REST
7.1 “SOA vs. REST” or “SOA + REST”?
7.2 Design Goals
Increased Intrinsic Interoperability
Increased Federation
Increased Vendor Diversity Options
Increased Business and Technology Alignment
Increased ROI
Increased Organizational Agility
Reduced IT Burden
Common Goals
7.3 Design Principles and Constraints
Standardized Service Contract
Service Loose Coupling
Service Abstraction
Service Reusability
Service Autonomy
Service Statelessness
Service Discoverability
Service Composability
Common Conflicts
Stateful Interactions
Service-Specific Contract Details
Case Study Example
Part III. SERVICE-ORIENTED ANALYSIS AND DESIGN WITH REST
Chapter 8: Mainstream SOA Methodology and REST
8.1 Service Inventory Analysis
8.2 Service-Oriented Analysis (Service Modeling)
8.3 Service-Oriented Design (Service Contract)
8.4 Service Logic Design
8.5 Service Discovery
8.6 Service Versioning and Retirement
Chapter 9: Analysis and Service Modeling with REST
9.1 Uniform Contract Modeling and REST Service Inventory Modeling
REST Constraints and Uniform Contract Modeling
REST Service Centralization and Normalization
9.2 REST Service Modeling
REST Service Capability Granularity
Resources vs. Entities
REST Service Modeling Process
Step 1: Decompose Business Process (into Granular Actions)
Case Study Example
Case Study Example
Step 2: Filter Out Unsuitable Actions
Case Study Example
Step 3: Identify Agnostic Service Candidates
Case Study Example
Event Service Candidate (Entity)
Award Service Candidate (Entity)
Student Service Candidate (Entity)
Notification Service Candidate (Utility)
Document Service Candidate (Utility)
Step 4: Identify Process-Specific Logic
Case Study Example
Coner Student Award Service Candidate (Task)
Step 5: Identify Resources
Case Study Example
Step 6: Associate Service Capabilities with Resources and Methods
Case Study Example
Confer Student Award Service Candidate (Task)
Event Service Candidate (Entity)
Award Service Candidate (Entity)
Student Service Candidate (Entity)
Notification Service Candidate (Utility)
Document Service Candidate (Utility)
Step 7: Apply Service-Orientation
Case Study Example
Step 8: Identify Candidate Service Compositions
Case Study Example
Step 9: Analyze Processing Requirements
Step 10: Define Utility Service Candidates
Step 11: Associate Utility-Centric Service Capabilities with Resources and Methods
Step 12: Apply Service-Orientation
Step 13: Revise Candidate Service Compositions
Step 14: Revise Resource Definitions
Step 15: Revise Capability Candidate Grouping
Additional Considerations
Chapter 10: Service-Oriented Design with REST
10.1 Uniform Contract Design Considerations
Designing and Standardizing Methods
Designing and Standardizing HTTP Headers
Designing and Standardizing HTTP Response Codes
Customizing Response Codes
Designing Media Types
Designing Schemas for Media Types
Service-Specific XML Schemas
10.2 REST Service Contract Design
Designing Services Based on Service Models
Task Services
Entity Services
Utility Services
Designing and Standardizing Resource Identifiers
Service Names in Resource Identifiers
Other URI Components
Resource Identifier Overlap
Resource Identifier Design Guidelines
Designing with and Standardizing REST Constraints
Stateless
Cache
Uniform Contract
Layered System
Case Study Example
Confer Student Award Service Contract (Task)
Event Service Contract (Entity)
Award Service Contract (Entity)
Student Transcript Service Contract (Entity)
Notification and Document Service Contracts (Utility)
10.3 Complex Method Design
Stateless Complex Methods
Fetch Method
Store Method
Delta Method
Async Method
Stateful Complex Methods
Trans Method
PubSub Method
Case Study Example
OptLock Complex Method
PesLock Complex Method
Part IV. SERVICE COMPOSITION WITH REST
Chapter 11: Fundamental Service Composition with REST
11.1 Service Composition Terminology
Compositions and Composition Instances
Composition Members and Controllers
Service Compositions Are Actually Service Capability Compositions
Designated Controllers
Collective Composability
Service Activities
Composition Initiators
Point-to-Point Data Exchanges and Compositions
11.2 Service Composition Design Influences
Service-Orientation Principles and Composition Design
Standardized Service Contract and the Uniform Contract
Service Loose Coupling and the Uniform Contract
Service Abstraction and Composition Information Hiding
Service Reusability for Repeatable Composition
Service Autonomy and Composition Autonomy Loss
Service Statelessness and Stateless
Service Composability and Service-Orientation
REST Constraints and Composition Design
Stateless and Stateful Compositions
Cache and Layered System
Code-on-Demand and Composition Logic Deferral
Uniform Contract and Composition Coupling
11.3 Composition Hierarchies and Layers
Task Services Composing Entity Services
Entity Services Composing Entity Services
11.4 REST Service Composition Design Considerations
Synchronous and Asynchronous Service Compositions
Idempotent Service Activities
Lingering Composition State
Binding Between Composition Participants
11.5 A Step-by-Step Service Activity
1. Request to Purchase a Ticket
2. Verify the Requested Flight Details
3. Confirm a Seat on the Flight
4. Generate an Invoice
5. Create the Ticket
Summary
Chapter 12: Advanced Service Composition with REST
12.1 Service Compositions and Stateless
Composition Design with Service Statelessness
Composition Design with Stateless
12.2 Cross-Service Transactions with REST
REST-Friendly Atomic Service Transactions
Phase 1: Initialize
Phase 2: Reserve
Phase 3A: Confirm
Phase 3B: Cancel
Phase 3C: Timeout
Compliance with Stateless
Additional Considerations
REST-Friendly Compensating Service Transactions
Phase 1: Begin
Phase 2: Do
Phase 3A: Complete
Phase 3B: Undo
Phase 3C: Timeout
Compliance with Stateless
Additional Considerations
Non-REST-Friendly Atomic Service Transactions
Phase 1: Initialize
Phase 2: Do
Phase 3: Prepare
Phase 4A: Commit
Phase 4B: Rollback
Phase 4C: Timeout
Compliance with Stateless
Additional Considerations
12.3 Event-Driven Interactions with REST
Event-Driven Messaging
Compliance with Stateless
Message Polling
Compliance with Stateless
12.4 Service Composition with Dynamic Binding and Logic Deferral
Denormalized Capabilities Across Normalized Services
Composition Deepening
Dynamically Binding with Common Properties
Runtime Logic Deferral
12.5 Service Composition Across Service Inventories
Inventory Endpoint with REST
Dynamic Binding Between Service Inventories with Baseline Standardization
Chapter 13: Service Composition with REST Case Study
13.1 Revisiting the Confer Student Award Process
13.2 Application Submission and Task Service Invocation
13.3 Confer Student Award Service Composition Instance (Pre-Review Service Activity View)
Step 1: Composition Initiator to Confer Student Award Task Service (A)
Step 2: Confer Student Award Task Service to Event Entity Service (B)
Step 3: Event Entity Service to Confer Student Award Task Service (B)
Step 4: Confer Student Award Task Service to Award Entity Service (E)
Step 5: Award Entity Service to Confer Student Award Task Service (E)
Step 6: Confer Student Award Task Service to Award Entity Service (E)
Step 7: Award Entity Service to Confer Student Award Task Service (E)
Step 8: Confer Student Award Task Service to Student Entity Service (F)
Step 9: Student Entity Service to Confer Student Award Task Service (F)
Step 10: Confer Student Award Task Service to Student Transcript Entity Service (F)
Step 11: Student Transcript Entity Service to Confer Student Award Task Service (F)
Step 12: Confer Student Award Task Service to Composition Initiator
13.4 Review of Pending Applications and Task Service Invocation
Confer Student Award Service Composition Instance (Post-Review Service Activity View)
Step 1: Composition Initiator to Confer Student Award Task Service (L)
Step 2: Confer Student Award Task Service to Notification Utility Service (N)
Step 3: Notification Utility Service to Student Entity Service (N)
Step 4: Student Entity Service to Notification Utility Service (N)
Step 5: Notification Utility Service to Confer Student Award Task Service (N)
Intermediate Step: Confer Student Award Task Service to Transaction Coordinator (P, Q)
Intermediate Step: Transaction Coordinator to Confer Student Award Task Service (P, Q)
Step 6: Confer Student Award Task Service to Conferral Entity Service (P)
Intermediate Step: Conferral Entity Service to Transaction Coordinator (P)
Intermediate Step: Transaction Coordinator to Conferral Entity Service
Step 7: Conferral Entity Service to Confer Student Award Task Service (Q)
Step 8: Confer Student Award Task Service to Student Manuscript Entity Service (Q)
Intermediate Step: Student Transcript Entity Service to Transaction Controller (Q)
Intermediate Step: Transaction Controller to Student Transcript Entity Service (Q)
Step 9: Student Transcript Entity Service to Confer Student Award Task Service (Q)
Intermediate Step: Confer Student Award Task Service to Transaction Coordinator (P, Q)
Intermediate Step: Transaction Coordinator to Confer Student Award Task Service (P, Q)
Step 10: Confer Student Award Task Service to Composition Initiator
PART V: SUPPLEMENTAL
Chapter 14: Design Patterns for SOA with REST
14.1 REST-Inspired SOA Design Patterns
Content Negotiation
Related Patterns
Related Service-Oriented Computing Goals
Endpoint Redirection
Related Patterns
Related Service-Oriented Computing Goals
Entity Linking
Related Patterns
Related Service-Oriented Computing Goals
Idempotent Capability
Related Patterns
Related Service-Oriented Computing Goals
Lightweight Endpoint
Related Patterns
Related Service-Oriented Computing Goals
Reusable Contract
Related Patterns
Related Service-Oriented Computing Goals
Uniform Contract
14.2 Other Relevant SOA Design Patterns
Contract Centralization
Contract Denormalization
Domain Inventory
Schema Centralization
State Messaging
Validation Abstraction
Chapter 15: Service Versioning with REST
15.1 Versioning Basics
REST Service Contract Compatibility
Compatible and Incompatible Changes
Uniform Contract Method Compatibility
Uniform Contract Media Type Compatibility
Media Types and Forwards-compatibility
15.2 Version Identifiers
Using Version Identifiers
Version Identifiers and the Uniform Contract
Chapter 16: Uniform Contract Profiles
16.1 Uniform Contract Profile Template
Uniform-Level Structure
Method Profile Structure
Media Type Profile Structure
16.2 REST Service Profile Considerations
16.3 Case Study Example
Uniform-Level Structure: MUAUC
Method Profile Structure: Fetch
Response Code Handling for GET Methods in Fetch Method
Method Profile Structure: Store
Response Code Handling for PUT and DELETE Methods in Store Method
Method Profile Structure: GET
Method Profile Structure: PUT
Media Type Profile Structure: Invoice (application/vnd.edu.mua.invoice+xml)
PART VI: APPENDICES
Appendix A: Case Study Conclusion
Appendix B: Industry Standards Supporting the Web
The Internet Engineering Taskforce (IETF)
The World Wide Web Consortium
Other Web Standards
Appendix C: REST Constraints Reference
Related Excerpts from Fielding’s Dissertation
Related Excerpts from Fielding’s Dissertation
Related Excerpts from Fielding’s Dissertation
Related Excerpts from Fielding’s Dissertation
Related Excerpts from Fielding’s Dissertation
Related Excerpts from Fielding’s Dissertation
Appendix D: Service-Orientation Principles Reference
Appendix E: SOA Design Patterns Reference
Appendix F: SOA Design Patterns Reference
State Management Explained
State Management in Abstract
Origins of State Management
Deferral vs. Delegation
Types of State
Active and Passive
Stateless and Stateful
Session and Context Data
Measuring Service Statelessness
Appendix G: The Annotated SOA Manifesto
The Annotated SOA Manifesto
Appendix H: Additional Resources
www.whatisrest.com
Bibliography and References
Resources
www.servicetechbooks.com
www.soaschool.com, www.cloudschool.com
www.servicetechmag.com
www.soaglossary.com
www.servicetechspecs.com
www.soapatterns.org, www.cloudpatterns.org
www.serviceorientation.com, www.soaprinciples.com, www.whatissoa.com
www.servicetechsymposium.com
About the Authors
Thomas Erl
Benjamin Carlyle
Cesare Pautasso
Raj Balasubramanian
About the Pattern Co-Contributors
David Booth, Ph.D.
Herbjörn Wilhelmsen
About the Foreword Contributors
Stefan Tilkov