You are previewing Web Service Contract Design and Versioning for SOA.
O'Reilly logo
Web Service Contract Design and Versioning for SOA

Book Description

The Ultimate Guide for Designing and Governing Web Service Contracts

For Web services to succeed as part of SOA, they require balanced, effective technical contracts that enable services to be evolved and repeatedly reused for years to come. Now, a team of industry experts presents the first end-to-end guide to designing and governing Web service contracts. Writing for developers, architects, governance specialists, and other IT professionals, the authors cover the following areas:

Understanding Web Service Contract Technologies

Initial chapters and ongoing supplementary content help even the most inexperienced professional get up to speed on how all of the different technologies and design considerations relate to the creation of Web service contracts. For example, a visual anatomy of a Web service contract documented from logical and physical perspectives is provided, along with a chapter dedicated to describing namespaces in plain English. The book is further equipped with numerous case study examples and many illustrations.

Fundamental and Advanced WSDL

Tutorial coverage of WSDL 1.1 and 2.0 and detailed descriptions of their differences is followed by numerous advanced WSDL topics and design techniques, including extreme loose coupling, modularization options, use of extensibility elements, asynchrony, message dispatch, service instance identification, non-SOAP HTTP binding, and WS-BPEL extensions. Also explained is how WSDL definitions are shaped by key SOA design patterns.

Fundamental and Advanced XML Schema

XML Schema basics are covered within the context of Web services and SOA, after which advanced XML Schema chapters delve into a variety of specialized message design considerations and techniques, including the use of wildcards, reusability of schemas and schema fragments, type inheritance and composition, CRUD-style message design, and combining industry and custom schemas.

Fundamental and Advanced WS-Policy

Topics, such as Policy Expression Structure, Composite Policies, Operator Composition Rules, and Policy Attachment establish a foundation upon which more advanced topics, such as policy reusability and centralization, nested, parameterized, and ignorable assertions are covered, along with an exploration of creating concurrent policy-enabled contracts and designing custom policy assertions and vocabularies.

Fundamental Message Design with SOAP
A broad range of message design-related topics are covered, including SOAP message structures, SOAP nodes and roles, SOAP faults, designing custom SOAP headers and working with industry-standard SOAP headers.

Advanced Message Design with WS-Addressing

The art of message design is taken to a new level with in-depth descriptions of WS-Addressing endpoint references (EPRs) and MAP headers and an exploration of how they are applied via SOA design patterns. Also covered are WSDL binding considerations, related MEP rules, WS-Addressing policy assertions, and detailed coverage of how WS-Addressing relates to SOAP Action values.

Advanced Message Design with MTOM, and SwA

Developing SOAP messages capable of transporting large documents or binary content is explored with a documentation of the MTOM packaging and serialization framework (including MTOM-related policy assertions), together with the SOAP with Attachments (SwA) standard and the related WS-I Attachments Profile.

Versioning Techniques and Strategies

Fundamental versioning theory starts off a series of chapters that dive into a variety of versioning techniques based on proven SOA design patterns including backward and forward compatibility, version identification strategies, service termination, policy versioning, validation by projection, concurrency control, partial understanding, and versioning with and without wildcards.

Web Service Contracts and SOA

The constant focus of this book is on the design and versioning of Web service contracts in support of SOA and service-orientation. Relevant SOA design principles and design patterns are periodically discussed to demonstrate how specific Web service technologies can be applied and further optimized. Furthermore, several of the advanced chapters provide expert techniques for designing Web service contracts while taking SOA governance considerations into account.

About the Web Sites

www.soabooks.com supplements this book with a variety of resources, including a diagram symbol legend, glossary, supplementary articles, and source code available for download.

www.soaspecs.com provides further support by establishing a descriptive portal to XML and Web services specifications referenced in all of Erl’s Service-Oriented Architecture books.

Foreword

Preface

Chapter 1: Introduction

Chapter 2: Case Study Background

Part I: Fundamental Service Contract Design

Chapter 3: SOA Fundamentals and Web Service Contracts

Chapter 4: Anatomy of a Web Service Contract

Chapter 5: A Plain English Guide to Namespaces

Chapter 6: Fundamental XML Schema: Types and Message Structure Basics

Chapter 7: Fundamental WSDL Part I: Abstract Description Design

Chapter 8: Fundamental WSDL Part II: Concrete Description Design

Chapter 9: Fundamental WSDL 2.0: New Features, and Design Options

Chapter 10: Fundamental WS-Policy: Expression, Assertion, and Attachment

Chapter 11: Fundamental Message Design: SOAP Envelope Structure, and Header Block Processing

