Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei...

21
Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

Transcript of Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei...

Page 1: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

Pro BizTalk 2009

George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

Page 2: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

Pro BizTalk 2009

Copyright © 2009 by George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher.

ISBN-13 (pbk): 978-1-4302-1981-1

ISBN-13 (electronic): 978-1-4302-1982-8

Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1

Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.

Lead Editor: Jonathan GennickTechnical Reviewer: Richard SeroterEditorial Board: Clay Andres, Steve Anglin, Mark Beckner, Ewan Buckingham, Tony Campbell, Gary Cor-

nell, Jonathan Gennick, Jonathan Hassell, Michelle Lowman, Matthew Moodie, Jeffrey Pepper, Frank Pohlmann, Douglas Pundick, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh

Project Managers: Sofia Marchant, Kylie JohnstonCopy Editor: Kim WimpsettAssociate Production Director: Kari Brooks-CoponyProduction Editor: Kelly GuntherCompositor: Linda Weidemann, Wolf Creek Publishing ServicesProofreader: Nancy SixsmithIndexer: John CollinArtist: April MilneCover Designer: Anna IshchenkoManufacturing Director: Tom Debolski

Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail , or visit .

For information on translations, please contact Apress directly at 233 Spring Street, New York, NY 10013. E-mail , or visit .

Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at .

The information in this book is distributed on an “as is” basis, without warranty. Although every pre-caution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work.

The source code for this book is available to readers at .

Page 3: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

To my daughter, Gillian—thank you for brightening each day with your smile and laughter. To my son, Bennett—congratulations on your new job

as a Big Brother and for making us feel so young. And for my wife, Keressa— my eternal gratitude for your love and support after all these years.

—George Dunphy

To my family: Elena, Boris, Alex, and Julia.—Sergei Moukhnitski

This book is dedicated to my family.—Stephen Kaufman

To my wife, Susy: For the love and support you have given me as well as for your patience putting up with all of my long nights stuck behind a computer screen.

To my daughter, Isabella: You arrived three weeks later than we expected, which gave me time to finish my work on this book. May your

timing continue to be that perfect through the rest of your life.To my mom: For all those school assignments and reports where you

served as editor and proofreader for a very stubborn author.—Peter Kelcey

To my parents, Amelia Urquiza and Benjamin Campos, and to my siblings, Daniel Campos and Annia Campos, for their love and eternal support.

To my lovely wife and daughter, Claudia Luz and Valeria Valentina, for being the light that shines my life and that makes my heart dance the most beautiful music.

—Harold Campos

Page 4: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

v

Contents at a Glance

About the Authors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi

Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv

PART 1 Readme.1stCHAPTER 1 BizTalk in the Enterprise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

CHAPTER 2 Starting a New BizTalk Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

PART 2 BizTalk RevealedCHAPTER 3 Thinking Inside the Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

CHAPTER 4 Pipelining and Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

CHAPTER 5 Pipeline Component Best Practices and Examples . . . . . . . . . . . . . . 153

CHAPTER 6 BizTalk Design Patterns and Practices. . . . . . . . . . . . . . . . . . . . . . . . . . 211

CHAPTER 7 What the Maestro Needs to Know: Advanced Orchestration Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

CHAPTER 8 Playing By the Rules? Use the Business Rule Engine . . . . . . . . . . . . 305

PART 3 You Mean You Aren’t a Developer?CHAPTER 9 BizTalk Server 2009 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

CHAPTER 10 Deploying and Managing BizTalk Applications . . . . . . . . . . . . . . . . . . 393

CHAPTER 11 To Tune or Not to Tune? Nobody Should Ask That Question . . . . . . 453

CHAPTER 12 WCF Adapters: Standardizing Your Integration Endpoints . . . . . . . . 507

CHAPTER 13 WCF LOB Adapter SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

CHAPTER 14 Host Integration Server 2009 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595

CHAPTER 15 The Enterprise Service Bus Toolkit 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . 645

INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695

Page 5: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

vii

Contents

About the Authors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi

Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv

PART 1 Readme.1st

