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

Index
SOA with REST: Principles, Patterns & Constraints for Building Enterprise Solutions with REST
SOA with REST: Principles, Patterns & Constraints for Building Enterprise Solutions with REST
by Raj Balasubramanian, Benjamin Carlyle, Thomas Erl, Cesare Pautasso
Foreword by Stefan Tilkov