You are previewing Microsoft BizTalk Server 2010 Patterns.
O'Reilly logo
Microsoft BizTalk Server 2010 Patterns

Book Description

Create effective scalable solutions with Microsoft BizTalk Server 2010

  • Provides a unified example from the beginning to end of a real world solution

  • A starter guide expecting little or no previous BizTalk experience, but offering advanced concepts and techniques

  • Provides in-depth background and introduction to the platform and technology

  • Written by a Biztalk architecture MVP

  • In Detail

    Patterns and practices make or break any middleware or integration solution and are especially important with BizTalk Server 2010. Learning the best patterns to use in the appropriate context greatly increases the chances of success for any solution.

    Microsoft Biztalk server 2010 patterns will provide a thorough introduction to BizTalk Server 2010 as a platform and guide the reader through real world lessons and examples building an advanced unified solution that can be used as a reference architecture.

    This book will guide you beyond the basics of BizTalk Server 2010 development and give you the relevant background, theory, and techniques necessary to create successful solutions. You will learn how the BizTalk Server 2010 platform works internally and how to plan for the necessary infrastructure for an installation. You will learn how to build messaging-based solutions including content-based routing that are easy to manage and change. You will learn how to solve common integration and middleware challenges by leveraging the strengths of BizTalk Server 2010.

    This book addresses using Microsoft BizTalk Server 2010 and associated tools to create middleware and integration solutions with established patterns and practices that increase the effectiveness and impact of your solutions.

    Table of Contents

    1. Microsoft BizTalk Server 2010 Patterns
      1. Microsoft BizTalk Server 2010 Patterns
      2. Credits
      3. About the Author
      4. About the Reviewers
        1. Support files, eBooks, discount offers, and more
          1. Why Subscribe?
          2. Free Access for Packt account holders
          3. Instant Updates on New Packt Books
      6. Preface
        1. What this book covers
          1. Part 1
          2. Part 2
        2. What you need for this book
        3. Who this book is for
        4. Conventions
        5. Reader feedback
        6. Customer support
          1. Downloading the example code
          2. Errata
          3. Piracy
          4. Questions
      7. 1. Part 1
        1. 1. Introducing BizTalk Server 2010
          1. Understanding what is BizTalk Server
          2. Stating the goals of BizTalk Server
            1. Increasing reliability
            2. Decoupling systems
            3. Providing reuse
            4. Decreasing development time
            5. Providing rich information to technical as well as business consumers
            6. Improving administration
          3. When to use BizTalk Server
          4. Where does BizTalk fit into the Enterprise?
          5. Exploring the architecture of BizTalk Server
          6. Design patterns within the BizTalk architecture
            1. Messaging
            2. Publish Subscribe
            3. Adapter
            4. Streaming
          7. Understanding BizTalk message flow
            1. The Message Box
            2. Other BizTalk databases
          8. Presenting the BizTalk runtime environment
            1. Servers and Services
              1. Application Servers
              2. Database Servers
              3. Web Servers
              4. Enterprise Single Sign-On Servers
            2. Understanding roles and relationships
              1. The BizTalk group
              2. Hosts
              3. Host instances
              4. Isolated vs. in-process hosts
          9. Summary
        2. 2. Introduction to BizTalk Development
          1. Developing BizTalk solutions
          2. Partitioning the BizTalk solution
            1. Specifying the requirements of solution structure
          3. Understanding the layers of a BizTalk solution
          4. Visual Studio solution structure
            1. Projects
              1. External Schemas (.xsd files)
              2. Internal Schemas (.xsd files)
              3. Maps (.btm files)
              4. Pipelines (.btp files)
              5. Pipeline components (.cs files)
              6. Orchestrations (.odx files)
              7. Libraries (C#, resources, and so on)
              8. Testing (.xml, .dtd, .cs files)
              9. Non-project artifacts
                1. Tip
                2. Tip
            2. Motivations for solution structure
          5. Understanding types in BizTalk
            1. Message types
            2. Types in contexts
            3. Type resolution
          6. Understanding the solution at runtime
          7. Monitoring
            1. Why BAM?
            2. Understanding BAM concepts
            3. Creating a BAM activity
            4. Creating a BAM view
            5. Creating a BAM tracking profile
            6. Advanced BAM concepts
              1. Continuation
              2. Relationship
              3. Document reference URL
          8. Introducing the BAM portal
            1. Presenting BAM alerts
          9. Summary
        3. 3. BizTalk Development Guidelines
          1. Core guidance
            1. Determining where to place different types of logic
              1. Maps
              2. Orchestrations
              3. Business rules
              4. Pipelines and pipeline components
              5. General concept
            2. Mapping at the port level
          2. Orchestration best practices
            1. Avoid overuse of orchestration
            2. Always use multipart messages in orchestrations
            3. Avoid large orchestrations
            4. Minimize trips to the message box (persistence points)
            5. Avoid using atomic scopes to call .NET methods
            6. Don't use XmlDocument for a message type... ever
            7. Avoid loading messages into classes via the XmlSerializer
            8. Use direct bound ports and Content Based Routing
            9. Leverage filters in orchestrations
            10. Use distinguished fields instead of XPath
            11. Avoid unnecessary looping on collections
          3. Pipelines
            1. What are pipelines?
            2. Stages in a receive pipeline
            3. Stages in a send pipeline
            4. Pipeline components
            5. Metadata and message context
            6. Stream processing
          4. Summary
        4. 4. Operating BizTalk
          1. Understanding BizTalk operational architecture
          2. Administering BizTalk Server
          3. Scalability in BizTalk Server
            1. Scaling SQL Server
            2. Scaling BizTalk Server
              1. Adding more hosts and host instances
              2. Adding more servers to the group
          4. Exploring high availability in BizTalk
            1. High availability in SQL Server
            2. High availability with clustered BizTalk hosts
          5. Understanding disaster recovery
            1. The BizTalk backup job
            2. Standing the new BizTalk environment up
          6. Examining sample installation topologies
            1. A single application with a single database
            2. Dual application with dual database (active/passive)
            3. Dual application with dual database (active/active)
            4. Sample Enterprise topology
          7. Walking through the BizTalk deployment process
          8. Presenting the best practices for BizTalk configuration
            1. Separating BizTalk hosts
            2. Host-specific settings
            3. HTTP performance optimization settings
          9. Troubleshooting BizTalk issues
          10. Summary
      8. 2. Part 2
        1. 5. Basic Messaging Solution
          1. Pass thru messaging scenario
            1. Examining the solution
            2. Adding a second receive location
            3. Transport properties
              1. Basic subscriptions
          2. Simple XML messaging with maps
            1. Creating schemas
            2. Creating maps
              1. Creating a map from external PoPurchaseOrder to PurchaseOrder
                1. Testing the map
              2. Creating a map from canonical PurchaseOrder to SalesOrder
            3. Wiring up the solution
              1. Creating the receive port
              2. Creating the send port
            4. Testing the solution
          3. Content-based routing and promoted properties
            1. Property promotion
            2. Updating the solution routing
          4. Multicasting messages
            1. Adding the new send port
          5. Summary
        2. 6. Unit Tests and BAM
          1. What are unit tests?
            1. Tenets of a good test
            2. Composition of a test
            3. Test steps
          2. Tests for the current solution
            1. Standard Purchase Order test
              1. Test setup and cleanup
              2. The test execution stage
            2. Harnessing a test
            3. Visual Studio Project Settings for tests
          3. Creating BAM for a solution
            1. Creating a basic BAM profile
            2. Creating an Activity
            3. Creating a View
            4. Creating the Tracking Profile
          4. Examining the BAM database infrastructure
            1. BAM tables
            2. BAM views
            3. BAM maintenance
              1. Data maintenance
              2. Analysis
          5. Receiving a new Legacy Order format
            1. Creating a BizUnit test
          6. Summary
        3. 7. Leveraging Orchestration
          1. Introducing orchestration
            1. Orchestration basics
          2. Creating the orchestration outline
            1. Creating the PurchaseOrder message
            2. Adding ports to the canvas
            3. Implementing the logical comparison
            4. Checkpoint
          3. Consuming the order discount service
            1. Adding the service artifacts to the solution
            2. Creating the maps
            3. Distinguished fields
            4. Creating a new send port
          4. Handling SOAP Faults
            1. Using scopes and exceptions
            2. Encountering a SOAP Fault
              1. Why is this happening?
            3. Using a scope to catch the fault
            4. Using a loop to retry the request
              1. Breaking out of retry loop
          5. Implementing Failed Message Routing
          6. Summary
        4. 8. The WCF-SQL Adapter and WCF Services
          1. Polling a database with the WCF-SQL Adapter
            1. Constructing XML from SQL using FOR XML
            2. Creating the SQL message schema
            3. Creating the map for the website orders
            4. Creating the new WCF-SQL receive location
          2. Creating the unit test for website order
          3. Performing imperative queries with the WCF-SQL Adapter
            1. Creating the schemas to communicate with the database
            2. Creating the external schema for the service request
            3. Creating the internal schema for the service request
            4. Creating maps for the service
            5. Publishing the schemas as a WCF service
            6. Changing the IIS AppPool
            7. Creating the send port for the SQL request
            8. Testing the service
          4. Summary
        5. 9. Expanding the Solution with Services and Rules
          1. Consuming the customer service
            1. Creating a new map
            2. Adding the data query to the orchestration
              1. Creating the logical port
              2. Adding the new send and receive shapes
              3. Enhancing the discount calculation
            3. Updating the WCF-SQL Send Port
          2. Using Business Rules to improve our process
            1. Introduction to the Business Rules Editor
            2. Creating a vocabulary
              1. Adding a new set of values called definition
              2. Creating XML definitions in a vocabulary
            3. Creating a policy
            4. Updating the orchestration to call this policy
          3. Performing a simple update to the policy
            1. Understanding how business rules work
          4. Expanding the policy
            1. Looping in BRE
              1. Building the Library project
              2. Using the product class from BRE
          5. Deploying policies
          6. Summary
        6. 10. Envelopes, Flat Files, and Batching
          1. Understanding delimited flat files
            1. Creating the delimited flat file schema
            2. Mapping the delimited flat file
            3. Using the flat file schema
            4. Compile and deploy the solution
          2. Working with positional flat files
          3. Grasping important flat file schema concepts
            1. Using flat file headers and trailers
          4. Processing XML envelopes
          5. Testing envelopes and pipelines
            1. XML Disassmbler
            2. Flat file disassembler
            3. XML assembler / flat file assembler
            4. Pipeline testing
          6. Summary
        7. 11. Completing the Order Processing Solution
          1. Exposing the process to web service clients
            1. Expose the schema as a service endpoint
            2. Creating a new one-way receive location
          2. Examining the solution bindings
            1. Exporting the bindings
            2. Understanding bindings
            3. Modifying bindings
              1. Creating bindings for each environment
          3. Building and deploying the solution
            1. Building an MSI manually
            2. Examining how the MSI is built
            3. Automating MSI builds
          4. Using advanced BAM features
            1. Updating BAM activities
            2. Defining groups for BAM milestones
            3. Creating dimensions
            4. Defining measures in BAM views
            5. Leveraging BAM continuation
            6. Exploring the improved view
              1. Running the SSIS package to process aggregations
              2. Viewing the aggregation results
          5. Summary
        8. 12. Asynchronous Solutions
          1. Introducing the inventory management solution
          2. Inventory notification with approval
            1. Creating the notification schema with the WCF SQL adapter
            2. Using SQL table operations
            3. Consuming the vendor order service
          3. Creating the orchestration
            1. Creating messages
            2. Laying out the shapes
            3. Creating the logical ports
            4. Creating the correlation
          4. Updating the inventory
            1. Creating a composite operation schema
            2. Creating the composite operation map
          5. Creating the other maps
          6. Binding the solution
            1. Importing the notification bindings
            2. Importing the WCF-SQL send bindings
            3. Manually creating a WCF-SQL send port
            4. Creating the approval physical ports
              1. Manually creating a web service send port
              2. Binding the orchestration
          7. Exploring other approaches
            1. Querying for missed notifications
            2. Using the polling method
            3. Polling settings
          8. Summary
        9. 13. Performing Parallel Processing and Branching
          1. Revising solution requirements
          2. Implementing the broker pattern
            1. Using the decide shape
            2. Assessing this approach
            3. Creating a more extensible solution
              1. Understanding roles
              2. Understanding parties
          3. Improving the broker with role-based links
            1. Implementing role party links
            2. Creating parties
            3. Adding a new vendor
          4. Enabling parallel processing
          5. Understanding the parallel shape
          6. Implementing scatter gather
            1. Improving scatter gather
          7. Summary
        10. 14. Processing Message Convoys
          1. Creating a sequential convoy
            1. Creating the envelope
            2. Creating the pipeline
            3. Creating the orchestration
            4. Creating the convoy correlation
            5. Binding the solution
            6. Running the sequential convoy
            7. Improving our solution
            8. Dealing with zombies
          2. Creating a parallel convoy
            1. Creating the VendorInformation schema
              1. Creating the promoted property
              2. Promoting the elements
            2. Creating the orchestration
            3. Wiring up the orchestration ports
            4. Creating the correlation
            5. Binding the solution
            6. Running the parallel convoy
          3. Creating a non-uniform sequential convoy
          4. Using advanced correlations
          5. A note about orchestration development
          6. Summary
      9. A. Appendix
        1. XML for BizTalk development
          1. A brief history of XML
          2. Understanding parts of an XML document
            1. Declaration
            2. Elements
            3. Attributes
            4. Root elements
            5. Namespaces
          3. Understanding XPath
          4. The rest of XML
          5. Understanding equivalence
        2. Troubleshooting guide
          1. Nothing happened—what now?
          2. I dropped my message and it didn't get picked up
          3. I dropped my message and it disappears, but does not go where I expect it to go
        3. What is coupling?
          1. Untyped messages
          2. Implicitly ordered operations
          3. The continuum of coupling
          4. Definition of loose coupling
          5. State
            1. What is state?
            2. Why is state expensive?
            3. How does state relate to coupling?
            4. Why do people feel like they need state?
            5. How can you avoid state?
            6. Where does all this fit into services?