CHAPTER 1 BizTalk in the Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

What Is in the Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Common Enterprise Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

BizTalk Is Not Dead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

BizTalk Is Not SOA, and SOA Is Not BizTalk . . . . . . . . . . . . . . . . . . . . . . . . . 10

The Rise and Fall and Rise of SOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

BizTalk and the Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

New BizTalk Solution Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

What Are the Team’s Current Core Skills? What Skills Will the Team Need to Attain? . . . . . . . . . . . . . . . . . . . 12

What Type of Upstream and Downstream Systems Are You Connecting With?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

What Are the Project Timelines? Will the Team Be Using BizTalk Exclusively to Decrease Development Time? . . . . . . . . . 15

Is There Enough in the Budget to Implement BizTalk? . . . . . . . . . . . 16

How Many Servers Are Required to Implement a BizTalk Solution? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

How Much Custom Code Are You and Your Team Willing to Create? Would You Rather Use Completely Out-of-the-Box Functionality? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Is BizTalk Suited for the Application in Question? . . . . . . . . . . . . . . . 23

Will Every Transaction in the System Need Monitoring? Will the Tracked Data Need Saving for Archiving Purposes? . . . 25

Page 6: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTSviii

CHAPTER 2 Starting a New BizTalk Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Starting Preliminary Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Creating Your Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Isolated Development Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Using Virtual Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Organizing Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Structuring and Integrating with Visual Studio . . . . . . . . . . . . . . . . . . . . . . . 38

Single Visual Studio Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Multiple Visual Studio Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Developer-Independent Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Application Lifecycle Management with BizTalk Server . . . . . . . . . . . . . . . 43

Enhancements in the Visual Studio Environment . . . . . . . . . . . . . . . . 44

Improvements in the BizTalk Project System . . . . . . . . . . . . . . . . . . . 45

TFS Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Enhanced Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Organizing Artifacts in BizTalk Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

BizTalk Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

BizTalk’s Administration Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Creating a Build-and-Integration Environment . . . . . . . . . . . . . . . . . . . . . . . 49

Five-Step Build Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Using Test-Driven Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Creating a BizTalk Installation Package . . . . . . . . . . . . . . . . . . . . . . . . 57

BizTalk Assembly Naming and Versioning . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Side-by-Side Deployments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Side-by-Side Deployment Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . 61

BizTalk Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

BizTalk Artifact Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

BizTalk Messaging Artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

PART 2 BizTalk Revealed

CHAPTER 3 Thinking Inside the Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Understanding the Message Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

The Messagebox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Messaging Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Page 7: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTS ix

Using XML Namespaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Understanding Property Promotions . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Using Port Filters and Content-Based Routing . . . . . . . . . . . . . . . . . . 89

Using System Property Schemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

Tracking and Message Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Handling Failed Messages and Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

The BizTalk Management Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

CHAPTER 4 Pipelining and Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Getting Started with Pipeline Development. . . . . . . . . . . . . . . . . . . . . . . . . 117

Pipeline Stages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

Understanding Pipeline Execution. . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

Understanding Interchanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

Overview of Recoverable Interchange Handling . . . . . . . . . . . . . . . . 121

Configuring Recoverable Interchanges. . . . . . . . . . . . . . . . . . . . . . . . 123

Using the Default Pipelines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

Routing Binary Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

Using BizTalk Framework 2.0 Reliable Messaging . . . . . . . . . . . . . . . . . . 128

BizTalk Framework Assembler and Disassembler Pipeline Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Working with BizTalk Framework Properties WithinOrchestrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Acknowledgment Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Custom Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

Component Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Component Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

Key BizTalk API Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

Writing Your First Pipeline Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Creating More Complex Pipeline Components . . . . . . . . . . . . . . . . . . . . . . 138

Dynamically Promoting Properties and Manipulating the Message Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Schema Selection in VS .NET Designer . . . . . . . . . . . . . . . . . . . . . . . 142

Validating and Storing Properties in the Designer . . . . . . . . . . . . . . 145

Custom Disassemblers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

Page 8: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTSx

CHAPTER 5 Pipeline Component Best Practices and Examples . . . . . . 153

