Chapter 1: Introduction
  1.1 Why this guide is important
    1.1.1 The hammer and XML
    1.1.2 XML and Web services
    1.1.3 Web services and Service-Oriented Architecture
    1.1.4 Service-Oriented Architecture and the hammerre
    1.1.5 The hammer and you
  1.2 The XML & Web Services Integration Framework (XWIF)
  1.3 How this guide is organized
    1.3.1 Part I: The technical landscape
    1.3.2 Part II: Integrating technology
    1.3.3 Part III: Integrating applications
    1.3.4 Part IV: Integrating the enterprise
    1.3.5 The extended enterprise
  1.5 Contact the author

Part I - The Technical Landscape
Chapter 2: Introduction to XML technologies
  2.1 Extensible Markup Language (XML)
    2.1.1 Concepts
    2.1.2 Schemass
    2.1.3 Programming models
    2.1.4 Syntaxss
  2.2 Document Type Definitions (DTD)
    2.2.1 Concepts
    2.2.2 Syntaxts
  2.3 XML Schema Definition Language (XSD)
    2.3.1 Concepts
    2.3.2 Syntaxts
  2.4 Extensible Stylesheet Language Transformations (XSLT)
    2.4.1 Concepts
    2.4.2 Syntaxts
  2.5 XML Query Language (XQuery)
    2.5.1 Concepts
    2.5.2 Syntaxts
  2.6 XML Path Language (XPath)
    2.6.1 Concepts
    2.6.2 Syntaxts

Chapter 3: Introduction to Web service technologies
  3.1 Web services and the service-oriented architecture (SOA)
    3.1.1 Understanding servicese
    3.1.2 XML Web servicesls
    3.1.3 Service-oriented architecture (SOA)
    3.1.4 Web service roless
    3.1.5 Web service interaction
    3.1.6 Service modelsless
    3.1.7 Web service description structures
    3.1.8 Introduction to first-generation Web servicese
  3.2 Web Services Definition Language (WSDL)
    3.2.1 Abstract interface definitiontures
    3.2.2 Concrete (implementation) definitiono
    3.2.3 Supplementary constructs
  3.3 Simple Object Access Protocol (SOAP)
    3.3.1 SOAP messaging framework
    3.3.2 SOAP message structurerk
  3.4 Universal Description, Discovery, and Integration (UDDI)

Chapter 4: Introduction to second-generation (WS-*) Web services technologies
    4.1 Second-generation Web services and the service-oriented enterprise
    4.1.1 Problems solved by second-generation specifications
    4.1.2 The second-generation landscaperes
  4.2 WS-Coordination and WS-Transaction
    4.2.1 Concepts
    4.2.2 Syntaxts
  4.3 Business Process Execution Language for Web Services
    4.3.1 Recent business process specificationsn
    4.3.2 Concepts
    4.3.3 Syntaxts
  4.4 WS-Security and the Web services security specifications
    4.4.1 General security concepts
    4.4.2 Specificationsless
    4.4.3 XML Key Management (XKMS)
    4.4.4 Extensible Access Control Markup Language and
            Extensible Rights Markup Language
    4.4.5 Security Assertion Markup Language (SAML) and .NET Passports
    4.4.6 XML-Encryption and XML-Digital Signatures
    4.4.7 Secure Sockets Layer (SSL)
    4.4.8 The WS-Security framework)
    4.4.9 Concepts and syntaxmework)
  4.5 WS-ReliableMessaging
    4.5.1 WS-Addressingsless
    4.5.2 Concepts
    4.5.3 Acknowledgementsss
    4.5.4 Syntaxts
  4.6 WS-Policy
    4.6.1 Concepts
    4.6.2 Syntaxts
  4.7 WS-Attachments

