Tools & Downloads

My ongoing thoughts about the present and future of integration, SOA and Web services. [see all]
25 Years of OOP
How to Scale an Organization? The same way you scale a system!
The Architect’s Penthouse Bookshelf
Dec 1-9, 2016
Sydney, Melbourne, Brisbane
20 Years of Patterns' Impact
(IEEE Software)
Conversations Between Loosely Coupled Services
(Video on InfoQ)
Developing in a Service-oriented World
(Video on InfoQ)
SOA Patterns - New Insights or Recycled Knowledge?
Let's Have a Conversation
(IEEE Internet Computing)
Programming Without a Call Stack - Event-driven Architectures
(ObjektSpektrum, 2006)
Your Coffee Shop Does Not Use Two-Phase Commit
(IEEE Software)
Developing in a Service-Oriented World
(ThoughtWorks Whitepaper)
Integration Patterns with BizTalk Server 2004
(ThoughtWorks Whitepaper)
An Asynchronous World
(Software Development)
Test-Driven Development in Integration Projects
(ThoughtWorks Whitepaper)
XML Abuse
(Software Development)
"Starbucks Does Not Use Two-Phase Commit" selected for "The Best Software Writing"
Nearfield Communication (NFC) in Japan
(OOP 2012)
Embedded OSS
(OOP 2012)
Distributed Programming the Google Way
(Devoxx 2009)
Developing in a Service-Oriented World
(SOACon 2007)
Programming without a Call Stack: Event-driven Architectures
(SOACon 2007)
Software Visualization and Model Extraction
Conversations Between Loosely Coupled Systems
(SD West, 2006)
Enterprise Integration Patterns
(JAOO, 2003)
Microsoft MVP
IEEE Software Board Member
Visio and Omnigraffle Stencil
Matthew Oskowis (contact) created a Visio stencil that contains 51 integration pattern icons as Visio shapes. Each shape includes the solution text for the corresponding pattern. This stencil is invaluable when drawing out solutions based on the notation defined in the book. The stencil is available in Visio 2002 and a Visio 5 versions. If soneone if willing to port these to a newer version of visio, let me know.
Gunnar Peterson created a stencil for Omnigraffle. According to the site it has over 18000 downloads!
Articles and Presentations
You can download most of my articles from the Articles page and many of my presentations from the Talks page. You may also want to check out my blog.
Sample Chapter
Pearson has generously made the Introduction, Chapter 2 ("Integration Styles") and Chapter 3 ("Messaging Systems") of our book available for download. If you like what you see, please consider buying the book.
Chapter 2: "Integration Styles" PDF Download from Pearson Education (1073 KB)
Chapter 3: "Messaging Systems" PDF (614 KB)
On-line Resources
Workflow Patterns, Wil van der Aalst, Arthur ter Hofstede, Marlon Dumas
An extensive collection of workflow patterns from multiple perspectives: control-flow, data, resource, and exception handling. Wil also wrote a good book on Workflow Management and one on Process Mining.

Service Interaction Patterns, Alistair Barros, Marlon Dumas, Arthur ter Hofstede
A collection of basic interaction patterns.

Bobby and Kyle's original paper workshopped at PLoP 2002 and subsequently merged with my paper to become the nucleus of Enterprise Integration Patterns.

Stylized Architecture, Design Patterns, and Objects, Monroe, Kompanek, Melton, Garlan
A Note on Distributed Computing Samuel C. Kendall, Jim Waldo, Ann Wollrath and Geoff Wyant, 1994
10 years ago Waldo et al. already reminded us why attempting to make distribution transparent to developers is a bad idea. I wish more Web services architects read this paper.

A more formal approach to describing integration solutions, implemented as a UML profile. While it uses some of the same vocabulary as our patterns the focus is on a formal specification language whereas our patterns provide guidance about proper usage and trade-offs.

Communicating Sequential Processes, C. A. R. Hoare, Communications of the ACM , 1978
Still one of the best concurrency models, which for example inspired the Go Language. ACM on-line library access is required to see the full-text version of this article.
Simple Messaging Toolkit
For my ACM Middleware and OOPSLA tutorials I used a messaging toolkit that implements many of the basic patterns in our book. The toolkit allows users to compose solutions from the basic patterns and observe them in action. I developed the toolkit in C#, mostly because I am more familiar with the .NET user interface libraries. The kit is likely not 100% robust yet, but I am looking for feedback on the usefulness of the concept. The individual components can be run directly from the DOS command line or from a batch script. These scripts have a very nice, Domain-specific language feel to them.
These example implementations of the patterns are not the patterns, but only a consistent example pattern implementations. Patterns comprise intent, forces, context etc. and are generally technology independent. For this toolkit I chose a specific implementation technology and created a collection of examples of the patterns. Read [more on the relationship between the toolkit and the patterns]
Quickstart: download_notes
1) Extract the ZIP file, preserving the folder structure.
2) Make sure your Windows Message Queuing service is active (see reference Sheet for details).
3) Run "Exercise1a.bat" from the "Exercises" folder.
4) Select values from the drop-down lists in the Customer window and click ' Send Order'.
5) Follow the Tutorial Presentation for more complex examples and exercises.
Microsoft Windows XP or 2003
Microsoft .NET Framework 2.0
Microsoft Message Queuing (part of Windows)
Loan Broker MSMQ Example from Chapter 9
Multiple readers have asked for the complete source for the Loan Broker example from Chapter 9. While the examples in the book are primarily intended to illustrate design trade-offs, a running example can be a useful learning tool. The ZIP file contains the complete Visual Studio solution. It should also load in newer versions of .Net and Visual Studio. It is also possible to compile the individual projects from the command line and avoid the need for Visual Studio.
Microsoft Windows XP or 2003
Microsoft .NET Framework 1.1
Microsoft Visual Studio .NET 2003