Creating Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

Using BizTalk Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

VirtualStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

SeekableReadOnlyStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

XPathReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

Pipeline Component Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Dealing with Extremely Large Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Caveats and Gotchas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

Large Message Decoding Component (Receive Side) . . . . . . . . . . . 164

Large Message Encoding Component (Send Side). . . . . . . . . . . . . . 173

Dealing with Compressed Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

Sending Simple Zipped Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

Sending Multiple Zipped Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

Receiving Zipped Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Using PGP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

PGP Encode Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

PGP Decode Component. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

The Databased Disassembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

CHAPTER 6 BizTalk Design Patterns and Practices . . . . . . . . . . . . . . . . . . . 211

Implementing Dynamic Parallel Orchestrations . . . . . . . . . . . . . . . . . . . . . 211

When to Use Them. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

Broker Implementation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

Handling Ordered Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

Building a Resequencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

Resequencer Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

BizTalk Components Needed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

Building the Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

Building a Resequencing Aggregator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Solution 1: Status Quo—Messages Received as Independent Interchanges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Solution 2: Not So Status Quo—Messages Received as a Batch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

Page 9: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTS xi

Editing and Resubmitting Suspended Messages . . . . . . . . . . . . . . . . . . . . 227

Strategy for Edit and Resubmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Pulling Data from the Suspended Queue . . . . . . . . . . . . . . . . . . . . . . 227

Canonical Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

Clients for Editing the Message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

Additional Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

Moving Correct Data Back into BizTalk . . . . . . . . . . . . . . . . . . . . . . . 228

Sample Flows for Edit and Resubmit . . . . . . . . . . . . . . . . . . . . . . . . . 229

Pseudo-Walkthrough to Perform Edits and Resubmits . . . . . . . . . . 230

Managing Exceptions in Orchestrations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

The Exception Management Challenge . . . . . . . . . . . . . . . . . . . . . . . 241

BizTalk Server 2009 Failed Message Routing As a Blueprint. . . . . 243

Failed Orchestration Routing API for BizTalk 2009 . . . . . . . . . . . . . 246

Running the EAIProcess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Processing and Retrieving Messages and Exceptions from the Fault Message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

Beyond the Next Horizon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

Implementing a Scatter/Gather Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

CHAPTER 7 What the Maestro Needs to Know: Advanced Orchestration Concepts . . . . . . . . . . . . . . . . . . . . . . . . 269

What an Orchestration Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

What the Orchestration Engine Provides . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

Do You Really Need an Orchestration? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

