You are previewing Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services.
O'Reilly logo
Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services

Book Description

Web services is the integration technology preferred by organizations implementing service-oriented architectures. I would recommend that anybody involved in application development obtain a working knowledge of these technologies, and I'm pleased to recommend Erl's book as a great place to begin.

—Tom Glover, Senior Program Manager, Web Services Standards, IBM Software Group, and Chairman of the Web Services Interoperability Organization (WS-I).

An excellent guide to building and integrating XML and Web services, providing pragmatic recommendations for applying these technologies effectively. The author tackles numerous integration challenges, identifying common mistakes and providing guidance needed to get it right the first time. A valuable resource for understanding and realizing the benefits of service-oriented architecture in the enterprise.

—David Keogh, Program Manager, Visual Studio Enterprise Tools, Microsoft.

Leading-edge IT organizations are currently exploring second generation web service technologies, but introductory material beyond technical specifications is sparse. Erl explains many of these emerging technologies in simple terms, elucidating the difficult concepts with appropriate examples, and demonstrates how they contribute to service-oriented architectures. I highly recommend this book to enterprise architects for their shelves.

—Kevin P. Davis, Ph. D., Software Architect.

Service-oriented integration with less cost and less risk

  

The emergence of key second-generation Web services standards has positioned service-oriented architecture (SOA) as the foremost platform for contemporary business automation solutions. The integration of SOA principles and technology is empowering organizations to build applications with unprecedented levels of flexibility, agility, and sophistication (while also allowing them to leverage existing legacy environments).

This guide will help you dramatically reduce the risk, complexity, and cost of integrating the many new concepts and technologies introduced by the SOA platform. It brings together the first comprehensive collection of field-proven strategies, guidelines, and best practices for making the transition toward the service-oriented enterprise.

Writing for architects, analysts, managers, and developers, Thomas Erl offers expert advice for making strategic decisions about both immediate and long-term integration issues. Erl addresses a broad spectrum of integration challenges, covering technical and design issues, as well as strategic planning.

  • Covers crucial second-generation (WS-*) Web services standards: BPEL4WS, WS-Security, WS-Coordination, WS-Transaction, WS-Policy, WS-ReliableMessaging, and WS-Attachments

  • Includes hundreds of individual integration strategies and more than 60 best practices for both XML and Web services technologies

  • Includes a complete tutorial on service-oriented design principles for business and technical modeling

  • Explores design issues related to a wide variety of service-oriented integration architectures that integrate XML and Web services into legacy and EAI environments

  • Provides a clear roadmap for planning a long-term migration toward a standardized service-oriented enterprise

Service-oriented architecture is no longer an exclusive discipline practiced only by expensive consultants. With this book's help, you can plan, architect, and implement your own service-oriented environments-efficiently and cost-effectively.

About the Web Sites

Erl's Service-Oriented Architecture books are supported by two Web sites. http://www.soabooks.com provides a variety of content resources and http://www.soaspecs.com supplies a descriptive portal to referenced specifications.