Part II: Integrating Technology
Chapter 5: Integrating XML into applications
  5.1 Strategies for integrating XML data representation
    5.1.1 Positioning XML data representation in your architecture
    5.1.2 Think "tree" (a new way of representing data)
    5.1.3 Easy now, (don't rush the XML document model)
    5.1.4 Design with foresight
    5.1.5 Focus on extensibility and reusability
    5.1.6 Lose weight while modeling! (keeping your documents)
    5.1.7 Naming element-types: performance vs. legibility
    5.1.8 Applying XML consistently
    5.1.9 Choosing the right API (DOM vs. SAX vs. Data Binding)
    5.1.10 Securing XML documents
    5.1.11 Pick the right tools
    5.1.12 Don't try this at home (fringe optimization strategiesm)
  5.2 Strategies for integrating XML data validation
    5.2.1 XSD schemas or DTDs?
    5.2.2 Positioning DTDs in your architecture
    5.2.3 Positioning XSD schemas in your architecture
    5.2.4 Understand the syntactical limitations of XSD schemas
    5.2.5 Understand the performance limitations of XSD schemas
    5.2.6 Other fish in the sea (more schema definition languages)
    5.2.7 Supplementing XSD schema validation
    5.2.8 Integrating XML validation into a distributed architecture
    5.2.9 Avoiding over-validation
    5.2.10 Consider targeted validation
    5.2.11 Building modular and extensible XSD schemas
    5.2.12 Understand the integration limitations of your database
  5.3 Strategies for integrating XML schema administration
    5.3.1 XML schemas and the silent disparity pattern
    5.3.2 A step-by-step XWIF process
  5.4 Strategies for integrating XML transformation
    5.4.1 Positioning XSLT in your architecture
    5.4.2 Pre-transform for static caching
    5.4.3 Create dynamic XSLT style sheets
    5.4.4 Simplify aesthetic transformation with CSS
    5.4.5 Understand the scalability limitations of XSLT
    5.4.6 Strategic redundancy
  5.5 Strategies for integrating XML data querying
    5.5.1 Positioning XQuery in your architecture
    5.5.2 Multi-data source abstraction
    5.5.3 Establishing a data policy management layer
    5.5.4 Unifying documents and data

Chapter 6: Integrating Web services into applications
  6.1 Service models
    6.1.1 Utility services
    6.1.2 Business services
    6.1.3 Controller services
  6.2 Modeling service-oriented component classes and web service interfaces
    6.2.1 Designing service-oriented component classes
    6.2.2 Designing Web service interfaces
  6.3 Strategies for integrating service-oriented encapsulation
    6.3.1 Define criteria for consistent logic encapsulation and interface granularity
    6.3.2 Establish a standard naming convention
    6.3.3 Parameter-driven vs. operation-oriented interfaces
    6.3.4 Designing for diverse granularity
    6.3.5 Utilize generic services consistently
    6.3.6 Establish separate standards for internal and external services
    6.3.7 Considering third-party Web services
  6.4 Strategies for integrating service assemblies
    6.4.1 Everything in moderation, including service assemblies
    6.4.2 Modeling service assemblies
    6.4.3 Compound service assemblies
  6.5 Strategies for enhancing service functionality
    6.5.1 Outputting user-interface information
    6.5.2 Caching more than textual data
    6.5.3 Streamlining the service design with usage patterns
  6.6 Strategies for integrating SOAP messaging
    6.6.1 SOAP message performance management
    6.6.2 SOAP message compression techniques
    6.6.3 Security issues with SOAP messaging
    6.6.4 SOAP data types
    6.6.5 Easing into SOAP

Chapter 7: Integrating XML and databases
  7.1 Comparing XML and relational database
    7.1.1 Data storage and security
    7.1.2 Data representation
    7.1.3 Data integrity and validation
    7.1.4 Data querying and indexing
  7.1.5 Additional features
  7.2 Integration architectures for XML and relational databases
    7.2.1 Storing XML documents as database records
    7.2.2 Storing XML document constructs as database records
    7.2.3 Using XML to represent a view of database queries
    7.2.4 Using XML to represent a view of a relational data model
    7.2.5 Using XML to represent relational data within an in-memory database (IMDB)
  7.3 Strategies for integrating XML with relational databases
    7.3.1 Target only the data you need
    7.3.2 Avoiding relationships by creating specialized data views
    7.3.3 Create XML-friendly database models
    7.3.4 Extending the schema model with annotations
    7.3.5 Non-XML data models in XML schemas
    7.3.6 Developing a caching strategy
    7.3.7 Querying the XSD schema
    7.3.8 Control XML output with XSLT
    7.3.9 Integrate XML with query limitations in mind
    7.3.10 Is a text file a legitimate repository?
    7.3.11 Loose coupling and developer skill sets
  7.4 Techniques for mapping XML to relational data
    7.4.1 Mapping XML documents to relational data
    7.4.2 The Bear Sightings application
    7.4.3 Intrinsic one-to-one and one-to-many relationships with XML
    7.4.4 Mapping XML to relational data with DTDs
    7.4.5 Mapping XML to relational data with XSD schemas
  7.5 Database extensions
    7.5.1 Proprietary extensions to SQL
    7.5.2 Proprietary versions of XML specifications
    7.5.3 Proprietary XML-to-database mapping
    7.5.4 XML output format
    7.5.5 Stored procedures
    7.5.6 Importing and exporting XML documents
    7.5.7 Encapsulating proprietary database extensions within Web services
  7.6 Native XML databases
    7.6.1 Storage of document-centric data
    7.6.2 Integrated XML schema models
    7.6.3 Queries and data retrieval
    7.6.4 Native XML databases for intermediary storage

Part III: Integrating Applications
Chapter 8: The mechanics of application integration
  8.1 Understanding application integration
    8.1.1 Types of integration projects
    8.1.2 Typical integration requirements
    8.1.3 Progress versus impact
    8.1.4 Types of integration solutions
  8.2 Integration levels
    8.2.1 Data-level integration
    8.2.2 Application-level integration
    8.2.3 Process-level integration
    8.2.4 Service-oriented integration
  8.3 A guide to middleware
    8.3.1 "EAI" versus "middleware"
    8.3.2 Shredding the Oreo
    8.3.3 Common middleware services and products
    8.3.4 A checklist for buying middleware
  8.4 Choosing an integration path
    8.4.1 Two paths, one destination
    8.4.2 Moving to EAI
    8.4.3 Common myths
    8.4.4 The impact of an upgrade
    8.4.5 Weighing your options

Chapter 9: Service-oriented architectures for legacy integration
  9.1 Service models for application integration
    9.1.1 Proxy services
    9.1.2 Wrapper services
    9.1.3 Coordination services (for atomic transactionsty)
  9.2 Fundamental integration components
    9.2.1 Adapters
    9.2.2 Intermediaries
    9.2.3 Interceptors
  9.3 Web services and one-way integration architectures
    9.3.1 Batch export and import
    9.3.2 Direct data access
  9.4 Web services and point-to-point architectures
    9.4.1 Tightly coupled integration between homogenous legacy applications
    9.4.2 Tightly coupled integration between heterogeneous applications
    9.4.3 Integration between homogenous component-based applications
    9.4.4 Integration between heterogeneous component-based applications
  9.5 Web services and centralized database architectures
    9.5.1 Traditional architecture
    9.5.2 Using a Web service as a data access controller
  9.6 Service-oriented analysis for legacy architectures

Chapter 10: Service-oriented architectures for enterprise integration
  10.1 Service models for enterprise integration architectures
    10.1.1 Process services
    10.1.2 Coordination services (for business activities)
  10.2 Fundamental enterprise integration architecture components
    10.2.1 Broker
    10.2.2 Orchestration
  10.3 Web services and enterprise integration architectures
  10.4 Hub and spoke
    10.4.1 Traditional architecture
    10.4.2 Adding integration layers with Web services
  10.5 Messaging bus
    10.5.1 Traditional architecture
    10.5.2 Messaging bus solutions that utilize Web services
  10.6 Enterprise Service Bus (ESB)

Chapter 11: Service-oriented integration strategies
  11.1 Strategies for streamlining integration endpoint interfaces
    11.1.1 Make interfaces more generic
    11.1.2 Consolidate legacy interfaces
    11.1.3 Consolidate proxy interfaces
    11.1.4 Supplement legacy logic with external logic
    11.1.5 Add support for multiple data output formats
    11.1.6 Provide alternative interfaces for different SOAP clients
  11.2 Strategies for optimizing integration endpoint services
    11.2.1 Minimize the use of service intermediaries
    11.2.2 Consider using service interceptors
    11.2.3 Data processing delegation
    11.2.4 Caching the provider WSDL definition
  11.3 Strategies for integrating legacy architectures
    11.3.1 Create a transition architecture by adding partial integration layers
    11.3.2 Data caching with an IMDB
    11.3.3 Utilizing a queue to counter scalability demands
    11.3.4 Adding a mini-hub
    11.3.5 Abstract legacy adapter technology
    11.3.6 Leveraging legacy integration architectures
    11.3.7 Appending Web services to legacy integration architectures
  11.4 Strategies for enterprise solution integration
    11.4.1 Pragmatic service-oriented integration
    11.4.2 Integrating disparate EAI products
    11.4.3 Respect your elders (building EAI around your legacy environments)
    11.4.4 Build a private service registry
  11.5 Strategies for integrating Web services security
    11.5.1 Learn about the Web services security specifications
    11.5.2 Build services with a standardized service-oriented security (SOS) model
    11.5.3 Create a security services layer
    11.5.4 Beware remote third-party services
    11.5.5 Prepare for the performance impact
    11.5.6 Define an appropriate system for single sign-on
    11.5.7 Don't over-describe your services
    11.5.8 Fortify or retreat integrated legacy systems
    11.5.9 Take advantage of granular security
    11.5.10 Web services and port 80
    11.5.11 SOAP attachments and viruses
    11.5.12 Consider the development of security policies
    11.5.13 Don't wait to think about administration

Part IV: Integrating the Enterprise
Chapter 12: Thirty best practices for integrating XML
  12.1 Best practices for planning XML migration projects
    12.1.1 Understand what you are getting yourself into
    12.1.2 Assess the technical impact
    12.1.3 Invest in an XML impact analysis
    12.1.4 Assess the organizational impact
    12.1.5 Targeting legacy data
  12.2 Best practices for knowledge management within XML projects
    12.2.1 Always relate XML to data
    12.2.2 Determine the extent of education required by your organization
    12.2.3 Customize a training plan
    12.2.4 Incorporate mentoring into development projects
  12.3 Best practices for standardizing XML applications
    12.3.1 Incorporate standards
    12.3.2 Standardize, but don't over-standardize
    12.3.3 Define a schema management strategy
    12.3.4 Use XML to standardize data access logic
    12.3.5 Evaluate tools prior to integration
  12.4 Best practices for designing XML applications
    12.4.1 Develop a system for knowledge distribution
    12.4.2 Remember what the "X" stands for
    12.4.3 Design with service-oriented principles (even if not using Web services)
    12.4.4 Strive for a balanced integration strategy
    12.4.5 Understand the roles of supplementary XML technologies
    12.4.6 Adapt to new technology developments

Chapter 13: Thirty best practices for integrating Web services
  13.1 Best practices for planning service-oriented projects
    13.1.1 Know when to use Web services
    13.1.2 Know how to use Web services
    13.1.3 Know when to avoid Web services
    13.1.4 Moving forward with a transition architecture
    13.1.5 Leverage the legacy
    13.1.6 Sorry, no refunds (Web services and your bottom line)
    13.1.7 Align ROIs with migration strategies
    13.1.8 Build toward a future state
  13.2 Best practices for standardizing Web services
    13.2.1 Incorporate standards
    13.2.2 Label the infrastructure
    13.2.3 Design against an interface (not vice versa)
    13.2.4 Service interface designer
    13.2.5 Categorize your services
    13.3 Best practices for designing service-oriented environments
    13.3.1 Use SOAs to streamline business models
    13.3.2 Research the state of second-generation specifications
    13.3.3 Strategically position second-generation specifications
    13.3.4 Understand the limitations of your platform
    13.3.5 Use abstraction to protect legacy endpoints from change
    13.3.6 Build around a security model
  13.4 Best practices for managing service-oriented development projects
    13.4.1 Organizing development resources
    13.4.2 Don't underestimate training for developers
    13.5 Best practices for implementing Web services
    13.5.1 Use a private service registry
    13.5.2 Prepare for administration
    13.5.3 Monitor and respond to changes in the service hosting environments
    13.5.4 Test for the unknown

Chapter 14: Building the service-oriented enterprise
  14.1 SOA modeling basics
    14.1.1 Activities
    14.1.2 Services
    14.1.3 Processes
  14.2 SOE building blocks
    14.2.1 SOE business modeling building blocks
    14.2.2 SOE technology architecture building blocks
    14.2.3 Service-oriented security model
  14.3 SOE migration strategy
    14.3.1 Overview of the Layered Scope Model (LSM)
    14.3.2 Intrinsic Layer
    14.3.3 Internal layer
    14.3.4 A2A layer
    14.3.5 EAI layer
    14.3.6 Enterprise layer
    14.3.7 The extended enterprise
    14.3.8 Customizing the LSM
    14.3.9 Alternatives to the LSM

About the Author
About the Photographs
Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services
Service-Oriented Architecture:
A Field Guide to Integrating XML and Web Services

by Thomas Erl