| Foreword by John Crupi |
|
xv | |
| Foreword by Martin Fowler |
|
xvii | |
| Preface |
|
xix | |
| Acknowledgments |
|
xxv | |
| Introduction |
|
xxix | |
| Chapter 1: Solving Integration Problems Using Patterns |
|
1 | (38) |
|
|
|
1 | (1) |
|
|
|
2 | (2) |
|
How Integration Patterns Can Help |
|
|
4 | (1) |
|
The Wide World of Integration |
|
|
5 | (4) |
|
|
|
9 | (2) |
|
|
|
11 | (4) |
|
A Loosely Coupled Integration Solution |
|
|
15 | (2) |
|
Widgets & Gadgets 'R Us: An Example |
|
|
17 | (20) |
|
|
|
18 | (1) |
|
|
|
18 | (2) |
|
|
|
20 | (6) |
|
|
|
26 | (4) |
|
|
|
30 | (2) |
|
|
|
32 | (1) |
|
|
|
33 | (1) |
|
|
|
34 | (3) |
|
|
|
37 | (2) |
| Chapter 2: Integration Styles |
|
39 | (18) |
|
|
|
39 | (4) |
|
File Transfer (by Martin Fowler) |
|
|
43 | (4) |
|
Shared Database (by Martin Fowler) |
|
|
47 | (3) |
|
Remote Procedure Invocation (by Martin Fowler) |
|
|
50 | (3) |
|
|
|
53 | (4) |
| Chapter 3: Messaging Systems |
|
57 | (42) |
|
|
|
57 | (3) |
|
|
|
60 | (6) |
|
|
|
66 | (4) |
|
|
|
70 | (8) |
|
|
|
78 | (7) |
|
|
|
85 | (10) |
|
|
|
95 | (4) |
| Chapter 4: Messaging Channels |
|
99 | (44) |
|
|
|
99 | (4) |
|
|
|
103 | (3) |
|
Publish-Subscribe Channel |
|
|
106 | (5) |
|
|
|
111 | (4) |
|
|
|
115 | (4) |
|
|
|
119 | (3) |
|
|
|
122 | (5) |
|
|
|
127 | (6) |
|
|
|
133 | (4) |
|
|
|
137 | (6) |
| Chapter 5: Message Construction |
|
143 | (40) |
|
|
|
143 | (2) |
|
|
|
145 | (2) |
|
|
|
147 | (4) |
|
|
|
151 | (3) |
|
|
|
154 | (5) |
|
|
|
159 | (4) |
|
|
|
163 | (7) |
|
|
|
170 | (6) |
|
|
|
176 | (4) |
|
|
|
180 | (3) |
| Chapter 6: Interlude: Simple Messaging |
|
183 | (42) |
|
|
|
183 | (4) |
|
|
|
183 | (2) |
|
Publish-Subscribe Example |
|
|
185 | (2) |
|
JMS Request-Reply Example |
|
|
187 | (11) |
|
|
|
187 | (2) |
|
|
|
189 | (7) |
|
|
|
196 | (1) |
|
|
|
197 | (1) |
|
.NET Request-Reply Example |
|
|
198 | (9) |
|
|
|
198 | (2) |
|
|
|
200 | (5) |
|
|
|
205 | (1) |
|
|
|
206 | (1) |
|
JMS Publish-Subscribe Example |
|
|
207 | (18) |
|
|
|
207 | (1) |
|
|
|
208 | (1) |
|
|
|
209 | (3) |
|
|
|
212 | (1) |
|
|
|
213 | (6) |
|
|
|
219 | (3) |
|
|
|
222 | (3) |
| Chapter 7: Message Routing |
|
225 | (102) |
|
|
|
225 | (5) |
|
|
|
230 | (7) |
|
|
|
237 | (6) |
|
|
|
243 | (6) |
|
|
|
249 | (10) |
|
|
|
259 | (9) |
|
|
|
268 | (15) |
|
|
|
283 | (11) |
|
Composed Message Processor |
|
|
294 | (3) |
|
|
|
297 | (4) |
|
|
|
301 | (11) |
|
|
|
312 | (10) |
|
|
|
322 | (5) |
| Chapter 8: Message Transformation |
|
327 | (34) |
|
|
|
327 | (3) |
|
|
|
330 | (6) |
|
|
|
336 | (6) |
|
|
|
342 | (4) |
|
|
|
346 | (6) |
|
|
|
352 | (3) |
|
|
|
355 | (6) |
| Chapter 9: Interlude: Composed Messaging |
|
361 | (102) |
|
|
|
361 | (10) |
|
|
|
361 | (1) |
|
Designing the Message Flow |
|
|
362 | (2) |
|
Sequencing: Synchronous versus Asynchronous |
|
|
364 | (2) |
|
Addressing: Distribution versus Auction |
|
|
366 | (2) |
|
Aggregating Strategies: Multiple Channels versus Single Channel |
|
|
368 | (1) |
|
|
|
368 | (1) |
|
|
|
369 | (2) |
|
Synchronous Implementation Using Web Services (by Conrad F D'Cruz) |
|
|
371 | (30) |
|
|
|
371 | (1) |
|
Web Services Design Considerations |
|
|
372 | (4) |
|
|
|
376 | (3) |
|
|
|
379 | (1) |
|
The Loan Broker Application |
|
|
379 | (2) |
|
Components of the Loan Broker Application |
|
|
381 | (15) |
|
|
|
396 | (1) |
|
|
|
397 | (2) |
|
|
|
399 | (1) |
|
Limitations of This Example |
|
|
400 | (1) |
|
|
|
400 | (1) |
|
Asynchronous Implementation with MSMQ |
|
|
401 | (44) |
|
|
|
401 | (1) |
|
Laying the Groundwork: A Messaging Gateway |
|
|
402 | (3) |
|
Base Classes for Common Functionality |
|
|
405 | (5) |
|
|
|
410 | (2) |
|
Designing the Credit Bureau |
|
|
412 | (1) |
|
Designing the Loan Broker |
|
|
413 | (18) |
|
Refactoring the Loan Broker |
|
|
431 | (4) |
|
|
|
435 | (1) |
|
|
|
435 | (5) |
|
|
|
440 | (3) |
|
Limitations of This Example |
|
|
443 | (1) |
|
|
|
444 | (1) |
|
Asynchronous Implementation with TIBCO ActiveEnterprise (by Michael J. Rettig) |
|
|
445 | (18) |
|
|
|
445 | (3) |
|
The Implementation Toolset |
|
|
448 | (3) |
|
|
|
451 | (1) |
|
Implementing the Synchronous Services |
|
|
452 | (3) |
|
|
|
455 | (4) |
|
Managing Concurrent Auctions |
|
|
459 | (1) |
|
|
|
460 | (2) |
|
|
|
462 | (1) |
| Chapter 10: Messaging Endpoints |
|
463 | (74) |
|
|
|
463 | (5) |
|
|
|
468 | (9) |
|
|
|
477 | (7) |
|
|
|
484 | (10) |
|
|
|
494 | (4) |
|
|
|
498 | (4) |
|
|
|
502 | (6) |
|
|
|
508 | (7) |
|
|
|
515 | (7) |
|
|
|
522 | (6) |
|
|
|
528 | (4) |
|
|
|
532 | (5) |
| Chapter 11: System Management |
|
537 | (40) |
|
|
|
537 | (3) |
|
|
|
540 | (5) |
|
|
|
545 | (2) |
|
|
|
547 | (4) |
|
|
|
551 | (4) |
|
|
|
555 | (3) |
|
|
|
558 | (11) |
|
|
|
569 | (3) |
|
|
|
572 | (5) |
| Chapter 12: Interlude: System Management Example |
|
577 | (26) |
|
Loan Broker System Management |
|
|
577 | (26) |
|
Instrumenting the Loan Broker |
|
|
578 | (1) |
|
|
|
579 | (1) |
|
Loan Broker Quality of Service |
|
|
579 | (8) |
|
Verify the Credit Bureau Operation |
|
|
587 | (5) |
|
|
|
592 | (3) |
|
Enhancing the Management Console |
|
|
595 | (7) |
|
Limitations of This Example |
|
|
602 | (1) |
| Chapter 13: Integration Patterns in Practice |
|
603 | (22) |
|
Case Study: Bond Pricing System (by Jonathan Simon) |
|
|
603 | (22) |
|
|
|
603 | (1) |
|
Architecture with Patterns |
|
|
604 | (6) |
|
|
|
610 | (4) |
|
Selecting a Message Channel |
|
|
614 | (4) |
|
Problem Solving with Patterns |
|
|
618 | (1) |
|
Flashing Market Data Updates |
|
|
618 | (2) |
|
|
|
620 | (3) |
|
|
|
623 | (2) |
| Chapter 14: Concluding Remarks |
|
625 | (24) |
|
Emerging Standards and Futures in Enterprise Integration (by Sean Neville) |
|
|
625 | (24) |
|
The Relationship between Standards and Design Patterns |
|
|
626 | (1) |
|
Survey of Standards Processes and Organizations |
|
|
627 | (2) |
|
Business Process Components and Intra-web Service Messaging |
|
|
629 | (2) |
|
ebXML and the Electronic Business Messaging Service (ebMS) |
|
|
631 | (3) |
|
Business Process Execution Language for Web Services (BEPL4WS) |
|
|
634 | (2) |
|
Web Service Choreography Interface (WSCI) |
|
|
636 | (1) |
|
Java Business Process Component Standards |
|
|
637 | (2) |
|
|
|
639 | (8) |
|
|
|
647 | (2) |
| Bibliography |
|
649 | (10) |
| Index |
|
659 | |