Table of Contents

  1. Copyright
  2. About Prentice Hall Professional Technical Reference
  3. Preface
    1. Acknowledgments
  4. 1. Introduction
    1. 1.1. Why this guide is important
      1. 1.1.1. The hammer and XML
      2. 1.1.2. XML and Web services
      3. 1.1.3. Web services and Service-Oriented Architecture
      4. 1.1.4. Service-Oriented Architecture and the hammer
      5. 1.1.5. The hammer and you
    2. 1.2. The XML & Web Services Integration Framework (XWIF)
    3. 1.3. How this guide is organized
      1. 1.3.1. Part I: The technical landscape
      2. 1.3.2. Part II: Integrating technology
        1. Integrating XML into applications (Chapter 5)
        2. Integrating Web services into applications (Chapter 6)
        3. Integrating XML and databases (Chapter 7)
      3. 1.3.3. Part III: Integrating applications
        1. The mechanics of application integration (Chapter 8)
        2. Service-oriented architectures for legacy integration (Chapter 9)
        3. Service-oriented architectures for enterprise integration (Chapter 10)
        4. Service-oriented integration strategies (Chapter 11)
      4. 1.3.4. Part IV: Integrating the enterprise
        1. Thirty best practices for integrating XML (Chapter 12)
        2. Thirty best practices for integrating Web services (Chapter 13)
        3. Building the service-oriented enterprise (SOE) (Chapter 14)
      5. 1.3.5. The extended enterprise
    4. 1.4. www.serviceoriented.ws
    5. 1.5. Contact the author
  5. I. The technical landscape
    1. 2. Introduction to XML technologies
      1. 2.1. Extensible Markup Language (XML)
        1. 2.1.1. Concepts
          1. Elements, Documents, and Vocabularies
        2. 2.1.2. Schemas
        3. 2.1.3. Programming models
        4. 2.1.4. Syntax
      2. 2.2. Document Type Definitions (DTD)
        1. 2.2.1. Concepts
        2. 2.2.2. Syntax
      3. 2.3. XML Schema Definition Language (XSD)
        1. 2.3.1. Concepts
        2. 2.3.2. Syntax
      4. 2.4. Extensible Stylesheet Language Transformations (XSLT)
        1. 2.4.1. Concepts
          1. Structural transformation
          2. Aesthetic transformation
        2. 2.4.2. Syntax
      5. 2.5. XML Query Language (XQuery)
        1. 2.5.1. Concepts
        2. 2.5.2. Syntax
      6. 2.6. XML Path Language (XPath)
        1. 2.6.1. Concepts
        2. 2.6.2. Syntax
    2. 3. Introduction to Web services technologies
      1. 3.1. Web services and the service-oriented architecture (SOA)
        1. 3.1.1. Understanding services
        2. 3.1.2. XML Web services
        3. 3.1.3. Service-oriented architecture (SOA)
        4. 3.1.4. Web service roles
          1. Service provider
          2. Service requestor
          3. Intermediary
          4. Initial sender
          5. Ultimate receiver
        5. 3.1.5. Web service interaction
          1. Message path
          2. Message exchange pattern
          3. Correlation
          4. Choreography
          5. Activity
        6. 3.1.6. Service models
        7. 3.1.7. Web service description structure
          1. Abstract
          2. Concrete
          3. Service definition
          4. Service description
        8. 3.1.8. Introduction to first-generation Web services
      2. 3.2. Web Services Description Language (WSDL)
        1. 3.2.1. Abstract interface definition
        2. 3.2.2. Concrete (implementation) definition
        3. 3.2.3. Supplementary constructs
      3. 3.3. Simple Object Access Protocol (SOAP)
        1. 3.3.1. SOAP messaging framework
          1. SOAP nodes
          2. SOAP node types
        2. 3.3.2. SOAP message structure
          1. SOAP node roles
      4. 3.4. Universal Description, Discovery, and Integration (UDDI)
    3. 4. Introduction to second-generation (WS-*) Web services technologies
      1. 4.1. Second-generation Web services and the service-oriented enterprise (SOE)
        1. 4.1.1. Problems solved by second-generation specifications
          1. Context and transaction management
          2. Business processes
          3. Security
          4. Reliable messaging
          5. Policies
          6. Attachments
        2. 4.1.2. The second-generation landscape
      2. 4.2. WS-Coordination and WS-Transaction
        1. 4.2.1. Concepts
          1. Atomic transactions
          2. Business activities
        2. 4.2.2. Syntax
      3. 4.3. Business Process Execution Language for Web Services (BPEL4WS)
        1. 4.3.1. Recent business process specifications
        2. 4.3.2. Concepts
          1. BPEL4WS and WSDL
          2. BPEL4WS and WS-Coordination/WS-Transaction
          3. BPEL4WS and other specifications
          4. Partner services
          5. Process instances
          6. Process descriptions
          7. Basic activities
          8. Structured activities
          9. Service interaction
        3. 4.3.3. Syntax
          1. Process element
          2. partnerLinks element
          3. Variables element
          4. faultHandlers element
          5. Sequence element
      4. 4.4. WS-Security and the Web services security specifications
        1. 4.4.1. General security concepts
          1. Identification
          2. Authentication
          3. Authorization
          4. Integrity
          5. Confidentiality
        2. 4.4.2. Specifications
        3. 4.4.3. XML Key Management (XKMS)
        4. 4.4.4. Extensible Access Control Markup Language (XACML) and Extensible Rights Markup Language (XrML)
        5. 4.4.5. Security Assertion Markup Language (SAML) and .NET Passport
        6. 4.4.6. XML-Encryption and XML-Digital Signatures
        7. 4.4.7. Secure Sockets Layer (SSL)
        8. 4.4.8. The WS-Security framework
          1. End-to-end and message-level security
          2. Specifications
          3. WS-Policy
          4. WS-Trust
          5. WS-Privacy
          6. WS-SecureConversation
          7. WS-Federation
          8. WS-Authorization
        9. 4.4.9. Concepts and syntax
          1. Claims and security tokens
      5. 4.5. WS-ReliableMessaging
        1. 4.5.1. WS-Addressing
        2. 4.5.2. Concepts
          1. Sequences
          2. Delivery assurances
        3. 4.5.3. Acknowledgements
        4. 4.5.4. Syntax
          1. Sequence
          2. SequenceAcknowledgement
      6. 4.6. WS-Policy
        1. 4.6.1. Concepts
        2. 4.6.2. Syntax
      7. 4.7. WS-Attachments
        1. SOAP Messages with Attachments (SwA)
  6. II. Integrating technology
    1. 5. Integrating XML into applications
      1. 5.1. Strategies for integrating XML data representation
        1. 5.1.1. Positioning XML data representation in your architecture
          1. XML as a data transport format within applications
          2. XML as a data transport format between applications
          3. XML as a data bridge within applications
          4. XML as a data bridge across applications
        2. 5.1.2. Think “tree” (a new way of representing data)
        3. 5.1.3. Easy now… (don't rush the XML document model)
        4. 5.1.4. Design with foresight
        5. 5.1.5. Focus on extensibility and reusability
        6. 5.1.6. Lose weight while modeling! (keeping your documents trim)
        7. 5.1.7. Naming element-types: performance vs. legibility
        8. 5.1.8. Applying XML consistently
        9. 5.1.9. Choosing the right API (DOM vs. SAX vs. Data Binding)
        10. 5.1.10. Securing XML documents
        11. 5.1.11. Pick the right tools
          1. Review auto-generated markup and code
          2. Identify proprietary markup and code
          3. Look for proprietary file types
          4. Understand the orientation of the tool
          5. Assess the quality of conversion features
          6. Evaluate functional features
          7. Understand programmatic extensions
          8. Look for quality feedback
          9. Consider existing toolsets
        12. 5.1.12. Don't try this at home (fringe optimization strategies)
          1. Write your own, stripped down XML parser or XSLT processor
          2. Custom program everything
          3. Remove validation
      2. 5.2. Strategies for integrating XML data validation
        1. 5.2.1. XSD schemas or DTDs?
          1. When to use DTDs instead of XSD schemas
          2. When to use XSD schemas instead of DTDs
          3. Another option: use both (side-by-side)
          4. Another option: use both (together)
          5. Another option: use neither
        2. 5.2.2. Positioning DTDs in your architecture
        3. 5.2.3. Positioning XSD schemas in your architecture
          1. XSD schemas as a validation layer within an application
          2. XSD schemas as a validation layer for cross-application communication
          3. XSD schemas as an ancillary data technology
        4. 5.2.4. Understand the syntactical limitations of XSD schemas
        5. 5.2.5. Understand the performance limitations of XSD schemas
        6. 5.2.6. Other fish in the sea (more schema definition languages)
        7. 5.2.7. Supplementing XSD schema validation
          1. Use XSLT to enforce validation
          2. Custom program validation routines within application components
          3. Application-specific annotations
        8. 5.2.8. Integrating XML validation into a distributed architecture
        9. 5.2.9. Avoiding over-validation
        10. 5.2.10. Consider targeted validation
        11. 5.2.11. Building modular and extensible XSD schemas
        12. 5.2.12. Understand the integration limitations of your database
          1. Databases with no XML support
          2. Databases for which third-party products provide XML support
          3. Databases with XML extensions
          4. Databases with native XML support
      3. 5.3. Strategies for integrating XML schema administration
        1. 5.3.1. XML schemas and the silent disparity pattern
        2. 5.3.2. A step-by-step XWIF process
          1. Step 1: Assign ownership
          2. Step 2: Identify sources of auto-generated schemas and standardize the relevant tool set
          3. Step 3: Standardize on official XML schemas
          4. Step 4: Create an application review process
          5. Step 5: Create a development and maintenance process
          6. Step 6: Communicate the process, standards, and technology
          7. Step 7: Version control your schemas
      4. 5.4. Strategies for integrating XML transformation
        1. 5.4.1. Positioning XSLT in your architecture
          1. XSLT as a transformation technology within an application
          2. XSLT as a presentation unifier for a single application
          3. XSLT as a transformation technology between applications
          4. XSLT as a presentation unifier for multiple applications
        2. 5.4.2. Pre-transform for static caching
        3. 5.4.3. Create dynamic XSLT style sheets
        4. 5.4.4. Simplify aesthetic transformation with CSS
        5. 5.4.5. Understand the scalability limitations of XSLT
        6. 5.4.6. Strategic redundancy
      5. 5.5. Strategies for integrating XML data querying
        1. 5.5.1. Positioning XQuery in your architecture
          1. XQuery as a query technology within an application
          2. XQuery as a query technology across application data sources
        2. 5.5.2. Multi-data source abstraction
        3. 5.5.3. Establishing a data policy management layer
        4. 5.5.4. Unifying documents and data
    2. 6. Integrating Web services into applications
      1. 6.1. Service models
        1. 6.1.1. Utility services
        2. 6.1.2. Business services
        3. 6.1.3. Controller services
      2. 6.2. Modeling service-oriented component classes and Web service interfaces
        1. 6.2.1. Designing service-oriented component classes (a step-by-step XWIF process)
          1. Step 1: Take inventory of business component classes
          2. Step 2: Identify logic for which Web service support is limited
          3. Step 3: Identify opportunities for reuse
          4. Step 4: Identify interface dependencies
          5. Step 5: Determine levels of interoperability
          6. Step 6: Create granular, task-oriented classes
          7. Step 7: Group methods based on type
          8. Step 8: Identify service encapsulation candidates
          9. Step 9: Review non-service classes
          10. Step 10: Identify cross-task consolidation opportunities
        2. 6.2.2. Designing Web service interfaces (a step-by-step XWIF process)
          1. Step 1: Choose a service model
          2. Step 2: Establish the scope of the service's business function
          3. Step 3: Identify known and potential service requestors
          4. Step 4: Identify the required data bodies
          5. Step 5: Explore application paths
          6. Step 6: Define the encapsulation boundary
          7. Step 7: Model the service interface
          8. Step 8: Map out interaction scenarios
          9. Step 9: Design the message payload
          10. Step 10: Refine the service model
      3. 6.3. Strategies for integrating service-oriented encapsulation
        1. 6.3.1. Define criteria for consistent logic encapsulation and interface granularity
        2. 6.3.2. Establish a standard naming convention
        3. 6.3.3. Parameter-driven vs. operation-oriented interfaces
        4. 6.3.4. Designing for diverse granularity
        5. 6.3.5. Utilize generic services consistently
        6. 6.3.6. Establish separate standards for internal and external services
          1. Internal services
          2. External services
          3. Structuring enterprise standards
        7. 6.3.7. Considering third-party Web services
      4. 6.4. Strategies for integrating service assemblies
        1. 6.4.1. Everything in moderation, including service assemblies
          1. Dependencies
          2. Performance
        2. 6.4.2. Modeling service assemblies
        3. 6.4.3. Compound service assemblies
      5. 6.5. Strategies for enhancing service functionality
        1. 6.5.1. Outputting user-interface information
        2. 6.5.2. Caching more than textual data
        3. 6.5.3. Streamlining the service design with usage patterns
          1. Anticipated caching
          2. Process refinement
          3. Reducing usage errors
          4. Usage patterns for service requestors
      6. 6.6. Strategies for integrating SOAP messaging
        1. 6.6.1. SOAP message performance management
        2. 6.6.2. SOAP message compression techniques
        3. 6.6.3. Security issues with SOAP messaging
        4. 6.6.4. SOAP data types
        5. 6.6.5. Easing into SOAP
    3. 7. Integrating XML and databases
      1. 7.1. Comparing XML and relational databases
        1. 7.1.1. Data storage and security
        2. 7.1.2. Data representation
        3. 7.1.3. Data integrity and validation
        4. 7.1.4. Data querying and indexing
        5. 7.1.5. Additional features
      2. 7.2. Integration architectures for XML and relational databases
        1. 7.2.1. Storing XML documents as database records
        2. 7.2.2. Storing XML document constructs as database records
        3. 7.2.3. Using XML to represent a view of database queries
        4. 7.2.4. Using XML to represent a view of a relational data model
        5. 7.2.5. Using XML to represent relational data within an in-memory database (IMDB)
      3. 7.3. Strategies for integrating XML with relational databases
        1. 7.3.1. Target only the data you need
          1. Performance
          2. Task-oriented data representation
        2. 7.3.2. Avoiding relationships by creating specialized data views
        3. 7.3.3. Create XML-friendly database models
          1. Avoid granular tables and relationships
          2. Support preformatted XML views
          3. Consider descriptive column names
          4. Avoid composite keys
        4. 7.3.4. Extending the schema model with annotations
        5. 7.3.5. Non-XML data models in XML schemas
        6. 7.3.6. Developing a caching strategy
        7. 7.3.7. Querying the XSD schema
        8. 7.3.8. Control XML output with XSLT
        9. 7.3.9. Integrate XML with query limitations in mind
        10. 7.3.10. Is a text file a legitimate repository?
        11. 7.3.11. Loose coupling and developer skill sets
      4. 7.4. Techniques for mapping XML to relational data
        1. 7.4.1. Mapping XML documents to relational data
          1. Table-based mapping
          2. Template-based mapping
          3. Class-based mapping
        2. 7.4.2. The Bear Sightings application
        3. 7.4.3. Intrinsic one-to-one and one-to-many relationships with XML
        4. 7.4.4. Mapping XML to relational data with DTDs
          1. Basic table mapping with DTDs
          2. Data type restrictions with DTDs
          3. Null restrictions with DTDs
          4. Representing relational tables with DTDs
          5. Primary keys with DTDs
          6. Foreign keys with DTDs
          7. Relationships with DTDs
          8. Referential integrity restrictions within DTDs
        5. 7.4.5. Mapping XML to relational data with XSD schemas
          1. Basic table mapping with XSD schemas
          2. Null restrictions with XSD schemas
          3. Primary keys with XSD schemas
          4. Foreign keys with XSD schemas
          5. Composite keys with XSD schemas
          6. Relationships with XSD schemas
      5. 7.5. Database extensions
        1. 7.5.1. Proprietary extensions to SQL
        2. 7.5.2. Proprietary versions of XML specifications
        3. 7.5.3. Proprietary XML-to-database mapping
        4. 7.5.4. XML output format
        5. 7.5.5. Stored procedures
        6. 7.5.6. Importing and exporting XML documents
        7. 7.5.7. Encapsulating proprietary database extensions within Web services
      6. 7.6. Native XML databases
        1. 7.6.1. Storage of document-centric data
        2. 7.6.2. Integrated XML schema models
        3. 7.6.3. Queries and data retrieval
        4. 7.6.4. Native XML databases for intermediary storage
  7. III. Integrating applications
    1. 8. The mechanics of application integration
      1. 8.1. Understanding application integration
        1. 8.1.1. Types of integration projects
        2. 8.1.2. Typical integration requirements
        3. 8.1.3. Progress versus impact
        4. 8.1.4. Types of integration solutions
          1. Extensions to an existing application
          2. New business processes
      2. 8.2. Integration levels
        1. 8.2.1. Data-level integration
        2. 8.2.2. Application-level integration
        3. 8.2.3. Process-level integration
        4. 8.2.4. Service-oriented integration
      3. 8.3. A guide to middleware
        1. 8.3.1. “EAI” versus “middleware”
        2. 8.3.2. Shredding the Oreo
        3. 8.3.3. Common middleware services and products
          1. Data access technology
          2. Distributed technology
          3. Message queues and message-oriented middleware
          4. Application servers and transaction monitors
          5. Integration brokers
        4. 8.3.4. A checklist for buying middleware
          1. Understand the range of supported integration models
          2. Beware industry-specific middleware solutions
          3. Make sure the product manufacturer is progressive
          4. Business process mapping features are critical
          5. Deployment and integration effort
          6. Maintenance considerations
          7. Usability of administration tools are important
          8. Scalability considerations
      4. 8.4. Choosing an integration path
        1. 8.4.1. Two paths, one destination
        2. 8.4.2. Moving to EAI
        3. 8.4.3. Common myths
          1. Myth #1: The sooner the better
          2. Myth #2: If you buy, you comply
        4. 8.4.4. The impact of an upgrade
          1. Upgrading integration solutions is expensive
          2. Upgrading integration solutions is time-consuming
          3. Upgrading integration solutions is disruptive
          4. The value may not always outweigh the cost
        5. 8.4.5. Weighing your options
    2. 9. Service-oriented architectures for legacy integration
      1. 9.1. Service models for application integration
        1. 9.1.1. Proxy services
        2. 9.1.2. Wrapper services
        3. 9.1.3. Coordination services (for atomic transactions)
      2. 9.2. Fundamental integration components
        1. 9.2.1. Adapters
        2. 9.2.2. Intermediaries
        3. 9.2.3. Interceptors
      3. 9.3. Web services and one-way integration architectures
        1. 9.3.1. Batch export and import
          1. Traditional architecture
          2. Encapsulating import and export functions within Web services
          3. Architectural comparison matrix
        2. 9.3.2. Direct data access
          1. Traditional architecture
          2. Encapsulating data access within a Web service
          3. Architectural comparison matrix
      4. 9.4. Web services and point-to-point architectures
        1. 9.4.1. Tightly coupled integration between homogenous legacy applications
          1. Traditional architecture
          2. Encapsulating legacy interfaces within Web services
          3. Architectural comparison matrix
        2. 9.4.2. Tightly coupled integration between heterogeneous applications
          1. Traditional architecture
          2. Loosely coupled integration with service integration layers
          3. Architectural comparison matrix
        3. 9.4.3. Integration between homogenous component-based applications
          1. Traditional architecture
          2. Component-based architecture with Web services
          3. Architectural comparison matrix
        4. 9.4.4. Integration between heterogeneous component-based applications
          1. Traditional architecture
          2. Component-based architecture with Web services
          3. Architectural comparison matrix
      5. 9.5. Web services and centralized database architectures
        1. 9.5.1. Traditional architecture
        2. 9.5.2. Using a Web service as a data access controller
          1. Architectural comparison matrix
      6. 9.6. Service-oriented analysis for legacy architectures
        1. Step 1: Define business requirements and expectations
        2. Step 2: Assess adapter quality
        3. Step 3: Identify required functionality
        4. Step 4: Evaluate development tool support
        5. Step 5: Estimate usage requirements
        6. Step 6: Identify additional integration opportunities
        7. Step 7: Define a high level test strategy
        8. Step 8: Gauge the required skill set
        9. Step 9: Estimate the impact
        10. Step 10: Determine the cost
        11. Step 11: Understand the alternatives
        12. Step 12: Justify the project
    3. 10. Service-oriented architectures for enterprise integration
      1. 10.1. Service models for enterprise integration architectures
        1. 10.1.1. Process services
        2. 10.1.2. Coordination services (for business activities)
      2. 10.2. Fundamental enterprise integration architecture components
        1. 10.2.1. Broker
          1. Data exchange with a broker component
            1. Step 1: retrieve requested data from the source database (Figure 10.8)
            2. Step 2: validate source data using source schema (Figure 10.9)
            3. Step 3: broker the data format (Figure 10.10)
            4. Step 4: validate target data using target schema (Figure 10.11)
            5. Step 5: insert data into target database (Figure 10.12)
        2. 10.2.2. Orchestration
          1. Data exchange with orchestration
            1. Step 1: request data from orchestration (Figure 10.15)
            2. Step 2: request data from application (Figure 10.16)
            3. Step 3: return response to orchestration (Figure 10.17)
            4. Step 4: process orchestration logic (Figure 10.18)
            5. Step 5: forward data to requesting application (Figure 10.19)
      3. 10.3. Web services and enterprise integration architectures
      4. 10.4. Hub and spoke
        1. 10.4.1. Traditional architecture
        2. 10.4.2. Adding integration layers with Web services
      5. 10.5. Messaging bus
        1. 10.5.1. Traditional architecture
        2. 10.5.2. Messaging bus solutions that utilize Web services
      6. 10.6. Enterprise Service Bus (ESB)
    4. 11. Service-oriented integration strategies
      1. 11.1. Strategies for streamlining integration endpoint interfaces
        1. 11.1.1. Make interfaces more generic
        2. 11.1.2. Consolidate legacy interfaces
        3. 11.1.3. Consolidate proxy interfaces
        4. 11.1.4. Supplement legacy logic with external logic
        5. 11.1.5. Add support for multiple data output formats
        6. 11.1.6. Provide alternative interfaces for different SOAP clients
      2. 11.2. Strategies for optimizing integration endpoint services
        1. 11.2.1. Minimize the use of service intermediaries
        2. 11.2.2. Consider using service interceptors
        3. 11.2.3. Data processing delegation
        4. 11.2.4. Caching the provider WSDL definition
      3. 11.3. Strategies for integrating legacy architectures
        1. 11.3.1. Create a transition architecture by adding partial integration layers
        2. 11.3.2. Data caching with an IMDB
        3. 11.3.3. Utilizing a queue to counter scalability demands
        4. 11.3.4. Adding a mini-hub
        5. 11.3.5. Abstract legacy adapter technology
        6. 11.3.6. Leveraging legacy integration architectures
        7. 11.3.7. Appending Web services to legacy integration architectures
      4. 11.4. Strategies for enterprise solution integration
        1. 11.4.1. Pragmatic service-oriented integration
        2. 11.4.2. Integrating disparate EAI products
        3. 11.4.3. Respect your elders (building EAI around your legacy environments)
        4. 11.4.4. Build a private service registry
      5. 11.5. Strategies for integrating Web services security
        1. 11.5.1. Learn about the Web services security specifications
        2. 11.5.2. Build services with a standardized service-oriented security (SOS) model
        3. 11.5.3. Create a security services layer
        4. 11.5.4. Beware remote third-party services
        5. 11.5.5. Prepare for the performance impact
        6. 11.5.6. Define an appropriate system for single sign-on
        7. 11.5.7. Don't over-describe your services
        8. 11.5.8. Fortify or retreat integrated legacy systems
        9. 11.5.9. Take advantage of granular security
        10. 11.5.10. Web services and port 80
        11. 11.5.11. SOAP attachments and viruses
        12. 11.5.12. Consider the development of security policies
        13. 11.5.13. Don't wait to think about administration
  8. IV. Integrating the enterprise
    1. 12. Thirty best practices for integrating XML
      1. 12.1. Best practices for planning XML migration projects
        1. 12.1.1. Understand what you are getting yourself into
        2. 12.1.2. Assess the technical impact
          1. A migration project is like a development project
          2. What to look out for
          3. One more thing…
        3. 12.1.3. Invest in an XML impact analysis
          1. One more thing…
        4. 12.1.4. Assess the organizational impact
        5. 12.1.5. Targeting legacy data
          1. XML-enabling a legacy application
          2. Making legacy applications XML-compliant
          3. One more thing…
      2. 12.2. Best practices for knowledge management within XML projects
        1. 12.2.1. Always relate XML to data
          1. Clarity of concepts
          2. Create a custom glossary
          3. One more thing…
        2. 12.2.2. Determine the extent of education required by your organization
        3. 12.2.3. Customize a training plan
          1. Take a course to learn XML fundamentals
          2. Define roles before assigning further training
          3. Make resources available to your technical staff
          4. Spend your training budget wisely
          5. Bring outside experts in for specialized knowledge transfer
        4. 12.2.4. Incorporate mentoring into development projects
          1. Arrange a consult-and-mentor program
          2. Get suitable mentors
      3. 12.3. Best practices for standardizing XML applications
        1. 12.3.1. Incorporate standards
        2. 12.3.2. Standardize, but don't over-standardize
        3. 12.3.3. Define a schema management strategy
          1. Understand the importance of XML schemas
          2. Assign an XML data custodian
            1. Ownership of vocabularies
            2. Ownership of data models
            3. Namespace domain administration
        4. 12.3.4. Use XML to standardize data access logic
        5. 12.3.5. Evaluate tools prior to integration
      4. 12.4. Best practices for designing XML applications
        1. 12.4.1. Develop a system for knowledge distribution
        2. 12.4.2. Remember what the “X” stands for
        3. 12.4.3. Design with service-oriented principles (even if not using Web services)
        4. 12.4.4. Strive for a balanced integration strategy
          1. Tightening the screw
          2. Stripping the screw
        5. 12.4.5. Understand the roles of supplementary XML technologies
          1. Define a core technology set
          2. Identify second-tier technologies
        6. 12.4.6. Adapt to new technology developments
    2. 13. Thirty best practices for integrating Web services
      1. 13.1. Best practices for planning service-oriented projects
        1. 13.1.1. Know when to use Web services
        2. 13.1.2. Know how to use Web services
        3. 13.1.3. Know when to avoid Web services
        4. 13.1.4. Moving forward with a transition architecture
        5. 13.1.5. Leverage the legacy
          1. Build on what you have
          2. Understand the limitations of a legacy foundation
        6. 13.1.6. Sorry, no refunds (Web services and your bottom line)
        7. 13.1.7. Align ROIs with migration strategies
          1. ROIs open eyes
          2. Iterating through ROI and migration strategy documents
        8. 13.1.8. Build toward a future state
      2. 13.2. Best practices for standardizing Web services
        1. 13.2.1. Incorporate standards
        2. 13.2.2. Label the infrastructure
          1. One more thing
        3. 13.2.3. Design against an interface (not vice versa)
        4. 13.2.4. Service interface designer
        5. 13.2.5. Categorize your services
      3. 13.3. Best practices for designing service-oriented environments
        1. 13.3.1. Use SOAs to streamline business models
        2. 13.3.2. Research the state of second-generation specifications
        3. 13.3.3. Strategically position second-generation specifications
        4. 13.3.4. Understand the limitations of your platform
          1. Proprietary extensions (the potholes)
          2. Exclusive proprietary extensions (the roadblocks)
        5. 13.3.5. Use abstraction to protect legacy endpoints from change
          1. Use abstraction to improve configuration management
          2. Use abstraction to support wholesale application changes
        6. 13.3.6. Build around a security model
          1. Security requirements define boundaries, real boundaries
          2. Define the scope of the security model
      4. 13.4. Best practices for managing service-oriented development projects
        1. 13.4.1. Organizing development resources
        2. 13.4.2. Don't underestimate training for developers
      5. 13.5. Best practices for implementing Web services
        1. 13.5.1. Use a private service registry
          1. Centralize service descriptions in a service repository
          2. Make the use of a service registry mandatory
          3. Assign a resource to maintain the registry
        2. 13.5.2. Prepare for administration
        3. 13.5.3. Monitor and respond to changes in the service hosting environments
        4. 13.5.4. Test for the unknown
    3. 14. Building the service-oriented enterprise (SOE)
      1. 14.1. SOA modeling basics
        1. 14.1.1. Activities
          1. Primitive business activity
          2. Process activity
          3. Business activity
        2. 14.1.2. Services
          1. Primitive business service
          2. Process service
          3. Business service
        3. 14.1.3. Processes
      2. 14.2. SOE building blocks
        1. 14.2.1. SOE business modeling building blocks
          1. Primitive business activity
          2. Primitive business service
          3. The primitive business process
          4. The extended business process
          5. The enterprise domain business process
          6. The enterprise business process
        2. 14.2.2. SOE technology architecture building blocks
          1. Web service operation
          2. Web service
          3. Service-oriented application architecture
          4. Service-oriented integration architecture
          5. Service-oriented EAI architecture
          6. Service-oriented enterprise integration architecture
        3. 14.2.3. Service-oriented security model
      3. 14.3. SOE migration strategy
        1. 14.3.1. Overview of the Layered Scope Model (LSM)
          1. Obstacles to using the LSM
          2. Applying the LSM
          3. Before you begin
        2. 14.3.2. Intrinsic Layer
          1. The service-oriented architecture (SOA) wedge
          2. So, why bother?
          3. Processes, best practices, and strategies
          4. Service models
          5. Technologies
          6. SOE building blocks
        3. 14.3.3. Internal layer
          1. Building for a future state
          2. The service-oriented security (SOS) model wedge
          3. Processes, best practices, and strategies
          4. Service models
          5. Technologies
          6. SOE building blocks
        4. 14.3.4. A2A layer
          1. Building for a future state
          2. Processes, best practices and strategies
          3. Service models
          4. Technologies
          5. SOE building blocks
        5. 14.3.5. EAI layer
          1. Building for a future state
          2. Processes, best practices and strategies
          3. Service models
          4. Technologies
          5. SOE building blocks
        6. 14.3.6. Enterprise layer
        7. 14.3.7. The extended enterprise
        8. 14.3.8. Customizing the LSM
        9. 14.3.9. Alternatives to the LSM
  9. About the Author
  10. About the Photographs