Part II: Advanced Service Contract Design

Chapter 12: Advanced XML Schema Part I: Message Flexibility, and Type Inheritance and Composition

Chapter 13: Advanced XML Schema Part II: Reusability, Derived Types, and Re

Table of Contents

  1. Copyright
    1. Dedication
  2. Praise for this Book
  3.  
  4. Foreword
  5. Preface
  6. Acknowledgments
  7. 1. Introduction
    1. 1.1. About this Book
    2. 1.2. Objectives of this Book
    3. 1.3. Who this Book is For
    4. 1.4. What this Book Does Not Cover
    5. 1.5. Prerequisite Reading
    6. 1.6. Supplementary Reading
    7. 1.7. How this Book is Organized
      1. Part I: Fundamental Service Contract Design
        1. Chapter 3: SOA Fundamentals and Web Service Contracts
        2. Chapter 4: Anatomy of a Web Service Contract
        3. Chapter 5: A Plain English Guide to Namespaces
        4. Chapter 6: Fundamental XML Schema: Types and Message Structure Basics
        5. Chapter 7: Fundamental WSDL Part I: Abstract Description Design
        6. Chapter 8: Fundamental WSDL Part II: Concrete Description Design
        7. Chapter 9: Fundamental WSDL 2.0: New Features and Design Options
        8. Chapter 10: Fundamental WS-Policy: Expression, Assertion, and Attachment
        9. Chapter 11: Fundamental Message Design: SOAP Envelope Structure and Header Block Processing
      2. Part II: Advanced Service Contract Design
        1. Chapter 12: Advanced XML Schema Part I: Message Flexibility and Type Inheritance and Composition
        2. Chapter 13: Advanced XML Schema Part II: Reusability, Derived Types, Relational Design
        3. Chapter 14: Advanced WSDL Part I: Modularization, Extensibility, MEPs, and Asynchrony
        4. Chapter 15: Advanced WSDL Part II: Message Dispatch, Service Instance Identification, and Non-SOAP HTTP Binding
        5. Chapter 16: Advanced WS-Policy Part I: Policy Centralization and Nested, Parameterized, and Ignorable Assertions
        6. Chapter 17: Advanced WS-Policy Part II: Custom Policy Assertion Design, Runtime Representation, and Compatibility
        7. Chapter 18: Advanced Message Design Part I: WS-Addressing Vocabularies
        8. Chapter 19: Advanced Message Design Part II: WS-Addressing Rules and Design Techniques
      3. Part III: Service Contract Versioning
        1. Chapter 20: Versioning Fundamentals
        2. Chapter 21: Versioning WSDL Definitions
        3. Chapter 22: Versioning Message Schemas
        4. Chapter 23: Advanced Versioning
      4. Part IV: Appendices
        1. Appendix A: Case Study Conclusion
        2. Appendix B: How Technology Standards are Developed
        3. Appendix C: Alphabetical Pseudo Schema Reference
        4. Appendix D: Namespaces and Prefixes Used in this Book
        5. Appendix E: SOA Design Patterns Related to this Book
    8. 1.8. Symbols, Figures, and Style Conventions
      1. Symbol Legend
      2. How Color is Used
      3. Summary of Key Points
    9. 1.9. Additional Information
      1. Official Book Series Site (www.soabooks.com)
      2. Visio Stencil (www.soabooks.com)
      3. Community Patterns Site (www.soapatterns.org)
      4. Master Glossary (www.soaglossary.com)
      5. Referenced Specifications (www.soaspecs.com)
      6. Supplementary Posters (www.soaposters.com)
      7. The SOA Magazine (www.soamag.com)
      8. Referenced Specifications (www.soaspecs.com)
      9. Notification Service (www.soabooks.com)
  8. 2. Case Study Background
    1. 2.1. How Case Study Examples are Used
    2. 2.2. Case Study Background: ActionCon
      1. History and Culture
      2. Technical Infrastructure
      3. Business Goals and Obstacles
  9. I. Fundamental Service Contract Design
    1. 3. SOA Fundamentals and Web Service Contracts
      1. 3.1. Basic SOA Terminology
        1. Service-Oriented Computing
        2. Service-Orientation
        3. Service-Oriented Architecture (SOA)
        4. Service
        5. Service Models
          1. Agnostic Logic and Non-Agnostic Logic
        6. Service Composition
        7. Service Inventory
        8. Service-Oriented Analysis
        9. Service Candidate
        10. Service-Oriented Design
        11. Web Service
        12. Service Contract
        13. Service-Related Granularity
        14. Further Reading
      2. 3.2. Service-Oriented Computing Goals and Web Service Contracts
        1. Increased Intrinsic Interoperability
        2. Increased Federation
        3. Increased Vendor Diversification Options
        4. Increased Business and Technology Domain Alignment
        5. Strategic Benefits
        6. Further Reading
      3. 3.3. Service-Orientation and Web Service Contracts
        1. Standardized Service Contract
        2. Service Loose Coupling
          1. Contract-to-Functional Coupling
          2. Contract-to-Implementation Coupling
          3. Contract-to-Logic Coupling
          4. Contract-to-Technology Coupling
          5. Logic-to-Contract Coupling
        3. Service Abstraction
        4. Service Reusability
        5. Service Discoverability
        6. Service Composability
        7. Further Reading
      4. 3.4. SOA Design Patterns and Web Service Contracts
        1. Web Services and the Decoupled Contract Pattern
        2. Further Reading
    2. 4. Anatomy of a Web Service Contract
      1. 4.1. What is a Web Service Contract?
        1. Fundamental Structure
        2. Abstract and Concrete Descriptions
      2. 4.2. The Parts of a Web Service Contract
        1. Primary Parts of the Abstract Description
        2. 1. Port Type (Interface) Definition
        3. 2. Operation Definition
        4. 3. Message Definition
        5. 4. Type Definition
        6. 5. Policy Definition
        7. A Physical View of the Abstract Description
          1. WSDL 2.0 Changes to Physical View
        8. Primary Parts of the Concrete Description (Part I)
          1. 1. Port Type (Interface) Binding Definition
          2. 2. Operation Binding Definition
          3. 3. Message Binding Definitions
          4. 4. Policy Definition
        9. Primary Parts of the Concrete Description (Part II)
          1. 1. Service Definition
          2. 2. Port (Endpoint) Definition
          3. 3. Address Definition
          4. 4. Policy Definition
        10. How Parts of a Contract Relate to Each Other
        11. The Primary Parts of a Message
          1. 1. Envelope
          2. 2. Body
          3. 3. Fault
          4. 4. Header
      3. 4.3. Technologies Used to Create Web Service Contracts
        1. “Element” vs. “Construct” vs. “Definition”
        2. Web Services Description Language (WSDL)
        3. XML Schema Definition Language (XML Schema)
        4. WS-Policy Language
        5. SOAP Language
        6. Technologies for the Abstract Description
        7. Technologies for Concrete Descriptions
        8. The WS-I Basic Profile
      4. 4.4. Guidelines for Using Web Service Contract Technologies
        1. Auto-Generation Tools
        2. Flexibility vs. Restrictiveness
        3. Modularity and Reuse
        4. Clarity and Ease of Processing
    3. 5. A Plain English Guide to Namespaces
      1. About the In Plain English Sections
      2. 5.1. Elements, Attributes, and Namespaces
        1. Elements
        2. Attributes
        3. Vocabularies
        4. What’s Next
        5. Namespaces and Elements
        6. Namespaces and Attributes
        7. Working with Namespaces
      3. 5.2. Namespace Terminology
        1. Local Name
        2. Expanded Name
        3. Namespace Prefix
        4. Default Namespace
        5. Qualified Name
        6. Target Namespace
      4. 5.3. What’s in a Name(space)?
        1. Industry Standard Namespaces
        2. Namespace and URL Encoding
        3. Namespaces and Actual URLs
      5. 5.4. Namespace Syntax
        1. Declaring a Namespace Prefix
          1. Overriding a Prefix
          2. Valid Prefix Names
        2. The Default Namespace
        3. No Namespace
      6. 5.5. Namespaces and Web Service Contracts
        1. Common Namespaces in the Web Service Contract
          1. WSDL Namespace
          2. XML Schema Namespace
          3. SOAP Namespace
          4. WS-Policy Namespace
          5. Custom XML Schema Namespace
        2. Common Namespaces in the Message
          1. SOAP Namespace
          2. WS-Addressing Namespace
          3. Custom XML Schema Namespace
        3. Namespaces Used in this Book
    4. 6. Fundamental XML Schema: Types and Message Structure Basics
      1. “XML Schema” vs. “XML schema”
      2. 6.1. XML Schema Structure
      3. 6.2. Elements and Attributes
        1. Elements vs. Types
        2. Elements vs. Attributes
        3. Global vs. Local Declarations
        4. Element Granularity
      4. 6.3. Types
        1. What’s a Content Model?
        2. Named vs. Anonymous Types
        3. Built-in Simple Types
        4. Types and Inheritance
        5. User-Defined Simple Types
          1. Facets
          2. Enumerated Lists of Values
          3. Length Restrictions and Ranges
          4. Decimal Precision and Scale
          5. Formatting Patterns
        6. Complex Types
          1. Content Types
          2. Defining a Simple Content Complex Type
          3. Defining an Element-only Content Complex Type
          4. Defining an Empty Content Complex Type
        7. How Types are Used in Web Service Contracts
      5. 6.4. Namespaces
        1. The Target Namespace
          1. The targetNamespace Attribute
          2. Target Namespace Format Conventions
          3. Namespace Prefixes and Runtime XML Document Generation
        2. Qualified and Unqualified Elements
          1. The elementFormDefault Attribute
          2. The attributeFormDefault Attribute
          3. The form Attribute
        3. Namespaces and Schema Reuse
      6. 6.5. Message Structures
        1. Repeating Element Containers
    5. 7. Fundamental WSDL Part I: Abstract Description Design
      1. What, No wsdl: Prefix?
      2. IRI vs. URI vs. URL vs. URN
      3. 7.1. WSDL Definition and Documentation
        1. The definitions Element
          1. The targetNamespace Attribute
          2. The xmlns Attribute
        2. The documentation Element
          1. WS-I Guideline
      4. 7.2. Abstract Description Structure
      5. 7.3. Type Definitions
        1. The types Element
          1. Embedded and External Types
          2. WS-I Guidelines
      6. 7.4. Message Definitions
        1. The message Element
        2. The part Element
          1. WS-I Guideline
      7. 7.5. Operation Definitions
        1. The operation Element
        2. Message Exchange Patterns (MEPs)
        3. The parameterOrder Attribute
        4. Operation Overloading
      8. 7.6. Port Type Definitions
        1. The portType Element
      9. 7.7. A Complete Abstract Description
    6. 8. Fundamental WSDL Part II: Concrete Description Design
      1. 8.1. Concrete Description Structure
      2. 8.2. Binding Definition
        1. The binding Element
          1. WS-I Guideline
        2. Extensibility Elements
        3. The binding Element’s transport Attribute
        4. The “Inheritance Rule”
          1. WS-I Guideline
        5. The soap11:operation Element’s soapAction Attribute
        6. The soap11:binding and operation Element’s style Attribute
        7. SOAP Extensibility Elements (and the use Attribute)
        8. Literal vs. Encoded
          1. WS-I Guideline
        9. Binding to SOAP 1.2
          1. The wsdl:required Attribute
      3. 8.3. Service and Port Definitions
        1. The service and port Elements
          1. WS-I Guideline
      4. 8.4. A Complete WSDL Definition (Including the Concrete Description)
    7. 9. Fundamental WSDL 2.0: New Features and Design Options
      1. 9.1. WSDL 2.0 Document Structure
        1. Elimination of the message Element
      2. 9.2. Interface Definition
        1. The interface Element’s extends Attribute
        2. The interface Element’s styleDefault Attribute
        3. The wsdlx:safe Global Attribute
        4. The fault, infault, and outfault Elements
        5. The pattern and messageLabel Attributes
      3. 9.3. Service and Endpoint Definitions
      4. 9.4. A Complete WSDL 2.0 Definition
    8. 10. Fundamental WS-Policy: Assertions, Expressions, and Attachments
      1. 10.1. Policy Structure
        1. New Namespaces and Prefixes
        2. Assertions, Expressions, and the Policy Element
          1. Policy Assertions
          2. Policy Expressions
          3. Custom Policy Assertions
      2. 10.2. Composite Policies
        1. The ExactlyOne Element
        2. The wsp:All Element
        3. The wsp:optional Attribute
      3. 10.3. Operator Composition Rules
        1. Idempotent Rule
        2. Commutative Rule
        3. Associative Rule
        4. wsp:All is Distributive Over wsp:ExactlyOne
        5. Empty Operators
        6. Equivalence
      4. 10.4. Attaching Policies to WSDL Definitions
        1. Policy Attachment Points and Policy Subjects
          1. Service Policy Subject
          2. Endpoint Policy Subject
          3. Operation Policy Subject
          4. Message Policy Subject
          5. WSDL 2.0 Policy Subjects
        2. The wsp:PolicyReference Element
        3. Embedded Attachments
      5. 10.5. A Complete WSDL Definition with an Attached Policy Expression
    9. 11. Fundamental Message Design: SOAP Envelope Structure, Fault Messages, and Header Processing
      1. What SOAP is Not
      2. 11.1. SOAP Message Structure
        1. The soap:Envelope Element
        2. The soap:Body Element
        3. The soap:Header Element
        4. The soap:Fault Element
      3. 11.2. SOAP Nodes and Roles
      4. 11.3. SOAP Header Blocks and Targeted Processing
        1. The soap:role Attribute
        2. The soap:mustUnderstand Attribute
        3. The soap:relay Attribute
        4. Industry SOAP Header Block Examples
          1. Resource Representation SOAP Header Block (RRSHB)
          2. WS-ReliableMessaging Sequence Header Block
          3. WS-Coordination Header Block
      5. 11.4. SOAP Intermediaries
        1. Forwarding Intermediaries
        2. Active Intermediaries
          1. Active Intermediaries as Threats
      6. 11.5. Fault Messages
        1. The SOAP Fault Vocabulary
          1. The soap:Reason Element
          2. The soap:Node Element
          3. The soap:Role Element
          4. The soap:Text Element
          5. The soap:Value Element
        2. The soap:Code Element
          1. soap:VersionMismatch
          2. soap:MustUnderstand
          3. soap:Sender
          4. soap:Receiver
          5. soap:DataEncodingUnknown
        3. The soap:Detail Element
        4. SOAP Faults vs. WSDL Faults
        5. SOAP 1.1 Fault Elements and Values
  10. II. Advanced Service Contract Design
    1. 12. Advanced XML Schema Part I: Message Flexibility, Type Inheritance, and Composition
      1. 12.1. Message Flexibility and Constraint Granularity
        1. Wildcards (xsd:any and xsd:anyAttribute)
          1. The xsd:any Element
          2. The minOccurs and maxOccurs Attributes
          3. The namespace Attribute
          4. The processContents Attribute
          5. The xsd:anyAttribute Element
          6. Wildcards and the UPA Rule
          7. Using Wildcards to Pass Through Data in Service Compositions
          8. Tool Support for Element and Attribute Wildcards
        2. Extension Buckets
          1. Extension Buckets Using xsd:anyType
        3. Generic vs. Specific Elements
        4. Content Model Groups (xsd:choice, xsd:all, and xsd:sequence)
          1. The xsd:choice Element
          2. Tool Support for xsd:choice
          3. The xsd:all Element
          4. The xsd:sequence Element
      2. 12.2. Type Inheritance and Composition
        1. Emulating Class Inheritance (abstract and xsd:extension)
          1. The abstract Attribute
          2. The xsd:extension Element
          3. Inheritance and Service-Orientation
          4. Tool Support for Derived Types
        2. Type Composition (xsd:group)
          1. The xsd:group Element
          2. Tool Support for Type Composition
      3. 12.3. Common CRUD Messages Types
        1. The “Chatty” Factor
        2. The Agnostic Factor
        3. Common Message Types
          1. Business Document Message
          2. Acknowledgement Message
        4. Add Operation Messages
        5. Get Operation Messages
        6. Document-Centric Update Operation Messages
        7. Parameter-Centric Update Operation Messages
        8. Delete Operation Messages
        9. Message Types for Task Services
    2. 13. Advanced XML Schema Part II: Reusability, Relational Design, and Industry Schemas
      1. 13.1. Reusable Schema Design
        1. Reusing Schemas with the xsd:include Element
        2. Reusing Schemas with the xsd:import Element
          1. Common Type Libraries
      2. 13.2. Representing Relationships in XML Schemas
        1. One-to-Many Relationships
        2. Many-to-Many Relationships
        3. The xsd:key and xsd:keyref Elements
        4. Separate Relationship Element
      3. 13.3. Narrative Content
        1. Mixed Content with a Repeating xsd:choice Group
        2. Tool Support for Narrative Content
      4. 13.4. Incorporating Industry Schemas
        1. Reusing Types
        2. Adding Wildcards
    3. 14. Advanced WSDL Part I: Modularization, Extensibility, MEPs, and Asynchrony
      1. 14.1. Modularization Mechanisms
        1. The import Element (WSDL 1.1, 2.0)
          1. Non-Transitive Limitations
        2. The include Element (WSDL 2.0)
          1. When Should include be Used Instead of import?
          2. Can the WSDL import Element be Used to Import an XML Schema?
        3. How WSDL Documents are Merged
        4. Importing XML Schemas
          1. import with WSDL 1.1 (High Visibility)
          2. import with WSDL 2.0 (Constrained Visibility)
          3. import with WSDL 2.0 (High Visibility)
          4. include with WSDL 2.0 (High Visibility)
          5. XML Schema Definitions and Non-Transitive Limitations
          6. Multiple XML Schema Documents in a WSDL Document
        5. More About Interface Inheritance (WSDL 2.0)
          1. Inter-Service and Intra-Service Inheritance
          2. Emulating Interface Inheritance with WSDL 1.1
      2. 14.2. Extending the WSDL Language
        1. Extensibility of the SOAP Binding Extensions
          1. Specifying an Alternative Underlying Protocol (WSDL 1.1)
          2. Specifying an Alternative Underlying Protocol (WSDL 2.0)
          3. Non-Standard and Custom Transports
        2. Custom WSDL Extensions and the wsdl:required Attribute
          1. Using the wsdl:required Attribute
      3. 14.3. Special Message Exchange Patterns
        1. What Happened to Outbound MEPs?
          1. How Outbound MEPs were Supposed to Work
          2. Why Outbound MEPs are Not Widely Supported
        2. The WSDL 2.0 Robust In-Only MEP
        3. WSDL 2.0 Custom MEPs
      4. 14.4. Designing Asynchronous Operations
        1. The Asynchronous Web Service
          1. What is Asynchrony?
        2. Polling
        3. Asynchronous Protocol Binding
          1. Inherently Asynchronous Binding
        4. WS-Addressing
        5. Guidelines for Using Asynchronous Patterns
      5. 14.5. WS-BPEL and WSDL
        1. WS-I Basic Profile Compliance
        2. Restrictions Relating to Operations and Faults
        3. WS-BPEL Extensions to WSDL
        4. Asynchronous Message Exchanges
        5. Correlation
    4. 15. Advanced WSDL Part II: Message Dispatch, Service Instance Identification, and Non-SOAP HTTP Binding
      1. 15.1. Extreme Loose Coupling with WSDL 2.0
        1. The #any Attribute
        2. Valid #any Messages
        3. Architectural Considerations
        4. WSDL #any and XML Schema xsd:any
      2. 15.2. Message Dispatch Challenges
        1. Creating Unique Message Types
        2. HTTP SOAP Action Header
          1. SOAP Action in WSDL 1.1 with SOAP 1.1
          2. SOAP Action in WSDL 1.1 with SOAP 1.2
          3. SOAP Action in WSDL 2.0 with SOAP 1.1 or SOAP 1.2
          4. The Actual HTTP Headers
        3. WS-Addressing SOAP Action Header
      3. 15.3. Messages that Point to Service Instances
        1. Service vs. Service Instance
        2. WSDL wsdlx and wsdli Extensibility Attributes
        3. Applications of this Feature
      4. 15.4. Custom Header Blocks and Header Faults
        1. The Header and Header Fault Types
        2. Defining SOAP Header Blocks in WSDL 2.0
      5. 15.5. Binding to HTTP Without SOAP
        1. HTTP as a Messaging Protocol
        2. Binding to HTTP with WSDL 1.1
          1. The httpbind:binding and httpbind:operation Elements
          2. The httpbind:address Element
          3. The location Attribute
          4. MIME Serialization
        3. Binding to HTTP with WSDL 2.0
          1. The whttp:methodDefault, whttp:location, and whttp:method Attributes
          2. The address Attribute of the endpoint Element
          3. MIME Serialization
        4. Additional WSDL 2.0 HTTP Binding Features
    5. 16. Advanced WS-Policy Part I: Policy Centralization and Nested, Parameterized, and Ignorable Assertions
      1. 16.1. Reusability and Policy Centralization
        1. Policy Centralization and Policy Definitions
          1. Domain Policy Definition
          2. Global Policy Definitions
          3. Policy Centralization
        2. Designing External WS-Policy Definitions
          1. Policy Processors
          2. Using the wsp:PolicyAttachment Element
          3. Using the wsp:PolicyURIs Attribute
          4. Using the Name and URI Attributes
          5. Wrapping Policies Within WSDL Definitions
        3. Common Policy Centralization Challenges
          1. Policy Centralization and ESBs
      2. 16.2. Nested and Parameterized Assertions
        1. Nested Policy Assertions
        2. Parameterized Assertions
      3. 16.3. Ignorable Assertions
        1. wsp:Ignorable vs. wsp:Optional
          1. Applying the wsp:Optional Attribute
          2. Applying the wsp:Ignorable Attribute
          3. What About Using wsp:Optional and wsp:Ignorable Together?
        2. Using wsp:Ignorable to Target Consumers
        3. Considerations for Using Ignorable Assertions
      4. 16.4. Concurrent Policy-Enabled Contracts
    6. 17. Advanced WS-Policy Part II: Custom Policy Assertion Design, Runtime Representation, and Compatibility
      1. 17.1. Designing Custom Policy Assertions
        1. Custom Assertion Schemas
        2. Custom Assertion Processing Logic
        3. Custom Assertion Attributes
        4. Custom Policy Assertion Checklist
      2. 17.2. Maintaining Custom Policy Assertions
        1. Canonical Policy Vocabularies
        2. Assertion Description Documents
      3. 17.3. Runtime Policy Representation
        1. Normalization of Policies
          1. The Normalization Process
        2. Merging Policies
          1. The Merging Process
          2. Normalizing Merged Policies
          3. Inter-Policy Compatibility
      4. 17.4. Intersection and Consumer-Service Policy Compatibility
        1. Compatibility Levels
        2. Assertion Compatibility
        3. Alternative Compatibility
    7. 18. Advanced Message Design Part I: WS-Addressing Vocabularies
      1. 18.1. EPRs and MAPs
        1. Endpoint References (EPRs)
        2. Message Addressing Properties (MAPs)
          1. MAPs and EPRs
          2. MAPs and Transport-Independence
      2. 18.2. The EPR Vocabulary
        1. The wsa:EndpointReference Element
        2. The wsa:Address Element
          1. Anonymous Address
          2. None Address
        3. The wsa:ReferenceParameters Element
        4. The wsa:Metadata Element
      3. 18.3. MAP Vocabulary
        1. The wsa:To Element
        2. The wsa:From Element
        3. The wsa:ReplyTo Element
        4. The wsa:FaultTo Element
        5. The wsa:Action Element
        6. The wsa:MessageId Element
        7. The wsa:RelatesTo Element and the RelationshipType Attribute
    8. 19. Advanced Message Design Part II: WS-Addressing Rules and Design Techniques
      1. 19.1. WS-Addressing Messaging Rules
        1. SOAP Header Structure
          1. Reference Parameters in a Message Sent from an Endpoint
          2. Reference Parameters in a Message Sent to an Endpoint
        2. Sending a Reply to a Message from an Endpoint
        3. MEP Requirements for MAP Elements
      2. 19.2. EPRs and WSDL Binding
        1. Embedding WSDL References Within an EPR
        2. Embedding EPRs in a WSDL Document
      3. 19.3. WS-Addressing and Action Values
        1. Why is wsa:Action Always Required?
        2. The wsa:Action Element and WSDL
        3. The wsa:Action Element and HTTP
        4. A Reference Table for Action Values
      4. 19.4. WS-Addressing SOAP Faults
      5. 19.5. WS-Addressing Policy Assertions
        1. The wsam:Addressing Policy Assertion
        2. The wsam:AnonymousResponse Policy Assertion
        3. The wsam:NonAnonymousResponse Policy Assertion
  11. III. Service Contract Versioning
    1. 20. Versioning Fundamentals
      1. 20.1. Basic Concepts and Terminology
        1. The Scope of a Version
        2. Fine and Coarse-Grained Constraints
      2. 20.2. Versioning and Compatibility
        1. Backwards Compatibility
        2. Forwards Compatibility
        3. Compatible Changes
        4. Incompatible Changes
      3. 20.3. Version Identifiers
      4. 20.4. Versioning Strategies
        1. The Strict Strategy (New Change, New Contract)
          1. Pros and Cons
        2. The Flexible Strategy (Backwards Compatibility)
          1. Pros and Cons
        3. The Loose Strategy (Backwards and Forwards Compatibility)
          1. Pros and Cons
        4. Summary Table
    2. 21. Versioning WSDL Definitions
      1. 21.1. Version Identifiers and WSDL Definitions
        1. Base Example
      2. 21.2. Versioning Operation Definitions
        1. Adding a New Operation
          1. Appending a WSDL Definition with an Operation as a Compatible Change (Flexible)
          2. Forcing a New Contract Version when Adding an Operation (Strict)
        2. Renaming an Existing Operation
          1. Forcing a New Major Contract Version (Strict, Flexible)
          2. Extending the Contract with the Renamed Operation (Flexible)
          3. Operation Termination
        3. Removing an Existing Operation
          1. Removing the Operation and Forcing a New Major Contract Version (Strict, Flexible)
          2. Turning the Operation into a Functional Stub and Forcing a New Major Contract Version (Strict, Flexible)
        4. Changing the MEP of an Existing Operation
          1. Changing the MEP and Forcing a New Major Contract Version (Strict, Flexible)
          2. Extending the Contract with the Operation Containing the Modified MEP (Flexible)
        5. Adding a Fault Message to an Existing Operation
          1. Adding a Fault Message (Strict, Flexible)
          2. Extending the Contract with the Operation Containing the Fault Message (Flexible)
      3. 21.3. Versioning Port Type Definitions
        1. Adding a Version Identifier to the Port Type
        2. Versioning with Multiple Port Types (Flexible)
        3. Using Prefixes to Associate Versions
      4. 21.4. Versioning Concrete Descriptions
      5. 21.5. WSDL Definitions and Forwards Compatibility
        1. Decreasing Operation Granularity Levels
        2. Using the WSDL 2.0 #any Attribute Value
    3. 22. Versioning Message Schemas
      1. 22.1. Basic Terms and Concepts
        1. Re-Introducing the “Component”
        2. Content Sets
        3. Versioning and the UPA Rule
          1. An Example of a UPA Violation
        4. Base Example
          1. Versioning Conventions for Examples
      2. 22.2. XML Schema and WSDL Target Namespaces
      3. 22.3. Strict Versioning
        1. Adding a New Schema Component
        2. Removing an Existing Schema Component
        3. Renaming an Existing Schema Component
        4. Modifying the Constraint of an Existing Schema Component
      4. 22.4. Flexible Schema Versioning (Using Optional Components)
        1. Adding a New Schema Component
          1. Placing New Component Declarations into Separate Schemas
        2. Removing an Existing Schema Component
        3. Renaming an Existing Schema Component
        4. Modifying the Constraint of an Existing Schema Component
      5. 22.5. Loose Schema Versioning (Using Wildcards)
        1. Adding a New Schema Component
          1. Using Wrapper Elements for Wildcards
          2. Schemas for Replacement Elements
        2. Removing an Existing Schema Component
          1. Removing an Element Preceding a Wildcard
          2. Removing an Element Not Preceding a Wildcard
        3. Renaming an Existing Schema Component
        4. Modifying the Constraint of an Existing Schema Component
          1. The namespace Attribute
          2. The processContents Attribute
    4. 23. Advanced Versioning
      1. 23.1. Versioning Policies
        1. Alternatives
        2. Optional Assertions
        3. Ignorable Assertions
        4. Different Endpoints
        5. Propagating Major Version Changes to WSDL Definitions
          1. Attached Inline
          2. Independent Policy Definition
          3. Policy Definition Wrapped in a WSDL Definition
      2. 23.2. Defining “Non-Ignorable” Unknown Elements
        1. Using a Custom mustUnderstand Attribute
        2. Using the soap:mustUnderstand Attribute
      3. 23.3. Versioning and Schema Centralization
      4. 23.4. Expressing Termination Information
        1. Ignorable Termination Assertions
        2. Mandatory Termination Assertions
        3. Terminating Individual Operations
      5. 23.5. Working with Unknown Content
        1. Accept and Retain Unknown Content
        2. Using a mustRetain Flag
      6. 23.6. Partial Validation
        1. Validation by Projection
      7. 23.7. Versioning Message Instances
      8. 23.8. Customizing a Versioning Strategy
        1. Custom Strategies for Schema Versioning
          1. Compatible and Incompatible Changes in New Namespaces
          2. Compatible Changes in Existing Namespaces, Incompatible Changes in New Namespaces
        2. Version Identification Conventions
  12. IV. Appendices
    1. A. Case Study Conclusion
    2. B. How Technology Standards are Developed
      1. How Standards are Developed
      2. The Standards Development Process
    3. C. Alphabetical Pseudo Schema Reference
    4. D. Namespaces and Prefixes Used in this Book
    5. E. SOA Design Patterns Related to this Book
      1. Canonical Expression
      2. Canonical Schema
      3. Canonical Versioning
      4. Compatible Change
      5. Concurrent Contracts
      6. Contract Centralization
      7. Contract Denormalization
      8. Decomposed Capability
      9. Decoupled Contract
      10. Distributed Capability
      11. Messaging Metadata
      12. Partial Validation
      13. Policy Centralization
      14. Proxy Capability
      15. Schema Centralization
      16. Service Messaging
      17. Termination Notification
      18. Validation Abstraction
      19. Version Identification
    6. About the Authors
      1. Thomas Erl
      2. Anish Karmarkar
      3. Priscilla Walmsley
      4. Hugo Haas
      5. Umit Yalcinalp
      6. Canyang Kevin Liu
      7. David Orchard
      8. Andre Tost
      9. James Pasley
    7. Inside Front Cover
    8. Inside Back Cover
      1. SOA Certified Professional Program