Know Your Instruments (Shapes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

What Transactions Mean and Cost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Atomic Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

Long-Running Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

Threading and Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

Dehydration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

The Dehydration Algorithm and Thresholds . . . . . . . . . . . . . . . . . . . 284

The Cost of Parallel Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

Correlation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

What Is Correlation? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Convoys: Serial vs. Parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

Dynamic Message Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

Low-Volume Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

High-Volume Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

Page 10: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTSxii

Pitfalls of Orchestration Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

Batch Processing and Legacy Systems . . . . . . . . . . . . . . . . . . . . . . . 295

Interactive Orchestrations (the Request/Response Approach) . . . . 295

Calling an Assembly or Sending a Message to a Web Service . . . 296

Error Handling and Suspended Instances . . . . . . . . . . . . . . . . . . . . . 296

Orchestration Engine Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . 297

CHAPTER 8 Playing By the Rules? Use the Business Rule Engine . . . 305

What Is a Business Rule Engine? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

What Are Business Rules? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

When to Use the BRE? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

What Are the Artifacts That Constitute a Business Rule? . . . . . . . . . . . . . 309

Facts and Vocabularies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

Rules and Priorities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

The Business Rule Composer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

Creating Vocabularies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

Creating Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

How Does the BRE Work? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

Testing Business Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

Going to Production. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

Executing Business Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

Calling the Engine from Within an Orchestration . . . . . . . . . . . . . . . 335

Referencing a .NET Class from a Policy That Is Being Called from an Orchestration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

Returning a Value from the BRE to the Calling Orchestration. . . . . 337

Calling the Engine from a .NET Application . . . . . . . . . . . . . . . . . . . . 338

Policy Chaining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

PART 3 You Mean You Aren’t a Developer?

CHAPTER 9 BizTalk Server 2009 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

Configuration and Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

Administration Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

Application Concept. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

BizTalk Server Administration Console. . . . . . . . . . . . . . . . . . . . . . . . 348

Page 11: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTS xiii

Scalability and High Availability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352

Windows Server 2008 64-bit Support . . . . . . . . . . . . . . . . . . . . . . . . 352

Hyper-V Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

Scalability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

High Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

Maintaining the BizTalk Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

SQL Agent Job Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

Backup Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

Restore Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

Disaster Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

How Does BizTalk Log Shipping Work? . . . . . . . . . . . . . . . . . . . . . . . 381

Configuring the Destination System for Log Shipping . . . . . . . . . . . 384

BizTalk Group Disaster Recovery Procedures . . . . . . . . . . . . . . . . . . 388

BizTalk Runtime Server Disaster Recovery Procedures . . . . . . . . . 389

Restore Procedures for BAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

Other Disaster Recovery Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

Related Non-BizTalk Application Disaster Recovery Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392

CHAPTER 10 Deploying and Managing BizTalk Applications . . . . . . . . . . 393

BizTalk Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

Important Deployment Artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

Binding Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

Processing Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

Deploying a BizTalk Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

Steps in Deploying a BizTalk Application. . . . . . . . . . . . . . . . . . . . . . 400

MSI Export/Import/Install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

Typical Deployment Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

Administrative Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

BizTalk Administration Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

BTSTask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

ExplorerOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424

MSBuild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

Page 12: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTSxiv

CHAPTER 11 To Tune or Not to Tune? Nobody Should Ask That Question. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

What to Do First . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

Gather Metrics on Expected Loads . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

Prepare the Proper Environment and Gather Performance Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

Three Phases of Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

Ready-to-Bake BizTalk Performance Plan . . . . . . . . . . . . . . . . . . . . . . . . . 457

Phase 1: Plan Your Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

Phase 2: Create, Execute, and Analyze . . . . . . . . . . . . . . . . . . . . . . . 462

Phase 3: Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

What to Keep in Mind When Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . 474

What to Keep in Mind About Your Code . . . . . . . . . . . . . . . . . . . . . . . 478

How to Tune Each Subsystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

ASP.NET, SOAP, and HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488

CLR Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

File Tuning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495

Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

Throttling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

CHAPTER 12 WCF Adapters: Standardizing Your Integration Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507

WCF and BizTalk 2009 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507

Exploring the Built-in WCF Adapter Transport Support . . . . . . . . . . 508

Using the WCF Service Publishing Wizard . . . . . . . . . . . . . . . . . . . . . 510

Publishing Your WCF Service from the Command Line. . . . . . . . . . 513

Consuming WCF Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515

Specifying Dynamic Port Properties . . . . . . . . . . . . . . . . . . . . . . . . . . 516

Securing Your Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516

Transport, Message, or Mixed?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517

Using makecert to Implement Message-Level Encryption . . . . . . . 518

Using Metadata Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

Publishing MEX Metadata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

Customizing the SOAP Address Location. . . . . . . . . . . . . . . . . . . . . . 521

Customizing MEX with a WCF Behavior . . . . . . . . . . . . . . . . . . . . . . . 522

Page 13: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTS xv

Using the WCF-WSHttp Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

Binding Configuration Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

Security Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

Message Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528

WS-AtomicTransaction Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

End-to-End Example: Exposing a WCF Service . . . . . . . . . . . . . . . . . . . . . 530

Creating an Addition Orchestration . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

Exposing the Orchestration via the WCF-CustomIsolated Adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

Securing Requests with Message-Level Certificate Encryption. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532

Creating the WCF Test Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534

BizTalk Endpoint Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

The Problem with WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

Where Does the MSE Help? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538

Endpoint Virtualization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

Operation Versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542

CHAPTER 13 WCF LOB Adapter SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

Understanding the WCF LOB Adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

WCF Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

WCF Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547

WCF LOB Adapters vs. WCF Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

Dynamic Metadata Discovery and Resolution. . . . . . . . . . . . . . . . . . 549

WCF LOB Adapter Vivisected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

The Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

The Metadata Handlers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

The Message Exchange Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553

Walk-Through. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553

Step 1: Generating Adapter Skeleton Code . . . . . . . . . . . . . . . . . . . . 553

Step 2: UI Logical Grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560

Step 3: Implementing the Connection . . . . . . . . . . . . . . . . . . . . . . . . 564

Step 4: Implementing the Metadata Handlers. . . . . . . . . . . . . . . . . . 571

Step 5: Implementing the Message Exchange Handlers. . . . . . . . . 580

Step 6: Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587

Step 7: Consuming from an .NET Application . . . . . . . . . . . . . . . . . . 588

Step 8: Consuming from BizTalk Application . . . . . . . . . . . . . . . . . . 590

Debugging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592

Page 14: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTSxvi

CHAPTER 14 Host Integration Server 2009 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595

Planning Your Host Integration Server Topology . . . . . . . . . . . . . . . . . . . . 597

Setup Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597

Host Integration Server Topologies . . . . . . . . . . . . . . . . . . . . . . . . . . . 598

Mainframe Access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

Using TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

Using SNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

Configuring the IP-DLC Link Service. . . . . . . . . . . . . . . . . . . . . . . . . . 603

SNA Load Balancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608

Transaction Integrator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612

Enabling Transaction Integrator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612

Deploying Transaction Integrator Servers . . . . . . . . . . . . . . . . . . . . . 613

Programming Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614

Importing the Copybook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617

Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619

Session Integrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622

BizTalk Adapter for Host Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628

Two-Phase Commit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632

Performance Testing and Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635

Performance Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635

Performance Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637

Troubleshooting and Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639

Troubleshooting Plan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640

Host Integration Server Tracing and Log Analysis . . . . . . . . . . . . . . 640

CHAPTER 15 The Enterprise Service Bus Toolkit 2.0 . . . . . . . . . . . . . . . . . . . 645

BizTalk and the ESB Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645

Functional Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646

Aligning the ESB with Your Core SOA Goals . . . . . . . . . . . . . . . . . . . 647

BizTalk as an ESB? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647

Getting Developers on Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648

The Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649

Mediation Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650

Resolvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655

Adapter Providers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657

Mediation Policies (Itineraries). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659

Page 15: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

CONTENTS xvii

The Functional Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664

Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664

Schemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

The Itinerary Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668

ItineraryHelper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

Pipeline Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670

Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678

Orchestrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679

Resolver Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682

Adapter Provider Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683

Business Rule Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683

Working with Itineraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688

Setting Up a New Itinerary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688

Defining Your Itinerary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690

Validating and Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693

Using the Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693

Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693

INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695

Page 16: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

xix

About the Authors

GEORGE DUNPHY is an architect with Microsoft Consulting Services’ World Wide Technical Quality Assurance. He has 14 years of experience and focuses on technologies such as the Microsoft .NET Framework, BizTalk Server, Visual Basic and Visual Basic .NET, Active Server Pages, COM, SQL Server, XML, SOAP and WSDL, T-SQL, and web development. In addition to his technical skills, George focuses on managing development teams for large enterprise application development projects. He works with a variety of cus-tomers ranging from governments to Fortune 100 companies to start-ups. He lives in Ottawa, Canada, with his wife, Keressa, and their two children.

SERGEI MOUKHNITSKI is a senior software architect with Sanoraya Con-sulting in Ottawa, Canada. He has 14 years of experience developing software and systems. Currently, Sergei is consulting and managing out-sourcing projects.

His area of professional interest is Microsoft business process and integration technologies. His Microsoft certifications include MCAD.NET and MCSD.NET. Sergei has a master’s degree from the State Technical University in St. Petersburg, Russia.

STEPHEN KAUFMAN is a delivery architect with Microsoft Consulting Ser-vices focusing on middle-tier technologies and has worked with BizTalk since the original BizTalk CTP in 1999. In addition, he is an author, trainer, and speaker. He has written Microsoft Knowledge Base articles, a BizTalk tools white paper, and a number of other articles. He was a contributing author for the BizTalk Certification Exam 74-135. He also writes a blog focused on integration technologies at http://blogs.msdn.com/skaufman. Stephen has also spoken both nationally and interna-tionally at events such as TechEd North America, TechEd EMEA,

Microsoft’s SOA & BPM Conference, Microsoft’s Developer Days, and a number of other conferences and events.

Page 17: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

ABOUT THE AUTHORSxx

PETER KELCEY is a senior technology specialist with Microsoft Canada who focuses on architectures and technologies related to connected sys-tems and integration. He focuses on concepts such as service-oriented architecture, Enterprise Service Bus, enterprise application integration, business-to-business integration, business process management, model-ing, and RFID.

Within his current role, he is responsible for technical presales activi-ties across Microsoft’s enterprise clients located in central and eastern Canada. An early adopter of Microsoft’s Enterprise Service Bus Toolkit,

he developed Microsoft’s first ESB “training in a box” course as part of his activities to drive developer readiness for this new technology.

Prior to his current role, he spent more than a decade in the IT consulting world where he architected, developed, and delivered enterprise applications for large organizations across Canada while working for TELUS Business Solutions.

An experienced presenter, Peter has spoken at a wide range of conferences, events, and seminars including Microsoft’s SOA Conference, Microsoft’s TechReady Conference, Cana-dian Strategic Architecture Forum, Canadian Financial Architects Summit, and the Aspiring Architect’s Webcast Series.

HAROLD VALENTIN CAMPOS URQUIZA is a consultant with Microsoft Con-sulting Services specializing in SOA, legacy integration, collaboration, and e-commerce. He has more than ten years of experience in IT business around the world. He has managed, architected, and developed solutions in the government, defense, banking, energy, telecommunications, retail, mining, and health-care sectors.

Harold has a bachelor’s degree in systems engineering at the pres-tigious National University of Engineering in Lima, Peru, where he was ranked second in his class. He is also a Microsoft Certified Solutions Devel-

oper and Microsoft Certified Technology Specialist in BizTalk and SharePoint technologies.Currently, Harold lives in Toronto, Canada, spending most of his time working in legacy

integration and collaboration solutions for Canadian customers. You can reach him at [email protected].

DAVID PETERSON is a solution architect with Microsoft Consulting Services specializing in enterprise application architecture and development. He has 18 years of experience in soft-ware development with both Microsoft and a large Canadian retail organization and has extensive experience is architecting, building, and deploying enterprise-scale applications in mission-critical environments. David is a Microsoft Certificated Solution Developer focusing on technologies such as Microsoft .NET Framework, Commerce Server, SQL Server, Visual C#, Visual Basic, Windows Communication Foundation, Windows Workflow, Smart Client, and ASP.NET web development.

Page 18: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

xxi

About the Technical Reviewer

RICHARD SEROTER is a solutions architect for an industry-leading biotech-nology company, a Microsoft MVP for BizTalk Server, and a Microsoft Connected Technology Advisor. He has spent the majority of his career consulting with customers as they planned and implemented their enter-prise software solutions. Richard worked first for two global IT consulting firms, which gave him exposure to a diverse range of industries, technolo-gies, and business challenges. Richard then joined Microsoft as a SOA/BPM technology specialist where his sole objective was to educate and collaborate with customers as they considered, designed, and architected

BizTalk solutions. One of those customers liked him enough to bring him onboard full-time as an architect after they committed to using BizTalk Server as their Enterprise Service Bus. Once the BizTalk environment was successfully established, Richard transitioned into a solutions architect role where he now helps identify enterprise best practices and applies good architec-tural principles to a wide set of IT initiatives.

Richard is the author of the recently released SOA Patterns for BizTalk Server 2009 book, which covers how to apply good SOA principles to a wide variety of BizTalk scenarios.

Richard maintains a semipopular blog of his exploits, pitfalls, and musings with BizTalk Server and enterprise architecture at http://seroter.wordpress.com.

Page 19: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

xxiii

Acknowledgments

First I have to thank the entire integration community at Microsoft. You are all really a world-class group of individuals, and it has been my pleasure to work with all of you during my career at Microsoft. I also have to thank the other authors in this book, without whom this book would not be possible. They have gone above and beyond what I asked of them, and they each gave this project 110%. I would really like to thank Richard Seroter for agreeing to be our tech reviewer. Richard is absolutely a gem for anything BizTalk related and has helped us so much in the creation of this revision of the book. I would also like to thank Jonathon Gennick at Apress for again being our editor and helping us navigate through the many issues both big and small that we came across while writing this book. Lastly, I have to thank Sergei for all his hard work and dedication to this project. You have made this project a success with your hon-esty and work ethic.

George Dunphy

I want to thank Richard Seroter, technical reviewer of the book. Richard’s expertise, advice, and comments have greatly improved the quality of the book. Richard, thanks!

I also would like to thank the entire Apress team: Jonathan Gennick, Kylie Johnston, Sofia Marchant, and Kelly Gunther. Special thanks to Kim Wimpsett for her tireless copyediting of my work and attention to detail. Kim, I thank you.

Sergei Moukhnitski

Page 20: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

xxv

Introduction

A Tale of Two ProductsIn the beginning, when BizTalk was still in its infancy, there were two teams within Microsoft: the Commerce Server Team and the COM+ team. The Commerce Server Team was imple-menting technology it called Commerce Server Messaging Pipelines, which was essentially software that allowed applications to move messages from one system to another system using the commerce server framework. The goal was to abstract away the sending and receiving of messages from the transports that they used. For example, using this framework, a developer would not care about the physical implementation of how the messages were sent; that infor-mation would be abstracted away into another construct called a port. The port would talk to an adapter that handled the communication to and from the medium in question, whether it was a file system, an FTP server, or a web server.

At the same time, the COM+ team was implementing a new graphical workflow represen-tation system they called XLang. XLang schedules, as they were called, would compile down to a binary format and run within the XLang engine inside COM+. Each schedule would be drawn, not coded, to model a business process that the developer was trying to automate. This schedule could also access existing components that were present within the organization, assuming they used the principles of n-tiered architecture and had implemented a well-defined business object library.

The rumor was that when Bill Gates saw these two technologies, he immediately sought to find a way to combine them. His vision was to allow the developer to graphically draw a work-flow that modeled a business process and allow the information needed by that process to be received and sent freely within or outside an organization. He envisioned a “next-generation programming language” type of tool that allowed even the most nonprogrammer type to model a business process, interact with already defined business objects, and send and receive messages without having to worry about the details of how to physically implement this trans-port. With that, BizTalk 2000 was born.

The Platform TodayBizTalk Server has progressed into a world-class application platform capable of supporting the most complicated business requirements and scenarios. BizTalk can do this while provid-ing a rich development experience and allowing for the rapid development of solutions at a much faster pace than was capable even a few years ago.

In its early versions, the tool was powerful but not complete. The first two editions of BizTalk laid the groundwork for implementing real business process automation within many organizations, but it lacked the robustness of a real development environment, proper admin-istration tools, an application release management service, and several other features.

Page 21: Pro BizTalk 20093A978-1-4302... · 2017. 8. 27. · Pro BizTalk 2009 George Dunphy, Sergei Moukhnitski, Stephen Kaufman, Peter Kelcey, Harold Campos, David Peterson

INTRODUCTIONxxvi

This book is targeted toward the architect. This is the person who, at the end of the day, wears either the success or failure of any software project. My hope is that this book will give that person the tools and know-how to successfully implement a BizTalk solution and feel comfortable that they have designed the best application possible.

Downloading the CodeThe source code for this book is available to readers on the book’s page at www.apress.com. Please feel free to visit the Apress web site and download all the code there. You can also check for errata and find related titles from Apress.

George Dunphy